私は私のCarrierWaveアップローダに次のことをやってプログレッシブJPEGに画像を符号化することができます:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process :optimize #For the real image
version :version_1 do
# other processes
process :optimize
end
version :version_2, from_version: :version_1 do
# other processes
process :optimize
end
version :version_3, from_version: :version_2 do
# other processes
process :optimize
end
def optimize
manipulate! do |img|
img.combine_options do |c|
c.strip
c.quality '100'
c.depth '8'
c.interlace 'Line'
end
img
end
end
end
あなたはそれ以外の場合は変換されませんプログレッシブJPEGに画像を変換プロセスを最後に置く必要があります。
あなたがすでにいくつかの画像をアップロードしていて、それらを「再作成」したい場合。
class Picture < ActiveRecord::Base
mount_uploader :image, ImageUploader
end
ですから、バージョンを再作成するために次の操作を実行する必要があります:
Picture.order("id ASC").each do |p|
p.image.recreate_versions!
puts "#{p.id}, #{p.image.url}"
end
私はそれが途中で失敗したのであればIDに基づいて画像を命じ は、あなたのモデルがあることを想像してみて私はIDを持っており、そのIDから続けることができます。最後に
errored = []
Picture.order("id ASC").each do |p|
begin
p.image.recreate_versions!
rescue => e
errored << p.id
end
puts "#{p.id}, #{p.image.url}"
end
、画像がImageMagickのがインストールされ、プログレッシブJPEGに変換されたことを確認するために、タイプ:あなたがすることができるもう一つは、任意の例外を救出し、配列に失敗した画像を保存、このようなものですターミナルで次のよう
identify -verbose PATH_TO_IMAGE | grep Interlace
画像はプログレッシブJPEGの場合、出力はInterlace: JPEG
、そうでない場合はInterlace: None
になりますが、その後RMagickでのみ可能このですか? – Agustin
上記の解決策はあります。私は他の画像編集ライブラリで試してみませんでしたが、そのような方法のサポートを探してみることができます。 –