1

Paperclip、ImagMagick、Rmagick、Amazon-s3 を使用しています

URL から画像を取得するときにこのエラーが発生し、画像のサイズを変更して変更した画像を amazon に置き換えた後です。

Magick::ImageMagickError (この画像形式のエンコード デリゲートはありません//s3.amazonaws.com/beu-dev/temp_images/final_images/000/000/377/original/template_37720121205-5921-99989h.png' @ error/constitute.c/WriteImage/1153): app/models/temp_image.rb:38:inwrite' 行番号 38 は、このメソッドの終了前の最後の行です

def reprocess_final_image
    image_file_url = self.final_image.url(:original).split('?')[0]
    thumb = Magick::Image.read(image_file_url).first
    thumb.format = "PNG"
    thumb.crop_resized!(240,200, Magick::NorthWestGravity)
    **thumb.write(image_file_url)** ***Line#38***
  end

注: もう 1 つこのコードは、システム ファイル システムを使用する場合は完全に機能しますが、Amazon s3 を使用して開始するとエラーが発生します。

4

2 に答える 2

0

URL の代わりにローカル ファイル名を使用する必要があると思います。Imagemagick は、http 経由でファイルを URL に書き込むことはできません。ソース ファイルを置き換えるには、Amazon S3 API を使用する必要があります。

thumb.crop_resized!(240,200, Magick::NorthWestGravity)
thumb.write(local_temp_file_name)

# abstract Amazon S3 API. Use your favorite API
S3Object.store(local_temp_file_name, open(local_temp_file_name)) 
于 2012-12-05T15:18:38.803 に答える