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

ドキュメント



All Articles