如何将编辑后的像素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
相关产品推荐
相关产品推荐

