gpt4 book ai didi

python - 使用 PIL 将以不同像素保存的复制图像复制到原始图像

转载 作者:太空宇宙 更新时间:2023-11-04 00:04:32 24 4
gpt4 key购买 nike

我需要制作一个图像的副本来操作它,但是保存原始图像和打开复制的图像似乎在它们的像素值上有所不同:

from PIL import Image

# Open original image
img = Image.open("mountain.jpg")
data = img.load()

# Display individual pixels
print("Pixel 1: {}".format(data[0,0]))
print("Pixel 2: {}".format(data[0,1]))
print("Pixel 3: {}".format(data[0,2]))

# Makes a copy of the input image and loads the copied image's pixel map
copyImage = img.copy()

copyImage.save('copy.jpg')
copyImage.close()

# Opens the copied image that was saved earlier and its pixel map
copy = Image.open("copy.jpg")
copy_data = copy.load()

print()

# Display copied images' individual pixels
print("Pixel 1 (copy): {}".format(copy_data[0,0]))
print("Pixel 2 (copy): {}".format(copy_data[0,1]))
print("Pixel 3 (copy): {}".format(copy_data[0,2]))

copy.close()

这输出为:

Pixel 1: (72, 102, 112)
Pixel 2: (75, 105, 115)
Pixel 3: (71, 101, 111)

Pixel 1 (copy): (70, 100, 110)
Pixel 2 (copy): (77, 107, 117)
Pixel 3 (copy): (74, 104, 114)

最初,我认为 PIL 可能会将每个 R、G 和 B channel 的所有像素值更改 2 个值(从前两个像素可以看出),但是第三个像素更改了 3 个值到每个 channel 。

如果复制图像的起始像素与原始图像相同,我如何制作图像的可靠副本以更改其像素?

注意:我尝试了除“mountain.jpg”以外的其他图片,但似乎都导致了同样的问题。

最佳答案

*.jpgcompressed image format .通过再次保存 jpg,您可以为 jpg 编写器使用不同的默认质量所以得到的像素值不同。

参见 image file format params for jpg对于可以传递给 image.save()quality 参数

quality
The image quality, on a scale from 1 (worst) to 95 (best). The default is 75. Values above 95 should be avoided; 100 disables portions of the JPEG compression algorithm, and results in large files with hardly any gain in image quality.

要么

相关:

关于python - 使用 PIL 将以不同像素保存的复制图像复制到原始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com