英文:
How to create optimised and progressive Images (JPG, PNG) in Go lang
问题
我正在使用以下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
Go代码:
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)
英文:
I am using the following code in Go to resize my images in JPEG and PNG format. So, how do I convert them to progressive and optimized using Imagick. I'm using ImageMagick 6.9.3-8 Q16 x86_64
on ubuntu 14.04
I am saying optimized reason being I used the following command to test whether image size gets reduced or not. But, it increases the output file size.
Command :
convert -strip -interlace Plane input-file.jpg output-file.jpg
Go code :
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)
答案1
得分: 3
您的convert命令行会剥离图像并给它一个平面交错方案。等效的Go代码应该调用mw.StripImage()和mw.SetImageInterlaceScheme(INTERLACE_PLANE)。
[编辑] 您是在尝试遵循这个示例吗?如果是这样,-interlace Plane 负责使图像渐进,但这并不会使它变小。实现这一点的部分是 -quality 80,您可以通过调用mw.SetImageCompressionQuality(80)在Go中实现。
英文:
Your convert command line strips the image and gives it a planar interlace scheme. An equivalent Go code should call mw.StripImage() and mw.SetImageInterlaceScheme(INTERLACE_PLANE).
[edit] Are you trying to follow this example ? If so, -interlace Plane is responsible for making the image progressive, but this doesn’t make it any smaller. The part that does that is -quality 80, which you can implement in Go by calling mw.SetImageCompressionQuality(80).
答案2
得分: 0
使用ResizeImage
代替
tx.ResizeImage(w, h, imagick.FILTER_LANCZOS, 1)
参考调整大小示例
英文:
Use ResizeImage
instead
tx.ResizeImage(w, h, imagick.FILTER_LANCZOS, 1)
See the resizing example
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论