7
私は画像のURLを取得し、Amazon S3ストレージにそれのサイズ変更されたバージョンをアップロードする簡単なコードを書いた。コードは次のようになります。Rails 3、ペーパークリップとアップロード画像をリモートURLから
attr_accessor :profile_image_url
has_attached_file :avatar,
:default_url => "/system/avatars/:style_default.png",
:styles => {
:original => "128x128#",
:thumb => "48x48#"
},
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => "/avatars/:id/:style.:extension"
before_validation :download_profile_pic
...
def download_profile_pic
begin
io = open(URI.parse(self.profile_image_url))
def io.original_filename; base_uri.path.split('/').last; end
self.avatar = io.original_filename.blank? ? nil : io
rescue Timeout::Error
self.avatar = nil
rescue OpenURI::Error => e
self.avatar = nil
end
end
画像は非常に低い品質でアップロードされます。何が問題なのでしょうか?
オリジナルの画像は「128x128」pxになります。これはあなたの意図ですか?低品質を圧縮率で定義しますか? – andrea
これは正しいです - 私の元の画像の寸法は "128x128"で、これは次のようにして品質を定義しようとしました:style => {:thumb => {:quality => 100、...}}同じ結果 – spacemonkey
ねえ、これは素晴らしいです!私は、あなたが 'def io.original_filename; base_uri.path.split( '/')。最後に;最後の行は少しですか?ここに関数を宣言していますか?セミコロンは何のためですか? – TenJack