使用RMagick将JPG转换为PNG

6

我正在尝试使用RMagick将获取的JPG格式图片转换为PNG格式,然后调整其大小并存储到S3上:

thumb = Magick::Image.read("artist.jpg").first
thumb.write("artist.png")
thumb.crop_resized!(120, 120, Magick::CenterGravity)

AWS::S3::S3Object.store("image.png", thumb.to_blob, AWS_BUCKET, :content_type => 'image/png', :access => :public_read)

图像确实被保存为PNG格式,但是当我在预览中打开它时,文档类型仍然显示为“JPEG图像”。事实上,除非我将扩展名改回“.jpg”,否则该图像甚至无法在Photoshop中打开。我有什么遗漏吗?
2个回答

14

尝试显式设置格式:

thumb = Magick::Image.read("artist.jpg").first
thumb.format = "PNG"
thumb.write("artist.png")
thumb.crop_resized!(120, 120, Magick::CenterGravity)

AWS::S3::S3Object.store("image.png", thumb.to_blob, AWS_BUCKET, :content_type => 'image/png', :access => :public_read)

2

对我来说,执行 thumb.format = "PNG" 没有起作用,但执行 thumb.format('png') 可以。这很可能是由于过去几年中的更改所致。

thumb = Magick::Image.read("artist.jpg").first
thumb.format("png")
thumb.crop_resized!(120, 120, Magick::CenterGravity)
AWS::S3::S3Object.store("image.png", thumb.to_blob, AWS_BUCKET, :content_type => 'image/png', :access => :public_read)

希望这有所帮助。

1
他们一定改回了API:自从rmagick 4.2.2版本开始,“thumb.format = ...” 再次起作用,“thumb.format(...)”不再起作用。尽管如此,对于使用旧版rmagick的人来说,这仍然是一个有用的答案。 - Wayne Conrad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接