我想对文件进行一些简单的操作,我开始打开并保存文件(我使用Python)
image = cv2.imread("image.png")
cv2.imwrite("image_processed.png", image)
在此操作之后,我从33kB的原始image
转换为相同的144kB图像。
params = list()
params.append(cv.CV_IMWRITE_PNG_COMPRESSION)
params.append(8)
image = cv2.imread("image.png")
cv2.imwrite("image_processed.png",image,params)
但这并没有太大变化(尺寸减少到132kB)
这是我正在使用的图片:
答案 0 :(得分:6)
像GIMP这样的png编写者编写的压缩PNG要比opencv使用的标准libpng好得多。您还可以使用Imagemagick再次打开并保存图像,并查看它与(与OpenCV相比)产生的差异。
甚至还有专门的软件试图更好地重新压缩PNG,比如pngcrush。
您能提供相关图片吗?关于文件大小优化,我想玩它。
答案 1 :(得分:5)
正如ypnos所暗示,你的源文件是jpg(即使它有png扩展名)。这就是为什么当你以png格式保存时,它将使用更多空间,因为你正在改变格式(jpg到png)。
尝试用:
替换最后一行cv2.imwrite("image_processed.jpg",image,params)
你会发现尺寸并没有那么大的变化。
或者,保持代码不变,但使用其他图像,例如http://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png
答案 2 :(得分:1)
半相关,但我遇到与matplotlib.image.imsave
相同的问题 - 它会将8位灰度图像保存为16位,即使在使用scipy.misc.bytescale
确保之后也会大小增加它是一个8位数组。但是,scipy.misc.imsave
将其正确保存为8位图像。
答案 3 :(得分:0)
您可以使用第三方命令行工具optipng重新压缩和缩小png文件的大小,而不会丢失任何内容。
参考: