GIMP2.8で指定したフォルダ内の画像を一括サムネイル化するやつ作った(Python-Fu)

個人事業のWEBサイトを作成していて、ガラでもなくCMSサイトを作っているのだけど
WordPressとかブログサービスじゃないやつを選んだ所為で
画像周りの設定とか貼り付けがとにかくめんどくさい!!
いちいち自分で画像をリサイズして
サムネイルを作ってペタペタ貼り付けないといけない!!

GIMP2.8で面白い機能(Python-Fu)をみつけたので、

自動で

フォルダ内の全画像(gif, jpeg, jpg, png)を

指定したサイズで

縦横比を維持したまま

パパっっと出力するPythonスクリプトを組みました。

create-thumbnail-as-folder.py

#!/usr/bin/env python
#coding: UTF-8

from gimpfu import *
import math, os, glob

def plugin_main(resImg, resDrawablepath, path, mW, mH, str_before, str_after, isWin):
	
	if not os.path.exists(path):
		gimp.message("指定されたフォルダ( " + path + " )は存在しません。")
		return
	
	if mW == 0 and mH == 0:
		gimp.message("サムネイルサイズ縦横が両方とも0(auto)になっています。いずれかひとつのサイズを指定してください。")
		return
	
	strSeparator = "\/"
	if isWin == TRUE:
		strSeparator = "\\"
	
	orgMW = mW
	orgMH = mH
	
	fnames = []
	types = ["*.gif", "*.jpeg", "*.jpg", "*.png"]
	
	for exts in types:
		fnames.extend(glob.glob(path + strSeparator + exts))
	
	for fname in fnames:
		img = pdb.gimp_file_load(fname, '')
		
		orgWidth = img.width
		orgHeight = img.height
		aspectRatio = 1.0 * orgWidth / orgHeight
		
		if orgWidth <= orgMW or orgHeight <= orgMH:
			continue
		
		if orgMW == 0:
			mW = round(1.0 * orgMH * aspectRatio)
			mH = orgMH
		
		if orgMH == 0:
			mW = orgMW
			mH = round(1.0 * orgMW / aspectRatio)
		
		if str_before == "" and str_after == "":
			str_before = "thumb_"
		
		fileName, ext = os.path.splitext(os.path.basename(fname))
		fileName = str_before + fileName + str_after
		newPath = path + strSeparator + fileName + ext
		
		pdb.gimp_image_scale_full(img, mW, mH, 3)
		
		if ext == ".gif":
			pdb.file_gif_save(img, img.layers[0], newPath, newPath, 0, 0, 0, 0)
		if ext == ".jpg" or ext == ".jpeg":
			pdb.file_jpeg_save(img, img.layers[0], newPath, fileName + ext, 1.0, 1.0, 0, 0, "", 0, 0, 0, 0)
		if ext == ".png":
			pdb.file_png_save(img, img.layers[0], newPath, fileName + ext, 0, 9, 0, 0, 0, 0, 0)
	
register(
	"python_fu_create_thumbnail_as_folder",
	"指定されたサイズで指定フォルダ内の全画像(gif, jpg, jpeg, png)のサムネイルを作成します",
	"指定されたサイズで指定フォルダ内の全画像(gif, jpg, jpeg, png)のサムネイルを作成します",
	"Yajirushi Yajirushi",
	"Yajirushi Yajirushi",
	"2016/9/12",
	"<Image>/File/フォルダ内のサムネイルを生成...",
	"*",
	[
	   (PF_DIRNAME, "targetPath", "対象のフォルダ", "."),
	   (PF_INT, "maxWidth", "横幅[px]<<0 = auto>>", 0),
	   (PF_INT, "maxHeight", "高さ[px]<<0 = auto>>", 300),
	   (PF_STRING, "namePref", "ファイル名接頭辞", 'thumb_'),
	   (PF_STRING, "namePref", "ファイル名接尾辞", ''),
	   (PF_BOOL, "isWINDOWS", "Windows環境?", TRUE)
	],
	[],
	plugin_main)
	
main()

これの使い方

  1. Python-Fuが使える、GIMP2.8以降をインストール
    ([フィルター]-[Python-Fu]-[Console]が開ければPythonがインストールされてる)
  2. メモ帳以外のテキストエディタで上のスクリプトを全コピペして
    「create-thumbnail-as-folder.py」の名前で保存
    (文字コードUTF-8、改行コードはCR/LFかLF)
  3. 保存したファイルをGIMPのプラグインフォルダに突っ込む
    (Windowsの環境の場合、全角文字や空白スペースがパスに入ると動かないので、自分でプラグインフォルダを作って、そこに突っ込んだほうがいい)
    (デフォルトではC:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins)
    プラグインフォルダに謎のキャッシュがあるらしい。
  4. GIMPを再起動
  5. [ファイル(F)]メニューの一番下に「フォルダ内のサムネイルを生成…」ができてる
  6. てきとうな画像を開くか、新規作成でキャンパスが有効化されると使えるようになる
    (スクリプト実行結果は開いてる画像や作っている画像に影響しません)

あとはフォルダを指定して、縦横サイズを指定して「OK」押せば、

フォルダ内の全画像のサムネイルを同じフォルダの中に作る。

まぁ物は試しに、適当なフォルダ作ってテストしてみればわかると思う。

gimp_createthumbnailasfolder.png

尚、この記事を見て「ファイルが消えた!」とか「パスがおかしくなった!」とかそんなの知らないので、全部自己責任でお願いします。

この記事というかこのブログの記述が発端で発生したトラブルについては一切の責任を負いかねます。

 

あと、盗り逃げしないで何かコメントとか拍手とか残して帰ってね。

しかし・・・pythonは「インデント教」と呼ばれる理由がわかる。

ホント構文が宗教じみててあんまり好きになれない・・・

JavaとC++に慣れすぎてしまった・・・のか?


コメントを残す