こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- PNG画像のJPEG変換・リサイズ(縮小・拡大)を自動で実行できるツールの作成方法を言及。
- 「画像の軽量化や画像サイズ調整に毎回手間がかかる」「画像のサイズ調整を自動化したい」このような悩みにお応え!
- 本記事では、Pythonを用いたプログラム構築方法からツールの利用方法に至るまで詳しく解説。
【Python】画像変換・軽量化の課題と本ツールで対応できること
Webサイト、YouTube、その他ソーシャルメディアの運営を行なっている方は、上図のような悩みを抱えたことがないでしょうか?
本記事で紹介するツールのコンセプトは「PNG画像の軽量化(JPEG変換)および画像サイズ変更(縮小・拡大)を一括して実行できる」であり、上図利用対象者が抱える悩みの解決を目指したものです。
ツールはPythonスクリプトを用いて構築していきます。
ツールの利用マニュアル
本記事で紹介するツールの利用マニュアルです。事前に実施していただくこととして「①フォルダの作成」があります。同じディレクトリにIMGフォルダとPythonスクリプトファイルを用意しましょう。③スクリプトを実行すると、IMGフォルダに格納した画像ファイルが全てJPEG変換・リサイズされて出力されます。
具体的な使い方イメージは下記の動画からも確認できます。(動画上ではJupyter Notebookを用いてスクリプトを実行していますが、Terminal等の実行環境でももちろん動作します)
【Python】コード全量掲載|PNG画像のJPEG変換・サイズ調整
Pythonスクリプトの全量を示します。準備したスクリプトファイルに下記内容をコピー&ペーストしましょう。
import glob
import os
from PIL import Image
# 画像のサイズ設定
height = 1200 #縦
width = 1200 #横
def image_conveter(height,width):
# 保存先作成
save_dir = os.path.dirname(os.path.abspath("IMG"))+"/JPG"
os.makedirs(save_dir, exist_ok=True)
# 写真データディレクトリ取得
img_dir = glob.glob(os.path.abspath("IMG")+"/*")
for item in range(len(img_dir)):
# 写真データ読込
img = Image.open(img_dir[item])
# RGBA(png)→RGB(jpg)変換
img_jpg = img.convert('RGB')
# 画像リサイズ
img_jpg.thumbnail((height,width))
# JPG写真保存
img_jpg.save(save_dir+"/"+img_dir[item].split("/")[-1].replace("png","jpg"), "JPEG", quality=95)
# 元データ削除
os.remove(img_dir[item])
if __name__ == "__main__":
image_conveter(height,width)
【Python】コード個別解説|JPEG変換・リサイズ処理
ツールを業務に適した形で利用するために、コードの意味と画像操作設定について解説します。
ライブラリのインストール
本記事で紹介している実行スクリプトでは、PythonライブラリであるPillowをもとに画像を操作しています。ターミナルを開いた後に下記を入力し、ライブラリを事前にインストールしておきましょう。
pip install pillow
画像サイズの最大値指定
Pythonスクリプトを実行すると、元の画像の縦横比は保ったまま縦横いずれかの最大が1200pxになるよう設定しています。このサイズ1200pxを変更したい場合は下記の数値を修正してもらえればと思います。
#画像のサイズ設定
height = 1200 #縦
width = 1200 #横
画像ファイルの読み込み
IMGフォルダからの画像ファイル読み込みには、globとosライブラリを用いています。
#写真データディレクトリ取得
img_dir = glob.glob(os.path.abspath("IMG")+"/*")
JPEG変換・リサイズした画像ファイルの保存
変換処理が完了した画像は、IMGフォルダと同じディレクトリに自動生成されるJPGフォルダ内に格納されます。
#保存先作成
save_dir = os.path.dirname(os.path.abspath("IMG"))+"/JPG"
os.makedirs(save_dir, exist_ok=True)
JPEG変換
画像のJPEG変換はconvert()メソッドに”RGB”を引数に渡して実施します。
#RGBA(png)→RGB(jpg)変換
img_jpg = img.convert('RGB')
画像のサイズ変更
画像の縦横比を維持したままサイズを変更する方法として、thumbnail()メソッドを用います。
#画像リサイズ
img_jpg.thumbnail((height,width))
変換前の画像データ
変換前の画像データは画像操作後に削除する設定としています。元画像データも残したい場合は下記のコードを削除すると良いです。
#元データの削除
os.remove(img_dir[item])
【参考】Pythonを活用した様々なお役立ち情報
当サイトではPythonを活用した様々なお役立ち情報を配信しています。
Pythonでできること・仕事に応用
「Pythonで実現できることを知りたい」「Pythonスキルを仕事で活かしたい」方はこちら!
Python✖️AI・機械学習
Python活用の最大メリットの1つであるAI・機械学習について詳しく知りたい方はこちら!
Python✖️投資自動化(仮想通貨)
Pythonはフィンテックとの相性が良く、その中でも仮想通貨自動売買タスクは近年注目度の高い領域です。フィンテック・投資に興味がある方はこちら!
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら