Djangoでの便利な画像操作



Imagekitは、元の画像を変更せずに画像を操作できるアプリケーションです。 私は便利だと思うので、写真にはいくつかのオプションがあり、いつでもソースに戻ることができるのは明らかです。

サイズ変更、プレビューの作成、透かしの適用ができます。

設置

イメージキットを使用するには、PILまたはPILLOWが必要です
私たちはPyPIから置きます:
pip install django-imagekit 

「imagekit」をINSTALLED_APPSに追加します

モデルで使用
 import PIL ... from PIL import Image from imagekit.models.fields import ImageSpecField from imagekit.processors import ResizeToFit, Adjust,ResizeToFill class Jobseeker(models.Model): def get_file_path(self, filename): extension = filename.split('.')[-1] filename = "%s.%s" % (uuid.uuid4(), extension) return os.path.join("images", filename) ... photo = models.ImageField(verbose_name=u'Poster',upload_to=get_file_path,max_length=256, blank=True, null=True) photo_small =ImageSpecField([Adjust(contrast=1.2, sharpness=1.1), ResizeToFill(50, 50)], image_field='photo', format='JPEG', options={'quality': 90}) photo_medium =ImageSpecField([Adjust(contrast=1.2, sharpness=1.1), ResizeToFit(300, 200)], image_field='photo', format='JPEG', options={'quality': 90}) photo_big =ImageSpecField([Adjust(contrast=1.2, sharpness=1.1), ResizeToFit(640, 480)], image_field='photo', format='JPEG', options={'quality': 90}) 

テンプレートでの使用

view.pyでは、オブジェクトを渡します
 def some_def(request): ... photo = Jobseeker.objects.get() ... return (render_to_response('jobseeker/resume_template.html', { ... 'photo': photo, ... }, context_instance=RequestContext(request)) ) 

テンプレートでは、次のフィールドを参照できます。
 photo.photo_small.url #   5050 photo.photo_medium.url #     300200 photo.photo_big.url #     640480 #      photo.photo_small.width # 50 photo.photo.width #    


この例では、ResizeToFitとResizeToFillの2つのイメージプロセッサを使用しました。
実際、さらにいくつかあります- プロセッサモジュール

 ResizeToFit(width=None, height=None, upscale=None, mat_color=None, anchor='c') 

目的:指定されたサイズの画像が作成され、指定されたフレームを超えないように、元の画像がそれに比例して圧縮されて重畳されます。
幅=なし、高さ=なし-それぞれ幅と高さ。
upscale-指定されたパラメーターよりも小さい場合に画像を拡大するかどうかを決定するブール値
mat_color-ソース画像で塗りつぶされていない領域の塗りつぶし色。

 ResizeToFill(width, height) 

目的:指定されたサイズにサイズ変更するために、指定されたサイズを超えるものはすべて切り取られます
属性はそれぞれ、シニラと高さを示します。

作業例

元の写真



ResizeToFill


mat_colorパラメーターを使用して、新しい画像の実際の寸法を表示するResizeToFit



imagekitを使用して作成された追加の写真はすべてキャッシュフォルダーに保存され、すべてのオリジナルは別のフォルダーに保存されます。 それらは、それらが使用されるページへの最初の訪問で作成されます。 いつでも、すべての写真をオリジナルに害を与えることなく削除し、新しいパラメーターで再作成できます。
これにより、初期設定が突然正しくなく、オリジナルが保持されるとは考えられなかった場合、画像を使用した作業が大幅に促進され、開発者の神経が節約されます。

参照:
Github
ドキュメント

Source: https://habr.com/ru/post/J159513/


All Articles