【问题标题】:JPG to PNG using RMagick使用 RMagick 将 JPG 转为 PNG
【发布时间】:2011-09-19 03:34:47
【问题描述】:

我正在尝试使用 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 中打开。我错过了什么吗?

【问题讨论】:

    标签: ruby-on-rails ruby imagemagick rmagick


    【解决方案1】:

    尝试显式设置格式:

    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)
      

      希望对您有所帮助。

      【讨论】:

      • 他们一定是把 API 改回来了:从 rmagick 4.2.2 开始,thumb.format = ... 再次工作,thumb.format(...) 不再工作。对于那些使用旧版本 rmagick 的人来说,这仍然是一个有用的答案。”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2011-06-07
      • 2012-01-25
      • 2012-06-01
      • 1970-01-01
      • 2015-10-06
      • 2018-12-15
      相关资源
      最近更新 更多