一括で画像フォーマットを変換する 【Python】

programming Python

画像をフォルダに入れておくと、一括で画像フォーマットを変換する Python のスクリプトをまとめておきます。
具体的には、png、gif ファイル等をフォルダに入れておくと、一括で jpg ファイルに変換します。
以下の環境で動作確認をしています。

環境: Windows 10、Python 3.X (Anaconda、PIL をインストール&設定済み)

背景

多数の画像を扱っていると、画像のファイル形式を jpg など1つのフォーマットに統一したくなることがあります。

たとえば、機械学習の検討をしていて、jpg 形式の画像を扱っていたとき、インターネットなどで入手した画像に png、jtif 形式などが混ざっているととても煩雑です。すべてを同一の形式(jpg 形式)に一括変換したくなります。
そこで、jpg 以外の画像をフォルダにいれておくと、一括で jpg フォーマットに変換する Python のスクリプトについてまとめ、公開しておきます。

使い方

① デスクトップなどに任意のフォルダを作ってください。
例: “convert1″
② ①のフォルダ内にさらに2つのフォルダを作成し、”folder1″、”folder2″ という名前にしてください。
③ ①のフォルダ内に ”convert_to_jpg1.py” 等の名前でテキストファイルを作成し、下記のスクリプトをコピー&ペーストして保存してください。
④ ②で作成したフォルダ “folder1″ 内にフォーマットを変換したい画像を入れてください。
例: image1.png
⑤ ③の Python のスクリプトを実行してください。
具体的には、コマンドプロンプト(または Anaconda Prompt)を起動し、”python ” と入力し、③のファイルをドラッグし、[enter] キーを押して実行してください。

→ フォルダ “folder2” 内に jpg ファイルが生成されたら、成功です!
※ ファイルが複数あっても/ファイル形式が混在していても、一括変換します。

うまく動いたら

・ サンプルスクリプトは、任意の画像フォーマットを jpg に変換します。
スクリプトで “.jpg” としている部分を他の拡張子に変更すれば、他のフォーマットにも変換できます。
必要によりアレンジしてみてください。
・ 対応するファイル形式は、png、gif、jtif、(jpeg)などです。動作確認をしています。
webp 形式については対応していません(変換ができませんでした)。
・ サンプルスクリプトで path1、path2 としているところが、変換前後のフォルダのパスです。
この部分を書き換えることで、任意のフォルダに入れた画像を変更できます。
スクリプトを変更される際は、事前にテストを行って、オリジナルの画像などを消さない/上書きしないよう、注意してください。

まとめ

画像のファイル形式を一括で変換する Python のスクリプトについてまとめました。
なお、ファイル名を一括で変更するスクリプト等についてもまとめています。
興味のある方は、関連リンクを参考にしてみてください。

関連リンク
・ 一括でファイル名を変換する 【Python】
・ ファイルを一括で移動する 【Python】

サンプルスクリプト

# -*- coding: utf-8 -*-
import glob 
import os 
from PIL import Image 

path0 = os.path.dirname(__file__) + "/"  
path1 = path0 + "/folder1/" 
path2 = path0 + "/folder2/" 

a1 = glob.glob( path1 + "*.*"  ) 

for i1 in range( len( a1 ) ): 
    path3 = a1[i1] 
    file1 = os.path.basename( path3 ).split( "." )[0] + ".jpg"    # filename 
    path4 = path2 + file1 
    print( path3 ) 
    print( path4 ) 
    img1 = Image.open( path3 ) 
    img2 = img1.convert( 'RGB' ) 
    img2.save( path4, "JPEG", quality=95 ) 

タイトルとURLをコピーしました