写真がたくさんたまってきました。
表示の遅さが気になります
写真のフォーマットをwebpに変更してみます
使うツールは
https://developers.google.com/speed/webp/download?hl=ja
cwebp.exeで変換します。速度は速くないですが、サイズは20分の1くらいになります
274ファイル 1.85gb ==> 97.9mbになりました
ファイルをサーバにアップロードして、データベースを変更
SQL
UPDATE photos SET filename = REPLACE(filename, '.jpg', '.webp')
これで表示速度も改善しました
pythonで行います
import os
import subprocess
from pathlib import Path
def convert_jpg_to_webp(input_dir, output_dir, cwebp_path):
# パスをPathオブジェクトに変換
input_path = Path(input_dir)
output_path = Path(output_dir)
# 出力先フォルダーがなければ作成
output_path.mkdir(parents=True, exist_ok=True)
# 対応する拡張子(大文字小文字を区別しないため)
valid_extensions = {'.jpg', '.jpeg', '.JPG', '.JPEG'}
# 入力フォルダー内のファイルを走査
success_count = 0
for file_path in input_path.iterdir():
if file_path.is_file() and file_path.suffix in valid_extensions:
# 出力するファイル名(拡張子を .webp に変更)
output_file_path = output_path / f"{file_path.stem}.webp"
# cwebpのコマンドを作成
# -q 80 は画質(0〜100)。お好みで調整してください。
cmd = [
cwebp_path,
"-q", "80",
str(file_path),
"-o", str(output_file_path)
]
try:
# コマンドの実行
subprocess.run(cmd, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
print(f"変換成功: {file_path.name} -> {output_file_path.name}")
success_count += 1
except subprocess.CalledProcessError:
print(f"エラー発生(変換失敗): {file_path.name}")
except FileNotFoundError:
print(f"エラー: {cwebp_path} が見つかりません。パスを確認してください。")
return
print(f"\n完了: {success_count} 枚の画像を変換しました。")
# 設定
INPUT_FOLDER = "org_picture"
OUTPUT_FOLDER = "picture"
CWEBP_EXE = "./cwebp.exe" # 同じフォルダーにある場合。環境変数にあるなら "cwebp" でOK
# 実行
if __name__ == "__main__":
convert_jpg_to_webp(INPUT_FOLDER, OUTPUT_FOLDER, CWEBP_EXE)

