1

我在 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)
4

2 回答 2

3

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

[编辑] 你想效仿这个例子吗?如果是这样, -interlace Plane 负责使图像渐进,但这不会使其更小。执行此操作的部分是 -quality 80,您可以通过调用 mw.SetImageCompressionQuality(80) 在 Go 中实现它。

于 2017-03-17T14:27:34.280 回答
0

ResizeImage改为使用

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

请参阅调整大小示例

于 2017-03-17T14:26:07.257 回答