Pythonによる画像のファイル形式変換 jpg⇔png/jpg⇔webp

Pythonを使って画像のファイル形式を変換する方法を紹介します。

画像の変換には、PIL (Python Image Libraly)を使います。PILの中で、画像を扱うのに一番重要なのは、Imageクラスになります。Imageクラスを使って画像のファイル形式を変換します。

画像を開くには、Imageクラスのopen関数を使います。

from PIL import Image
im = Image.open("./0000.jpg")
im.show()

convert関数を使います。引数でカラーパレットの指定をして、画像のコピーを作ります。ここでは”RGB”を指定します。

from PIL import Image
im = Image.open("./0000.jpg").convert("RGB")

jpgからpngに変換して保存する場合は、次のようにします。

from PIL import Image
im = Image.open("./0000.jpg").convert("RGB")
im.save(str("./0000.png", "png")

jpgからpngへの変換以外に、jpgからwebp, pngからwebpとそれぞれの逆の変換も可能です。それぞれ所望の拡張子に変更するだけでできます。

フォルダ内の指定の拡張子の画像をすべて変換する場合には下記のようにします。


import glob
from PIL import Image

def cnvt2jpg(s, i):
 im = Image.open(s).convert("RGB")
 im.save(str(format(i, "04"))+".jpg", "jpeg")

def cnvt2png(s, i):
 im = Image.open(s).convert("RGB")
 im.save(str(format(i, "04"))+".png", "png")

def cnvt2webp(s,i):
 im = Image.open(s).convert("RGB")
 im.save(str(format(i, "04"))+".webp", "webp")

files = glob.glob(".\*.jpg")
i = 0
for file in files:
 cnvt2png(file, i)
 i += 1

上記の例は、jpgからpngに変換する場合ですが、jpg, webpへの変換用の関数もcnvt2jpg, cnvt2webpで用意しています。

参考

[1]画像のファイル形式の変換
https://medium.com/@ajeet214/image-type-conversion-jpg-png-jpg-webp-png-webp-with-python-7d5df09394c9

[2]フォルダ内のファイル一覧の取得
https://weblabo.oscasierra.net/python/python3-beginning-file-list.html

[3]画像の色相を変化させる
https://sciencompass.com/machine-learning/opencv_rgb_hsv_change

sciencompass34 has written 154 articles

はじめまして!”あおやぎ”と言います。
メーカーで研究開発の仕事をしています。このブログでは、私の専門分野である半導体やそれに関連する内容を紹介していきます。
半導体関連の知識をまとめたデータベースのようにしたいなと思っています。

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください