我想尝试对文件的一些简单的操作,我开始与打开和保存文件(我使用Python)
image = cv2.imread("image.png")
cv2.imwrite("image_processed.png", image)
此操作后,我原来的image
从33KB转换成同一找144KB的图像。
我试图做这样的事情: http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite
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)
这是我与工作的形象:
有些PNG作家如GIMP写比标准的libpng,用于通过OpenCV的更好的压缩PNG格式。 您也可以打开和处理的ImageMagick再次保存图像,并看到能起到什么作用(相对于OpenCV的)。
甚至有试图更好地重新压缩PNG图片,就像pngcrush专门的软件。
你能否提供有问题的形象? 我想用它玩,有关文件大小的优化。
作为暗示由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
半有关,但我有同样的问题matplotlib.image.imsave
-这将8位灰度图像保存为16位,其激增的大小,即使使用后scipy.misc.bytescale
,以确保它是一个8位阵列。 然而, scipy.misc.imsave
正确保存它作为一个8位图像。
您可以使用第三方的命令行工具,使用OptiPNG重新压缩和收缩的PNG文件的大小没有失去任何东西。
参考:
http://optipng.sourceforge.net/pngtech/optipng.html
https://github.com/johnpaulada/optipng