![見出し画像](https://assets.st-note.com/production/uploads/images/140137028/rectangle_large_type_2_1efc416888f41793eb1f6b39ba950036.png?width=1200)
Pythonでローカルフォルダの複数画像を一括でサイズ500kb以下にする
「にゃんぽう」という商品のHPに掲載してという依頼
うちも猫を2匹飼っている
兄が新規事業として猫用の漢方を販売したいと連絡があり
その商品の情報をホームページに突貫で掲出してほしいと頼まれた
wordpressで作っているページに"にゃんぽうのご案内"ページを作る
パンフレットから画像を切り出した
15枚ありサイズが重いので一括でリサイズできないかと考えた。
なんとなく、ついでにPNGからJPGにしたいと思う。
VS codeでPythonでチャレンジ
desktopにresizeという名前でフォルダを作成
resizeフォルダ内にnyanpouフォルダを作成し
その中に15枚のPNGファイルを入れました。
![](https://assets.st-note.com/img/1715314037914-B6SaKwYO0p.png?width=1200)
VS Codeのターミナルでresizeフォルダを開きます。
ターミナルでpillowをインストールします。
Python Imaging LibraryのフォークであるPillow
!pip install pillow
pythonファイルを作ります。
今回はscript.py
touch script.py
script.pyの書き方
from PIL import Image
import os
# 入力と出力のフォルダパス
input_folder = 'nyanpou'
output_folder = 'output'
# 出力フォルダが存在しない場合は作成
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 最大ファイルサイズ (500KB)
max_size = 500 * 1024
# 入力フォルダ内のPNGファイルを処理
for filename in os.listdir(input_folder):
if filename.endswith('.png'):
with Image.open(os.path.join(input_folder, filename)) as img:
img = img.convert("RGB") # RGB形式に変換
out_path = os.path.join(output_folder, filename.replace('.png', '.jpg'))
img.save(out_path, 'JPEG', quality=85) # 初期保存
# ファイルサイズが大きすぎる場合は、画質を落として再保存
while os.path.getsize(out_path) > max_size:
img = Image.open(out_path)
img = img.resize([int(s * 0.9) for s in img.size], Image.ANTIALIAS) # サイズを90%に縮小
img.save(out_path, 'JPEG', quality=75) # 画質をさらに落として保存
ターミナルで以下を実行
python3 script.py
一瞬でできました。
おそるべしpython
![](https://assets.st-note.com/img/1715315068528-G7eBnykcVz.png?width=1200)
PythonのPillowとは
Pillowは、画像処理を行うためのオープンソースライブラリです。
Pillowの特徴
Pillowは、画像処理を行うためのオープンソースライブラリです。
フォーマットサポート:
JPEG, PNG, BMP, GIF, TIFFなど多くの画像フォーマットをサポート
画像操作機能:
画像のリサイズ、回転、ミラーリング、トリミングなどの基本的な画像操作から、色空間の変換、フィルタリング、画像合成など複雑な操作も可能
画像の描画機能:
線、楕円、四角、テキストなどを画像上に描画できる
拡張性:
C言語の拡張を使用しており、パフォーマンスが要求される処理を高速に実行
使いやすいAPI:
PythonicなAPI設計により、初心者からプロフェッショナルまで幅広いユーザーに利用されています。
Pillowの利用例
画像処理の例として、次のようなコードスニペットが挙げられます。
from PIL import Image
# 画像を開く
img = Image.open('example.jpg')
# 画像をグレースケールに変換
img_gray = img.convert('L')
# 画像をリサイズ
img_resized = img.resize((300, 300))
# 画像を保存
img_resized.save('resized_example.jpg')
以上です。
ここの会社の代表をしています。
この記事が気に入ったらサポートをしてみませんか?