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

如何将编辑后的像素RGB值列表转换为图像并保存?

问题描述

用户已编写代码使用PIL获取图像的RGB像素值列表,代码如下:

from PIL import Image

def get_image(image_path):
    image = Image.open(image_path).convert("L")
    image_rgb = image.convert("RGB")
    pixel_values = list(image_rgb.getdata())

    return pixel_values
print(get_image('./test.png'))

代码返回的像素值格式为:

[(r,g,b), (r,g,b), (r,g,b)] 
#^ 这是由三个像素组成的图像的返回示例

注意:所有像素值都存储在list(image.getdata())列表中。

用户需将修改后的RGB值列表转换为图像并保存到文件。

解决方案

要实现需求,需保留原图像的尺寸信息,再用修改后的像素列表创建新图像并保存,完整代码示例如下:

from PIL import Image

def get_image_and_size(image_path):
    # 沿用原逻辑打开并转换图像
    image = Image.open(image_path).convert("L").convert("RGB")
    pixel_values = list(image.getdata())
    # 同时返回像素列表和图像尺寸
    return pixel_values, image.size

# 示例使用流程
if __name__ == "__main__":
    # 获取原图像的像素数据与尺寸
    pixels, img_size = get_image_and_size('./test.png')
    
    # 模拟像素修改逻辑(示例:将第一个像素改为红色)
    if pixels:
        pixels[0] = (255, 0, 0)
    
    # 创建新的RGB图像,尺寸与原图像一致
    new_image = Image.new("RGB", img_size)
    # 将修改后的像素数据写入新图像
    new_image.putdata(pixels)
    # 保存修改后的图像
    new_image.save('./modified_test.png')
关键说明
  • 必须保留原图像尺寸,putdata()方法依赖宽高信息才能正确排列像素
  • Image.new()的模式需与像素格式匹配,这里用"RGB"模式对应(r,g,b)元组
  • 修改像素时,确保每个元组的三个值都在0-255的合法范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:45:47