RMAGICK:调整大小和更改图片的文件类型(动态)...不正确的图像标题错误

时间:2010-03-08 17:49:51

标签: ruby-on-rails rmagick

关于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。

1 个答案:

答案 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