はじめに
ブログや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でとっても簡単にできます。
「社内報用に統一した画像が欲しい」とか、「ブログ用の画像を軽く加工したい」ときにめっちゃ便利です。
一度スクリプトを書いておけば、次回からはドラッグ&ドロップして実行するだけ。
画像編集の手間がかなり減りますよ〜!



コメント