1

Carrierwave と RMagick を使用して、Rails アプリケーションに画像をアップロードしています。私はそのimage_uploaderようなものを持っています:

class ImageUploader < CarrierWave::Uploader::Base

  # ... Other stuff ...
  process :convert => 'png'

  def filename
    super.chomp(File.extname(super)) + '.png'
  end

  # ...

  version :resized_image do
    process :resize_and_pad => [X, Y]
  end

  # ...
end

私の問題は、png 画像をアップロードすると、resize_and_pad指定された寸法に合わせて透明な背景が追加されることです。しかし、jpg 画像をアップロードすると、png に変換されますが、背景は白で透明ではありません。

それで、この問題の解決策はありますか?サイズ変更された画像に透明な背景を追加するconvert前にメソッドが呼び出されていることを確認する方法はありますか?resize_and_pad

編集

問題を明確にするために例を挙げます。

アップロードする JPG は通常の画像で、たとえば 300px × 300px です。私のresize_and_pad方法では、画像を 300px × 400px にパディングします。パディングしたい100pxは透明でなければなりませんが、JPGは透明な背景を持つことができないため、resize_and_pad. 私の問題は、最終結果が透明な背景ではなく白い背景の画像になることです。

4

1 に答える 1

-1

JPGファイルは透明度をサポートしていません。JPEG画像に白い背景が表示される場合、それは白で塗りつぶされているためです。したがって、アップローダーがJPEG画像を処理するときに、白い背景を忠実に変換します。

于 2013-03-13T14:58:12.437 に答える