ImageMagick-6.8.6-10 差分
ImageMagick-6.8.6-9 差分 - yoyaのメモの続き
The latest release of ImageMagick is version 6.8.6-10.
まとめ
- SVG, MSL の初期化が何度でも動く問題 (複数スレッドで動かすとクラッシュしてた)
- 16bit PSD 画像で 257個以上の色を使うとクラッシュする問題の対処
- RGF (LEGO Mindstorms EV3 Robot Graphics File) 対応
- DDS (DirectDraw Surface) 対応
- libMagick++ の so 番号を 2 から 3 に更新 (ABI互換性が無くなった?)
- RGB 空間と互換と判断する色空間が増えてる。(IssRGBCompatibleColorspace)
- その他諸々
差分
- Added support for writing DDS files.
- Call SVG / MSL xmlCleanupParser() / xmlInitParser() once
- SVG と MSL で xmlCleanupParser() / xmlInitParser() を一度だけコールするようにした。(複数スレッドで SVG を読むとクラッシュしてた)
- http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=23991
- Support LEGO Mindstorms EV3 Robot Graphics File format (contributed by bdwheele@ind.../
- LEGO Mindstorms EV3 Robot Graphics のファイル形式をサポートした
- Since glib-2.35.0 g_type_init() was removed
- glib-2.35.0 以降で g_type_init() を削除
- https://bugs.gentoo.org/show_bug.cgi?id=481042
- #if !GLIB_CHECK_VERSION(2,5,0) + #if !GLIB_CHECK_VERSION(2,35,0) g_type_init(); #endif
- New identify define to output the location of the minimum, maximum, or mean pixel of the image (e.g. identify -define identify:locate=maximum -define identify:limit=7 rose).
- 新しい identify の define は画像ピクセルの minimum, maximum, mean を出力します。
- Column columns / rows no longer inverted for RGF image format (patch from Brian Wheeler
. - RGF 画像フォーマットで columns / rows がひっくり返る事がなくなりました。
- 16bit PSD images might have a 65536 colormap
- 16bit PSD 画像に対してカラーマップ 65536 個まで対応した。257個以上色を使うとクラッシュしていた。
- http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24102
- Ascii map is now declare as AsciiMap
- asciimap で宣言してたのを AsciiMap に修正。(コンパイルエラーになる)
- http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24106
- Return label for identify -format "%l"
- identity の -format "%l" でラベルを返すようにした。(convert ではちゃんとラベルが返ってた)
- http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24105
ChangeLog にない物
- CoderInfo クラスの拡張
- mimeType 文字列追加
- isMultiFrame メソッド追加
- libMagick++ の so 番号を 2 から 3 に更新 (map ファイルが VER2 から VER3 になってる)
- ColorCompliance 周りがかなり変わっている。(詳細は追ってない)
- config.guess の case から plan9 が消えてるけど、これはデフォルトで処理出来るって事?
- AccelerateConvolveImage に MagickExport も拡張子が付いた。(API で使えるようになった?)
- magick/identity に PrintChannelLocations 追加 (チャネル毎に最大/平均/最小の値を持つピクセルの位置を x, y でダンプする機能っぽい)
- RGB 空間の判断が少し広くなってる。(今回導入された DDS coder で IssRGBCompatibleColorspace を使ってて、他もそれに習った感じ)
static inline MagickBooleanType IssRGBColorspace( const ColorspaceType colorspace) { if ((colorspace == sRGBColorspace) || (colorspace == TransparentColorspace)) return(MagickTrue); return(MagickFalse); } static inline MagickBooleanType IssRGBCompatibleColorspace( const ColorspaceType colorspace) { if ((colorspace == sRGBColorspace) || (colorspace == RGBColorspace) || (colorspace == scRGBColorspace) || (colorspace == TransparentColorspace) || (IsGrayColorspace(colorspace) != MagickFalse)) return(MagickTrue); return(MagickFalse); }
- tiff で少し気になるコード変更
diff -rw ImageMagick-6.8.6-9/coders/tiff.c ImageMagick-6.8.6-10/coders/tiff.c 3070,3073c3070 < rows_per_strip=1; < if (TIFFScanlineSize(tiff) != 0) < rows_per_strip=(uint32) MagickMax((size_t) TIFFDefaultStripSize(tiff,0), < 1); --- > rows_per_strip=TIFFDefaultStripSize(tiff,0); 3182a3180,3183 > if (rows_per_strip < 1) > rows_per_strip=1; > if ((image->rows/rows_per_strip) >= (1UL << 15)) > rows_per_strip=(image->rows >> 15); diff -rw ImageMagick-6.8.6-9/coders/tim.c ImageMagick-6.8.6-10/coders/tim.c 183a184 > image->depth=8;
- magick/fourier.c に意味不明なコードが
/* Normalize inverse transform. */ i=0L; gamma=PerceptibleReciprocal((double) fourier_info->width* fourier_info->height); for (y=0L; y < (ssize_t) fourier_info->height; y++) for (x=0L; x < (ssize_t) fourier_info->center; x++) { #if defined(MAGICKCORE_HAVE_COMPLEX_H) forward_pixels[i]*=gamma; #else forward_pixels[i][0]*=gamma; forward_pixels[i][1]*=gamma; #endif i++; }
-
- height*center を先に計算すれば1重ループに出来そうだけど。何か理由があるんだろうか。
ChangeLog
Added support for writing DDS files. 2013-08-29 6.8.6-10 Cristy <quetzlzacatenango@image...> Call SVG / MSL xmlCleanupParser() / xmlInitParser() once (reference http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=23991). Support LEGO Mindstorms EV3 Robot Graphics File format (contributed by bdwheele@ind.../ Since glib-2.35.0 g_type_init() was removed (reference https://bugs.gentoo.org/show_bug.cgi?id=481042). New identify define to output the location of the minimum, maximum, or mean pixel of the image (e.g. identify -define identify:locate=maximum -define identify:limit=7 rose). Column columns / rows no longer inverted for RGF image format (patch from Brian Wheeler <bdwheele@india...>. 16bit PSD images might have a 65536 colormap (reference http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24102). Ascii map is now declare as AsciiMap (reference http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24106). Return label for identify -format "%l" (reference http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24105).
備考
- Return label for identify -format "%l"
By default we "ping" an image. That is, read certain meta information about the image and bail before we read the image pixels. This makes reading images very fast and consumes few resources. Unfortunately the label information is not available when pinging PNG images, thus the +ping requirement. This is specific to PNG which locates the label after the image pixels (DAT section).
+ping 指定すると IDAT(画像)チャンクまで読んだら後を切り捨てるので、その後ろに DAT セクションがあっても読まないので、ラベルが取れない事があるらしい。