【发布时间】:2012-09-07 17:55:46
【问题描述】:
我想编写一个读取 .jpg 图片的 python 代码,更改其中的一些 RBG 组件并再次保存,而不更改图片大小。
我尝试使用 OpenCV 和 PyGame 加载图片,但是,当我尝试使用三个不同函数的简单加载/保存代码时,生成的图像比初始图像大。这是我使用的代码。
>>> import cv, pygame # Importing OpenCV & PyGame libraries.
>>> image_opencv = cv.LoadImage('lena.jpg')
>>> image_opencv_matrix = cv.LoadImageM('lena.jpg')
>>> image_pygame = pygame.image.load('lena.jpg')
>>> cv.SaveImage('lena_opencv.jpg', image_opencv)
>>> cv.SaveImage('lena_opencv_matrix.jpg', image_opencv_matrix)
>>> pygame.image.save(image_pygame, 'lena_pygame.jpg')
原始大小为 48.3K,结果为 75.5K、75.5K、49.9K。
所以,尽管我只进行了加载/保存,但我不确定我是否遗漏了使图片原始大小发生变化的东西?
还有比 OpenCV 或 PyGame 更好的库吗?!
【问题讨论】:
-
您可能想尝试另存为LenPEG ;)
-
@mgilson 您可以进行的编辑类别将大大缩小。
-
@JoshLee -- 这是一个公平的观点(但图像大小将保持不变)...
-
如果您正在修改每像素,您可能更喜欢使用 .png 格式,它是无损的,而 jpg 是有损的。好奇为什么要求文件大小保持不变?
-
我要保证每个像素的数量和值在压缩/解压阶段保持不变。