子供が、カメラで写真を撮って、パラパラ漫画を作りました。
せっかくなので、動画にしようと奮闘。
その際、画像のサイズを横幅1280pxに変更する必要がありました。
オンラインでの変換ツールもあるけど、一度に変換できる枚数に制限があったり、ダウンロードするときにzipに圧縮されたりして、けっこう面倒でした。
たまにはツールを作ってみるか、と思い立ち、流行りのPythonで作れないか調べてみたら、簡単にできそうだったので作成。
こんなに簡単ならもっと早く作ればよかった!
せっかくなので、ソースコードとつまずいた点をシェアです。
ちなみにPython初心者、というか初めて触ったので、そんなの当たり前だよ!ってものばかりです。
PILを使うには、インストールが必要
画像を扱うライブラリ(?)のPILは、Pythonをインストールしただけでは使えないみたいです。
別途、コマンドでのインストールが必要です。
Image.resizeの使い方
めっちゃはまりました。
「TypeError: 'int' object is not iterable」っていうエラーが出て、小一時間調べました。
Image.resize関数は、Image.resize( ( ) ) と、カッコが2つ必要でした。
まぁ、ちゃんと使い方調べてなさいってだけですが。
引数は、横幅と縦幅だけだから、当然カッコは、1つでいいかと…
if文に:がいる
Pythonって、文末に;とかいらないので、なーもいらんのかなって思ってましたが、if文には:が必要でした。
ソースコード全文
ということでソースコード全文です。
こんな少ないコードで書けちゃうんですね。
もうちょっと勉強してみようかな。
# インポート from tkinter import filedialog import glob import sys import os from PIL import Image # フォルダ入力ダイアログ dir = 'C:\\' fld = filedialog.askdirectory(initialdir = dir) user_size = input("変換後の横幅をピクセルで指定してください。") print("以下の設定で実施します。") print("フォルダ:", fld) print("サイズ:", user_size, "px") # 最終確認 user_input = input("変換しますか? はい:y いいえ:n") if user_input != 'y': sys.exit() #指定されたフォルダ配下にresizeフォルダを作成 new_dir = fld + '/resize/' os.mkdir(new_dir) # 画像ファイル一覧を取得 files = glob.glob(fld +'/*.jpg' ) # サイズ変換 for file in files: print(file) img = Image.open(file) mag = int(user_size) / img.width # 伸縮率 img_resize = img.resize( (int(user_size), int(img.height * mag)) ) img_resize.save(new_dir + os.path.basename(file) )