サイトアイコン sciencompass

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

Free-Photos / Pixabay

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

モバイルバージョンを終了