#:g1: lisp-magickの紹介

Posted 2014-08-15 01:45:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の227日目です。

lisp-magickとはなにか

 lisp-magickは、Hans Bulfone氏作のImageMagick (MagickWand)をCommon Lispから使うためのライブラリです。

パッケージ情報

パッケージ名lisp-magick
Quicklisp
プロジェクトサイトnil.at:lisp-magick
Quickdocslisp-magick | Quickdocs
CL Test Grid: ビルド状況lisp-magick | CL Test Grid

インストール方法

(ql:quickload :lisp-magick)
The alien function "GetMagickOptions" is undefined.

とビルド時にエラーになるのですが、imagemagick側のAPIの変更によるもののようです。
上記のCL Test Gridでも真っ赤。

のパッチを適用するとビルドできるようになります。

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

MagickWandの機能は一通り使えるようではありますが、SBCLだとfloating-point-invalid-operationが飛んだりするので、sb-int:with-float-traps-maskedで囲ってやったりする必要があるみたいです。

(lisp-magick:with-magick-wand (w :create 256 150 :comp (0 0 0))
  (lisp-magick:magick-write-image w "/tmp/foo.png"))

(sb-int:with-float-traps-masked (:invalid) (lisp-magick:with-magick-wand (w :load "/tmp/foo.png") (lisp-magick:magick-identify-image w))) ;=> "Image: /tmp/foo.png ; Format: PNG (Portable Network Graphics) ; Class: PseudoClass ; Geometry: 256x150+0+0 ; Resolution: 72x72 ; Print size: 3.55556x2.08333 ; Units: Undefined ; Type: Bilevel ; Base type: Bilevel ; Endianess: Undefined ; Colorspace: Gray ; Depth: 8/1-bit ; Channel depth: ; gray: 1-bit ; Channel statistics: ; Gray: ; min: 0 (0) ; max: 0 (0) ; mean: 0 (0) ; standard deviation: 0 (0) ; kurtosis: 0 ; skewness: 0 ; Colors: 1 ; Histogram: ; 38400: ( 0, 0, 0) #000000 gray(0,0,0) ; Colormap: 2 ; 0: ( 0, 0, 0) #000000 gray(0,0,0) ; 1: (255,255,255) #FFFFFF gray(255,255,255) ; Rendering intent: Perceptual ; Gamma: 0.45455 ; Chromaticity: ; red primary: (0.64,0.33) ; green primary: (0.3,0.6) ; blue primary: (0.15,0.06) ; white point: (0.3127,0.329) ; Interlace: None ; Background color: gray(255,255,255) ; Border color: gray(223,223,223) ; Matte color: gray(189,189,189) ; Transparent color: gray(0,0,0) ; Compose: Over ; Page geometry: 256x150+0+0 ; Dispose: Undefined ; Iterations: 0 ; Compression: Zip ; Orientation: Undefined ; Properties: ; date:create: 2014-08-15T09:56:26+09:00 ; date:modify: 2014-08-15T09:56:26+09:00 ; png:bKGD : chunk was found (see Background color, above) ; png:cHRM : chunk was found (see Chromaticity, above) ; png:gAMA : gamma=0.45454544 (See Gamma, above) ; png:IHDR.bit_depth : 1 ; png:IHDR.color_type : 0 (Grayscale) ; png:IHDR.interlace_method: 0 (Not interlaced) ; png:IHDR.width,height : 256, 150 ; png:pHYs : x_res=72, y_res=72, units=0 ; png:sRGB : intent=0 (See Rendering intent) ; signature: d8b443032200e143b1c49820b6d78c32d519553a3f63a38f48e8bc31da084f0a ; Tainted: False ; Filesize: 193B ; Number pixels: 38.4K ; Pixels per second: 0B ; User time: 0.000u ; Elapsed time: 0:01.000 ; Version: ImageMagick 6.7.7-10 2014-06-29 Q16 http://www.imagemagick.org ; "

インストール時に適用した問題が既に2012年の問題だったことからして、このライブラリはメンテナンスされなくなって久しいようです。

まとめ

 今回は、lisp-magickを紹介してみました。
cl-imagemagick等、類似のものがあるのでこちらも試してみたいところ。

comments powered by Disqus