【问题标题】:How to save RMagick processed image using Paperclip without writing to a file如何使用回形针保存 RMagick 处理的图像而不写入文件
【发布时间】:2015-05-13 20:45:41
【问题描述】:

我一直在尝试使用回形针将文件(RMagick 处理的输出)上传到 s3。我不断收到错误

找不到处理程序 http://upload.wikimedia.org/wikipedia/commons/thumb/4/48/EBay_logo.png/800px-EBay_logo.png=>800px-EBay_logo.png PNG 800x349 800x349+0+0 DirectClass 8 位 37kb

基本上,在我的系统中 - 用户使用外部 url 上传徽标,我处理徽标并修剪空白并上传到我的 s3 系统。我一直使用临时文件作为中间人,但我想直接做:

在我的模型中,我这样做:

  def fetch_and_trim_logo
    puts "logo is #{logo}"
        if logo_changed?
         response = RestClient.get logo
         if  response.code == 200
            img = Magick::Image::read(logo)[0]
            puts "This image is #{img.columns}x#{img.rows} pixels"
            trimmed_img = img.trim
            puts "Trimmed image is #{trimmed_img.columns}x#{trimmed_img.rows} pixels"
            temp_file = Tempfile.new(["trimmed_image",".png"])
            trimmed_img.write("png:" + temp_file.path)
            my_asset = visitor.user.my_assets.new
            my_asset.uploaded_file = temp_file
            my_asset.save
         end
        end
  end

我的 My_asset 模型具有所有回形针设置,如下所示:

Class MyAsset<ActiveRecord::Base
---
---

has_attached_file :uploaded_file

  attr_accessible :uploaded_file
  validates_attachment_size :uploaded_file, :less_than=>5.megabyte
  has_attached_file :picture,
    :styles => { :thumb => "300x300#" },
    :default_url => "//#{ENV['CLOUDFRONT_URL']}/assets/picture_missing.png"
end

这个方法有效!但是当我改变时

    my_asset = visitor.user.my_assets.new
    my_asset.uploaded_file = temp_file 
    my_asset.save

    my_asset = visitor.user.my_assets.new
    my_asset.uploaded_file = trimmed_img
    my_asset.save

其中 trimmed_img 是 RMagick 处理的输出,我得到错误“No Handler found”

任何想法如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails amazon-s3 paperclip rmagick


    【解决方案1】:

    好的,解决方法是先将 Magic image 对象更改为 File 对象,然后再将其上传到 Paperlip

    所以,

    processed_image = StringIO.open(trimmed_img.to_blob)
    

    然后直接用回形针上传处理后的图片

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      相关资源
      最近更新 更多