gpt4 book ai didi

ruby-on-rails - 如何使用回形针保存 RMagick 处理的图像而不写入文件

转载 作者:行者123 更新时间:2023-12-05 00:59:48 25 4
gpt4 key购买 nike

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

No handler found for 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-bit 37kb



基本上,在我的系统中 - 用户使用外部 url 上传 Logo ,我处理 Logo 并修剪空白并上传到我的 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 处理的输出,我收到错误“未找到处理程序”

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

最佳答案

好的,解决方案是在将 Magic image 对象上传到 Paperlip 之前将其更改为 File 对象

所以,

processed_image = StringIO.open(trimmed_img.to_blob)

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

关于ruby-on-rails - 如何使用回形针保存 RMagick 处理的图像而不写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com