読者です 読者をやめる 読者になる 読者になる

AnimeFace-RubyをImageMagick Q16でも動くようにした

animeface

Q8のImageMagickでしか動いていなかったので、Q16でも動くようにしました。
AnimeFace-Ruby.tar.gz
ImageMagickには、Q8、Q16などと呼ばれるバージョンがあって、これは画像の内部形式のビット深度(bit depth)の違いを表しています。Q8では画素が0〜255の数値になっているのに対して、Q16では0〜65535になっています。AnimeFaceのライブラリでは、画素を0〜255(の実数)で扱っているので、depthによっては変換が必要です。しかし、RMagickのImage#depthがQ16でもなぜか8を返してきてて(正しくは16でしょうー)、判定ができていなかったのをMagick::QuantumDepth(これは正しい値が返ってくる)で判定するように変更しています。Magick::QuantumDepthは定数です。このため、set_channel_depthなどで実行時にdepthを変えると動きません。ひどい対応ですが、ImageMagickはQ16が標準的なものらしいので必要と思いこの対応を入れています。