私はPillow、Django、およびdjango-imagekitと作業しています。イメージを特定のファイルサイズに変換するにはどうすればよいですか?
画像を取得し、JPEGに変換し、150x150にトリミングし、ファイルサイズを5KBにするプロファイル画像モデルフィールド(画像キットのProcessedImageField
クラスを使用している可能性があります)が必要です。
profile_picture = imagekit.models.ProcessedImageField(upload_to=get_profile_picture_file_path,
format='JPEG',
processors=[ResizeToFill(height=150, width=150)]
)
しかし、どのように私は、ファイルサイズが5キロバイトであることを確認することができます
最初の二つは簡単ですか?私はProcessedImageField
のoptions={'quality': 60}
パラメータのようなものを使うことができましたが、それは私の知る限り、元のファイルサイズとの相対的な関係にあるようです。
解決策はdjango-imagekitを使用する必要はありませんが、それが望ましいでしょう。
これは、ファイルが大きすぎることを確認することで良いスタートですが、do_something_further_image_processing_to_decrease_size' '内のロジックは本当に問題の関連する部分です。どのようにしてファイルのサイズを(解像度/ JPEGの解像度の異なる画像でも)いつでも特定のサイズに縮小することができますか? – dcgoss
ここでは、反復ごとに生成された画像の現在のサイズに対応する解像度を10%またはその他の因子で減少させる反復関数をここに追加します。 'PIL'はあなたにこのような可能性を与えます。 – Magnar