关于Ruby On Rails的RMagick。
我执行以下操作:
image = params[:image]
# params[:image] is the image from the file-form.
name = image.original_filename.scan(/[^\/\\]+/).last
name = dir + t.day.to_s + t.month.to_s + t.year.to_s + t.hour.to_s + t.min.to_s + t.sec.to_s + name
f = File.new(name, "wb")
f.write image
f.close
image = Magick::Image.read(name)
image = image.resize_to_fit(200, 250)
f = File.new(name, "wb")
f.write image.to_blob
f.close
我真的需要先保存然后更改吗? 那么不仅要改变大小,还要改变Filetype呢?我想要一个60%质量的JPG。
这个错误是什么意思?
Magick::ImageMagickError (Improper image header `public/images/avatars/Joern/83201018458ich2_kleiner.png'):
请帮帮我。
此致, Joern。
答案 0 :(得分:0)
对于任何感兴趣的人,这是解决方案:
t = Time.now
if !File.directory?(dir = "public/images/avatars/#{self.current_user.login}/")
Dir.mkdir(dir)
end
image = params[:image]
basename = t.day.to_s + t.month.to_s + t.year.to_s + t.hour.to_s + t.min.to_s + t.sec.to_s + ".jpg"
name = dir + basename
image = Magick::Image.from_blob(image.read).last
image = image.resize_to_fit(200, 250)
image.write(name) do self.quality = 60 end
picture = Picture.new
picture.path = "avatars/" + self.current_user.login + "/" + basename
picture.user_id = self.current_user.id
picture.save
redirect_to :action => :show, :id => picture.id