指定したフォルダの中にある画像を一括してトリムし、縦横比を1対1にする方法の解説です。
言語はPythonを使います。
事前準備
今回のコードでは、次の2つのモジュールを使います。
- PIL
- pathlib
PILがまだインストールされていない場合は、以下のコマンドを実行してインストールしてください。
pip install pillow
pathlibに関しては、Pythonのバージョンが3.4以降であれば標準ライブラリに入っているため、特に何もしなくても大丈夫です。
コード
コードは以下になります。
from PIL import Image
from pathlib import Path
if __name__ == "__main__":
image_paths = [i for i in Path('トリムしたい画像が入ったフォルダのパス').glob('*.*') if i.suffix.lower() in [r".png", r".jpg"]]
for image_path in image_paths:
image = Image.open(image_path)
new_image = image.crop((0,0,image.height,image.height))
new_image.save('トリムした画像を保存するパス', quality = 100)
print('完了しました')
コードの解説
4行目
ここから処理が開始します。
5行目
Path()の引数に指定したフォルダの中にある全ての画像のパスを取得します。
取得する画像の拡張子は以下の2つとしています。
- .png
- .jpg
7行目
全ての画像のパスが取得できたら、次はトリムしていきましょう。
トリムは7~9行目で行います。
まず、for を使って取得した画像のパスを1つずつ処理するようにします。
8行目
画像のパスから実際の画像を取得します。
9行目
画像の幅が高さと等しくなるようにトリムします。
10行目
最後にトリムした画像を保存すれば完了です。
保存する画像の画質は10行目のqualityで決めています。
qualityは100が最大で、今回は一番良い画質で保存しています。
qualityを上げれば画質は上がりますが、ファイルサイズが大きくなってしまうため画像の用途によって調整するとよいです。
最後に & 関連書籍
以上になります。
分かりにくいところや、「もっとこうしてほしい」などのご意見がありましたら、ツイッターから連絡いただけると幸いです。
質問に関しても、お気軽にお問い合わせください。
余談ですが、Pythonを使ってインスタグラムを自動でいいねするコードなども公開しています。
興味があれば見てみてください。
以下は関連書籍です。
リンク
リンク
リンク
コメント