はじめに
ブログやWebサイトに画像をアップする前、「サイズを統一したいな〜」とか「JPEGじゃなくてPNGに変換したい」って思ったことありませんか?
手作業で1枚ずつやるのは正直めんどくさい…。そんなときに役立つのが、Pythonで一括変換・リサイズできるスクリプトです!
今回は、画像を800×800にリサイズしながらJPEG→PNGに変換して保存する方法をご紹介します📸
やりたいこと
-
フォルダ内の画像を一括処理
-
JPEG形式の画像をPNGに変換
-
サイズを800×800にリサイズ
-
変換後の画像を別フォルダに保存
準備するもの
ライブラリ
-
Pillow(画像処理)
-
os(ファイル操作)
-
glob(ファイルパス取得)
インポート手順
このライブラリの説明
-
Pillow:画像の開く・保存・リサイズ・フォーマット変換などができるPythonの定番ライブラリ。
-
os:ディレクトリの作成やパス結合など、ファイル操作に便利。
-
glob:特定の拡張子を持つファイルだけを一括で取得できる。
ディレクトリ構成
以下のようなフォルダ構成を想定しています:
コードスクリプト
コードスクリプトの概要
-
input_images/
内のJPEG画像をすべて取得 -
800×800にリサイズ
-
PNG形式で
output_images/
に保存
コード全文
from PIL import Image import os import glob # 入出力フォルダ input_folder = 'input_images' output_folder = 'output_images' target_size = (800, 800) # 出力フォルダがなければ作成 os.makedirs(output_folder, exist_ok=True) # JPEG画像をすべて取得 image_paths = glob.glob(os.path.join(input_folder, '*.jpg')) + glob.glob(os.path.join(input_folder, '*.jpeg')) for img_path in image_paths: with Image.open(img_path) as img: # リサイズ img_resized = img.resize(target_size) # 新しいファイル名を作成(拡張子をPNGに) base_name = os.path.splitext(os.path.basename(img_path))[0] new_filename = base_name + '.png' output_path = os.path.join(output_folder, new_filename) # PNG形式で保存 img_resized.save(output_path, 'PNG') print(f"{new_filename} を保存しました。")
実行結果
例えば以下のようなJPEG画像が input_images/
にあったとすると…
test1.jpg,
test2.jpg
実行後は
output_images/
に以下のPNGファイルが出力されます:
test.png, test2.png
もサイズは800×800に統一されています
コード解説
-
glob.glob()
で.jpg
と.jpeg
をまとめて取得してます(大文字も処理したい場合は拡張すればOK)。 -
Image.resize()
でサイズ変更。 -
os.path.splitext()
で拡張子を除いた名前を取得。 -
.save()
時に'PNG'
を指定することで、フォーマット変換。
注意点
-
画像のアスペクト比は無視して強制的に800×800になります。歪みが気になる場合は
thumbnail()
を使う方法もあります。 -
input_images/
にJPEG以外の画像があると処理されません。 -
PNG変換時、透過には対応していません(元画像が透過PNGでない場合)。
まとめ
画像の一括リサイズ&形式変換は、PythonとPillowでとっても簡単にできます。
「社内報用に統一した画像が欲しい」とか、「ブログ用の画像を軽く加工したい」ときにめっちゃ便利です。
一度スクリプトを書いておけば、次回からはドラッグ&ドロップして実行するだけ。
画像編集の手間がかなり減りますよ〜!
コメント