WordPress用の写真をPythonで縮小【ChatGPT活用】

WordPressのブログやホームページに写真をアップするときには、縮小しておきたいもの。
そのときにPythonを使うと便利です。

※ブログ執筆中 by Nikon Z9+24-120mmF4

WordPressへの写真アップ時の注意点

WordPressは、そのデータ(テキスト、写真など)を借りているサーバーに保存するというしくみです。
テキストはともかく写真はそれなりの大きさのデータ。
できる限りそのサイズを小さくしたいものです。
スマホでも写真のサイズは大きくなり、カメラならなおさら大きくなります。

とはいえ、小さくしすぎると、写真が粗くなり、せっかく撮った写真が見づらくなるものです。

そして、WordPress特有の写真処理についても注意しましょう。
写真には、サイズがあり、たとえば、Googleフォトでiを押す、WindowsのエクスプローラーやMacのFinderで、確認できます。

これだと、8256×5504というサイズです。

これをWordPress へそのままアップすると、アップはできるのですが、こうなってしまいます。

元のファイルを圧縮して、2560の幅にし、scaledという名前がついているのです。

元のファイルもこのように残っています。
(WordPress のサーバー内のファイルです)
無駄に容量を使ってしまうということです。

画像を縮小してくれて楽なのですが、この縮小により、画質が落ちてしまいます。
写真によって目立つことも。

ファイルのサイズについては、サーバーの容量はそれなりにあるのでいいとして、画質が落ちるのは避けたいもの。
WordPressのテーマにもよりますが。

WordPressのルールは、「幅が2560pxだったら縮小する」というものです。
それならば、画像をあらかじめ2560pに縮小してアップしておけば、こういったことは起きません。

このように2560にしておきたいものです。

 

Pythonで画像を縮小

画像を幅2560px以下に縮小してアップすれば、このようにscaledはできません。 

サーバー内にもこのようなファイルだけが保存されます。
縮小前は、17MBでした。

Pythonだと、たとえばこのような流れで写真ファイルを準備できます。
・写真をGoogleフォトからダウンロード(Shift+D)
・Pythonを実行し、縮小
・その写真をアップ(必要があれば編集後に)

とはいえ、Pythonのコードを書くには楽ではありません。
今ならChatGPTを使いましょう。

ChatGPT×Pythonの活用

ChatGPTには次のように入れます。
2行目は、写真ファイルがある場所です。
・Windowsならエクスプローラーで、右クリックしてパスのコピー
・MacならFinderで右クリックしてoptionキーを押しながら[◯◯◯のパス名のコピー]
という方法でコピーできます。

写真ファイルは、JPEG jpeg JPG jpg pngといった拡張子なので、それをすべて指定し、幅も指定しましょう。

結果、コードが出てきます。

まず、パソコンにPythonをインストールしましょう。

ライブラリというものは、
・Windowsだとコマンドプロンプトという標準アプリ
・Macだとターミナルという標準アプリ
に入れて、Pillowという機能をインストールするものです。

その後、IDLE(Pythonをインストールすると使えるアプリ)にChatGPTのコードを貼り付けて実行すると、写真を縮小できます。
ChatGPTの有益な使い道の1つは、プログラミング。

created by Rinker
¥2,980 (2024/10/06 13:34:02時点 Amazon調べ-詳細)

基本を押させて、ChatGPTに書いてもらってみましょう。
(うまくいかないときもありますが)

コードは置いておきます。

from PIL import Image
import os

# ファイルが存在するディレクトリ
directory = "■■ご自身のパソコンのフォルダのパス"

# 幅を変更する画像の拡張子
extensions = ['JPEG', 'jpeg', 'JPG', 'jpg', 'png']

# 幅
target_width = 2560

def resize_images(directory, extensions, target_width):
    for filename in os.listdir(directory):
        # 拡張子が指定されたものであれば処理を続行
        if filename.split('.')[-1] in extensions:
            filepath = os.path.join(directory, filename)
            try:
                with Image.open(filepath) as img:
                    # 幅を2560pxに変更
                    width_percent = (target_width / float(img.size[0]))
                    height = int((float(img.size[1]) * float(width_percent)))
                    img = img.resize((target_width, height), Image.LANCZOS)
                    img.save(filepath)
                    print(f"{filename} resized successfully.")
            except Exception as e:
                print(f"Error resizing {filename}: {e}")

# 画像のリサイズを実行
resize_images(directory, extensions, target_width)



■編集後記
昨日は、朝からトライアスロンバイクのグループレッスンを受けに仲間と。
久しぶりに大井ふ頭へ行きました。
日曜日は、車が少なめでバイク練習のメッカになっています。

その後、家族と合流して、かき氷フェスタへ。

1日1新Kindle『1日1新』
ODAIBAかき氷フェス
大井ふ頭でグループレッスン
今の自宅から大井ふ頭へ

■娘(7歳)日記→Kindle『娘日記』・ Kindle『娘日記Ⅱ』
「行くなら暑い日がいい」と、気温が上がった日にかき氷フェスへ。
娘が選んだのは、桃のかき氷でした。
その後、もうちょっと食べたいと、親子丼を。
カルボナーラ親子丼、なかなかおいしかったです。