carrierwaveを使用して画像の寸法を取得しようとしていますが、自分自身のコードで寸法を取得しようとしています。after_save
またはafter commit
、私はこのエラーを取得する:fastwaveを使用して搬送波でアップロードされた画像の実際の寸法を取得
wrong number of arguments (1 for 0)
Extracted source (around line #45):
# [String] contents of the file
#
def read
file.read if file.respond_to?(:read)
end
carrierwave (0.11.2) lib/carrierwave/uploader/proxy.rb:45:in `read'
fastimage (2.1.0) lib/fastimage.rb:343:in `block in fetch_using_read'
モデルでは、これが私のシステム上の単なるローカルファイルであり、この
class Micropost < ApplicationRecord
after_save :change_picture_dimensions
mount_uploader :picture, PictureUploader
def change_picture_dimensions
if :picture?
widthheight = FastImage.size(picture)
if widthheight[0] >= 501
newheightratio = widthheight[1].to_f/widthheight[0].to_f
newheight = newheightratio * 500
self.picture = "<img src=\"" + picture.to_s + "\" width=\"500\" height=\"" + newheight.to_s + "\">"
else
self.picture = "<img src=\"" + picture.to_s + "\" width=\"" + widthheight[0].to_s + "\" height=\"" + widthheight[1].to_s + "\">"
end
end
end
ようになります。私はminimagick hereを使用して寸法を得ることができますが、carrierwaveのプロセスについて詳しく知りたいのですが、私の方法を使ってこのエラーの原因を調べることができないのはなぜですか?私の方法では、アスペクト比を維持するために比を使用していますが、どの画像に対してもdivの固定幅に収まるだけです。
EDIT:私はオブジェクトが保存される前にそれを行う必要があることを認識しましたが、before_createであっても同じエラーが発生します。
この場合、変数 'picture'は何ですか? –
画像は.jpg自分のフィールドからローカルファイルシステムを受信しています。私が抱えている問題は、Fastimageが別のサーバーからURLの次元を取得することができ、ローカルに保存されたファイルからそれらを取り出すことができると確信していますが、それにアクセスする方法を知っている。 –