こんな方におすすめ
- 画像ファイルを圧縮したいけど、フリーソフトを使えない
- pythonでなにか作ってみたい
こんにちは、わやです。
今回もpythonを使ったプログラムを紹介します。
今回紹介するpythonのプログラムは、「画像圧縮」です。


pythonをインストールされた方なら誰でもできますし、初心者の方が身近なところで試せるプログラムなのでぜひ作ってみてください。
準備

環境
準備いただくのはこれだけです。
pillowライブラリ(PIL)が必要になりますが、anacondaをご利用の方でしたら標準でインストールされているので不要です。
- python
- pillowライブラリ(インストールされていないなら、cmdでpip install pillowを実行する)
- 圧縮したい写真ファイル
- 保存先
プログラム

それでは早速ですが、プログラム作成です。
まずコードを紹介します。
コード
import os
import glob
from PIL import Image
import tkinter
from tkinter import filedialog
import datetime
root = tkinter.Tk()
#""内に圧縮した画像の保存先を指定
save_path = r""
#""内に画像選択のための初期パスを指定
open_path = r""
#保存先を作成
today = datetime.date.today()
Y = str(today.year)
M = str(today.month)
MM = M.zfill(2)
D = str(today.day)
DD = D.zfill(2)
fname = Y + MM + DD
path = f"{open_path}\\{fname}"
if os.path.isdir(path):
print('フォルダがすでにあります')
else:
os.makedirs(path)
print(path + 'にリサイズした写真を保存します')
#画像を選択
idir = save_path
files_path = tkinter.filedialog.askopenfilenames(initialdir = idir)
files = files_path
root.withdraw()
#圧縮
for f in files:
try:
img = Image.open(f)
img_resize = img.resize((int(img.width /2), int(img.height /2)))
name = os.path.basename(f)
img_resize.save(path + '/resize_' + name)
except OSError:
pass※10行目、および12行目に必要なパスをご記入ください
pythonをある程度されている方からしたら簡単だと思います。
プログラム解説
python初心者の方もご覧になられるかと思いますので、簡単にですがプログラムの説明をします。
簡単な流れ
- 1~7行目:必要なライブラリをインポート
- 14~27行目:圧縮した画像ファイルの保存先を作成
- 30~34行目:圧縮するファイルの選択
- 36~44行目:選択した画像ファイルの圧縮
必要なライブラリのインポートはpythonでは必須の作業です。これをすることで様々な機能を簡単に使えることがpythonのメリットですね。
30~34行目のファイル選択は非常に便利です。エクセルファイルを選んだり、pdfを選んだりなど、これからたくさんのファイルを選択されることになると思います。
そのたびに、プログラムの中にリンクを書き込んでもいいのですが非常に時間がかかりますし、選択したいファイルが変わることに修正しなければいけません。
なので、このように毎回選択したいファイルを選べるようにしておくほうがいいかなっと思います。
結論:pythonを使えば簡単に画像圧縮できる
結論まとめるとpythonを使って画像圧縮ができたと思います。
私が勤務する会社では、フリーソフトのインストールに非常に手間がかかります。
pythonさえインストールしてしまえば様々な機能を使えるので、便利になりました。みなさんもpythonを使って様々なプログラムを作成してみてください。
その他に作成したプログラムを公開していますので、よかったら見ていってください。

