RMAGICK: изменение размера и изменение типа файла изображений (на лету) ... Ошибка заголовка изображения - PullRequest
0 голосов
/ 08 марта 2010

это про RMagick с Ruby On Rails.

Я делаю следующее:

  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

Мне действительно нужно сначала сохранить, а затем изменить его? А как насчет изменения не только размера, но и типа файла? Я хочу JPG с качеством 60%.

Что означает эта ошибка?

Magick::ImageMagickError (Improper image header `public/images/avatars/Joern/83201018458ich2_kleiner.png'):

Пожалуйста, помогите мне.

С уважением, Йорн.

1 Ответ

0 голосов
/ 08 марта 2010

для всех, кто заинтересован, это решение:

  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
...