如何在Go lang中创建优化和渐进的图像(JPG,PNG)

时间:2017-03-17 13:19:27

标签: go imagemagick imagick go-imagick

我在Go中使用以下代码来调整JPEG和PNG格式的图像大小。那么,如何使用Imagick将它们转换为渐进式并进行优化。我在ImageMagick 6.9.3-8 Q16 x86_64

上使用ubuntu 14.04

我说优化的原因是我使用以下命令来测试图像大小是否减少。但是,它会增加输出文件的大小。

命令:

convert -strip -interlace Plane input-file.jpg output-file.jpg

转码:

        size = fmt.Sprintf("%dx%d^+0+0", w, h)
        tx := mw.TransformImage("", size)
        tx.SetImageGravity(imagick.GRAVITY_CENTER)
        offsetX := -(int(w) - int(tx.GetImageWidth())) / 2
        offsetY := -(int(h) - int(tx.GetImageHeight())) / 2
        err := tx.ExtentImage(w, h, offsetX, offsetY)

2 个答案:

答案 0 :(得分:3)

您的转换命令行会剥离图像并为其提供平面隔行扫描方案。等效的Go代码应该调用mw.StripImage()和mw.SetImageInterlaceScheme(INTERLACE_PLANE)。

[edit]您是否尝试关注this example?如果是这样,-interlace Plane负责使图像渐进,但这并不会使它变得更小。执行该操作的部分是-quality 80,您可以通过调用mw.SetImageCompressionQuality(80)在Go中实现。

答案 1 :(得分:0)

使用ResizeImage代替

tx.ResizeImage(w, h, imagick.FILTER_LANCZOS, 1)

请参阅resizing example