You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将图片分割为60个均等垂直条带并获取各条带平均Hex颜色?

实现图片分割为60个垂直条带并提取平均十六进制颜色

完全可以实现这个需求,核心逻辑是按宽度均分图片为垂直条带,逐个计算每个条带的RGB颜色平均值,再转换为十六进制格式。下面以Python的Pillow库为例给出具体实现方案:

步骤说明

  1. 计算每个垂直条带的基础宽度,处理宽度无法被60整除的边界情况
  2. 逐个截取对应区域的图片条带
  3. 统计条带内所有像素的RGB总和,计算平均值
  4. 将RGB平均值转换为标准十六进制颜色码

代码实现

首先安装依赖库:

pip install pillow

然后编写处理脚本:

from PIL import Image

def extract_strip_avg_hex(image_path, strip_num=60):
    # 打开图片并转为RGB模式(兼容带Alpha通道的图片)
    img = Image.open(image_path).convert("RGB")
    img_width, img_height = img.size
    
    # 计算单条带基础宽度与剩余像素
    base_width = img_width // strip_num
    extra_pixels = img_width % strip_num
    
    strip_colors = []
    
    for i in range(strip_num):
        # 确定当前条带的左右边界
        left = i * base_width
        # 最后一个条带包含所有剩余像素,保证总宽度匹配原图
        right = left + base_width + (extra_pixels if i == strip_num - 1 else 0)
        
        # 裁剪出当前垂直条带
        strip = img.crop((left, 0, right, img_height))
        pixels = strip.getdata()
        
        # 计算RGB平均值
        total_r, total_g, total_b = 0, 0, 0
        pixel_count = len(pixels)
        
        for r, g, b in pixels:
            total_r += r
            total_g += g
            total_b += b
        
        avg_r = total_r // pixel_count
        avg_g = total_g // pixel_count
        avg_b = total_b // pixel_count
        
        # 转换为十六进制颜色(补零确保两位格式)
        hex_color = f"#{avg_r:02x}{avg_g:02x}{avg_b:02x}"
        strip_colors.append(hex_color)
    
    return strip_colors

# 示例调用(替换为你的图片路径)
if __name__ == "__main__":
    result = extract_strip_avg_hex("rainbow.png")
    for index, color in enumerate(result, start=1):
        print(f"第{index}个条带平均颜色: {color}")

细节补充

  • 如果需要更精确的平均值,可以将整数除法改为浮点运算后四舍五入(如avg_r = round(total_r / pixel_count))
  • 若处理大尺寸图片,可改用numpy批量计算像素值,提升运行效率
  • 可直接传入已打开的Image对象,替代文件路径参数

内容的提问来源于stack exchange,提问作者Dominik Roszkowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 10:42:36