今回はちょっとプログラミングの話題。
サイトの制作でスライスした画像のサイズを取得してimg要素に含めたい時ってしょっちゅうなんですがこれがめんどくさい。
そこで私はちょっとしたツールを作って利用しています。
画像ファイルを選択しておいて右クリックの「送る」でこのツールに放り込むと、画像サイズが含まれたimgタグを作ってクリップボードに張ってくれます。
ちなみに私の作業環境はウィンドウズのVistaと7です。
このツールちょっと前にVisualStudioのC#で作ったものですが、さきほどPythonで作り変えてみました。
Pythonも使うの久しぶりだったので文法思い出しつつ。
どってことないプログラムですが一つ工夫しているのは複数選択した画像をいっぺんに処理できることかな?
一つ注意はクリップボードへの処理にcopy.exeを使っているのでVista以降のウィンドウズじゃないとうごきません。
他の環境の方はクリップボードの処理の部分を変えてみてください。
それとPythonだけじゃなくてPython Imaging Library (PIL)も必要です。
ファイルでも置いておきます。
get_image_size.txt
以下の記事参考にさせて頂きました。ありがとう。(ってほとんどそのまんまなんだよね)
ヲドリテヒヅル クリップボードにテキストをコピーする + subprocess
画像サイズをPythonで取得してみた – 牌語備忘録 – pygo
これもよく忘れるので参考に。
Windows7で右クリック「送る」メニューの編集方法(SendToフォルダの在り処) – 半端な日記
# coding:utf-8
import subprocess
import sys
import os
import PIL.Image
argvs = sys.argv
argvs.pop(0)
def get_image_size(path,dir = '/images/'):
try:
f = PIL.Image.open(path)
file_name = dir + os.path.basename(path)
img = '<img alt="" src="%s" width="%d" height="%d" />' % (file_name, f.size[0], f.size[1])
print img
return img
except Exception as e:
print e.message
return ''
def copy_to_clipboard(text):
try:
p = subprocess.Popen(['clip'], stdin=subprocess.PIPE)
p.stdin.write(text)
p.stdin.close()
retcode = p.wait()
return True
except Exception as e:
print e.message
return False
copy_to_clipboard("\n".join(map(get_image_size,argvs)))
開発環境:Python2.7 、PIL1.17、win Vista














