views:

154

answers:

1

Hi,

it's about RMagick with Ruby On Rails.

I do the following:

  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

Do I really need to first save and then change it? And how about changing not only the size, changing also the Filetype? I want a JPG with 60% quality.

What does this error mean?

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

Please help me.

Yours, Joern.

A: 

for anyone interested, this is the solution:

  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
Joern Akkermann