- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
TclMagickはGraphicsMagick(以下GM)寄りで、ImageMagick(以下IM)も
サポートしているというのは嘘ではないのだが、GMのバージョンアップが
遅れているせいなのか(遅れてるのかどうか知らないが)何なのか知らないが、
とにかくいつまでたっても(2年くらい)GMがIMのwand APIの重要なAPIを
とにかくいつまでたってもGMがIMのwand APIの重要なAPIを
取り込んでくれないので、仕方が無いので自分でパッチを書いた。~
このパッチは、GMにリンクしてコンパイルすると、GMに無いIMのAPIを
エミュレートする。IMの場合はそのままIMのAPIを使う。
IM用とGM用でバイナリが異なるので注意。コンパイル時にどちらのソースか
バージョン情報から判断して自動で振り分ける。~
IMにあってGMには無い機能は、他にもたくさんあると思うのだが、
その辺をどうするのかポリシーがよくわからないし、作者の方に聞くのも
めんどくさいし、結局GMに存在しないwand APIはIM互換の自作APIで代用し、
GMでもIMどちらでも、IMのAPIのTclラッパーを使えるようにした。ただし
IM用とGM用でバイナリが異なるので注意。
なお全ての対応していないAPIを取り込んだわけではなくて、自分が必要な
ものだけを2,3個取り込んだ。~
あとフォント名の取得が文字化けしていたので直した。~
***Download [#we11fd18]
-patch~
//http://reddog.s35.xrea.com/software/TclMagick045mod.patch
-win32 binary for ImageMagick
-win32 binary for GraphicsMagick
http://reddog.s35.xrea.com/software/TclMagick045mod.patch
-win32 binary for ImageMagick6.29-Q8~
http://reddog.s35.xrea.com/software/TclMagick-0.44m-IM6.29-Q8-win32.zip
-win32 binary for GraphicsMagick1.1.7-Q8~
http://reddog.s35.xrea.com/software/TclMagick-0.44m-GM1.1.7-Q8-win32.zip
***Added wand API [#d3548c6e]
***new wand API [#d3548c6e]
-compressionquality, GetCompressionQuality, SetCompressionQuality~
JPEGの圧縮率の変更。
-format, GetImageFormat, SetImageFormat~
GetImageFormatは前からあったのだが、フォーマットの変更をする
SetImageFormatが無かったので追加した。
-format, GetFormat, SetFormat~
GetFormatは前からあったのだが、フォーマットの変更をする
SetFormatが無かったので追加した。
***Examples [#w76be205]
これらのAPIを使って、一時ファイルに書き出すことなく、全てメモリ上にて
フォーマットの変換、圧縮率の変更をすることができるようになる。
たとえば、画像を開いて、圧縮率の高いJPEGにリサイズしたサムネイルを
作って、そのままBLOBでデータベースに格納するといったことができる。
-画像ファイルを開いてGIFのサムネイルをデータベースに格納~
#======================================================
# Open a file and Create GIF thumbnail on memory
#======================================================
package require TclMagick
set THUMBSIZE 100
set w [magick create wand]
$w read c:/temp/テスト.bmp
set width [$w width]
set height [$w height]
if {$width > $height} {
$w scale $THUMBSIZE [expr {int(1.0 * $THUMBSIZE / $width * $height)}]
} else {
$w scale [expr {int(1.0 * $THUMBSIZE / $height * $width)}] $THUMBSIZE
}
$w format GIF
set thumbbin [$w writeblob]
magick delete $w
#======================================================
# Store the raw data to DB
#======================================================
package require sqlite3
sqlite db :memory:
db eval {create table t (id integer primary key, data blob);}
db eval {insert into t values(NULL, :thumbbin);}
#======================================================
# Load the image and show it
#======================================================
pacakge require Tk
set imgdata [lindex [db eval {select data from t where id=1;}] 0]
image create photo img -data $imgdata
pack [label .l -image img]
***コメントをどーぞ [#z5e54964]
#comment
----
[CategoryTclTk]
[CategoryTclTk] [TclMagickの使い方]
HTML convert time: 0.004 sec.