Django PIL image save()の時のformat指定を関数化する
概要
image.save(image.url, "フォーマット") の時のフォーマットをファイルの拡張子によって、自動で指定する関数を作りたい。
コード
def get_file_extension(file_extension): if file_extension == "jpg": upper_file_extension = "JPEG" else: upper_file_extension = file_extension.upper() return upper_file_extension
こんな感じで拡張子を大文字に変換するfunctionを設定。
jpg -> JPEGに変換しているのは、なぜかjpgの時は、PILで、JPEGで指定しないとうまく認識してくれないため。 それ以外の拡張子は拡張子名をそのまま大文字にするだけでいいはず!
def create_new_image(media_path, instance, owner_slug): ... temp_image = open(temp_file_path, "wb") gray_img.save(temp_image, upper_file_extension)# そのうちちょっと変える。 thumb_data = open(temp_file_path, "rb") thumb_file = File(thumb_data) instance.image.save(filename, thumb_file) instance.save()
temp_image = open(temp_file_path, "w")
だと、type errorが出たので、wb に変更- saveの時に、upper_file_extensionを代入
これで一応errorなしにsaveできました。