ホームページの作成方法は色々あるが、私は特に市販のソフトを使用せずにhtmlソースを直に記載する方法を採っている。微調整はcssファイルで出来るので、市販のソフトは使用していない。
かといって、いつも新規に記述しているわけではなく、ある程度のひな形を作っているが、写真のページのように画像数だけリンクを貼り付けるような作業はcgiを活用して自動化している(htmlページ上で必要な情報を入力すればソースを吐き出す)。 さらに、画像ファイルもファイル名をそろえてくれる便利機能を持っている。

ここまでは、ずいぶん前から完成していて便利になったのだが、問題は画像ファイルの整理。デジカメで撮影した画像は容量が大きいし、サイズも大きい。インデックス用の画像も作らないといけないがこれを自動化できないかとトライしていた。
GIMPには便利機能があって、自分でplug-inを作り動作させることができる。 Script-fuというSchemeベースとPythonベースのPython-fuという2種類がある。前者のほうが昔から使われているせいか、圧倒的に情報量が多い。ただScheme言語とかなりマニアックな言語(と自分は思う)なので、理解するのに苦労していた。
最近は人工知能のプログラミングでPythonが多く用いられている。シンプルな文法と豊富なライブラリが提供されていることが理由のようだ。なので、Python-Fuでさくさく..と思ったが、これがなかなか難しい。これまた情報がなかなか少ないのだ。かと言って、Python-Fuを語るほど私には知識がないので、まずは先駆者の方の記事を紹介させていたきます。
- 5 分で始める GIMP Python-Fu https://qiita.com/dhomma/items/f33ecd1c4d4c6ece7685 Python-Fuのショート・チュートリアルをまとめてある。
- GIMPで画像を一括でレベル補正(Python-Fu) https://qiita.com/7shi/items/3253d5766a4c65cb1a1f 指定されたフォルダ内にある画像を一括処理する
- GIMP2.8で指定したフォルダ内の画像を一括サムネイル化するやつ作った(Python-Fu) http://l52secondary.blog.fc2.com/blog-entry-41.html GIMPで指定したフォルダ内の画像ファイルを指定したサイズで出力する
これらのページを参考にしてできあがったのが、以下のソースです(一部機能を削除していますが)。動作の流れとしては、画像のあるフォルダを指定(dirpathに収納)→dirpath内のjpgファイルを呼び出し→元画像ファイルの縦横比を維持したまま、長辺を1024に変換し保存→繰り返し となっています。
今回はサイズ変更のみを行っていますが、色々画像変換はできるようなので参考にしてみてください。
注意:本ソース使用によるトラブルの責任は負いかねますので、十分に検証してご利用ください。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from gimpfu import *
import os, glob
def plugin_main(dirpath):
if not os.path.exists(dirpath):
gimp.message("指定されたフォルダ( " + dirpath + " )は存在しません。")
return
for jpg_file in glob.glob(os.path.join(dirpath, "*.jpg")):
image = pdb.gimp_file_load(jpg_file, "")
tdrawable = pdb.gimp_image_active_drawable(image)
now_name = pdb.gimp_image_get_filename(image)
new_display = pdb.gimp_display_new(image)
currentWidth = float( image.width )
currentHeight = float ( image.height )
width_rate = currentWidth / currentHeight
if (width_rate >= 1.0):
newWidth = 1024
newHeight = 1024 / width_rate
else:
newHeight = 1024
newWidth = 1024 * width_rate
pdb.gimp_image_scale(image, newWidth, newHeight)
pdb.gimp_file_save(image, tdrawable, now_name , now_name)
pdb.gimp_display_delete(new_display)
register(
"image-resize1024",
"",
"",
"Yoichi Ito",
"Yoichi Ito",
"2019.8.11",
"image-resize 1024px",
"RGB*, GRAY*",
[
(PF_DIRNAME, "dirpath", "画像が保存されているフォルダ名", None),],
[],
plugin_main,
menu="<Image>/Python-Fu")
main()