ImageMagick-6.9.0-7差分

ImageMagick-6.9.0-6差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.0-7

まとめ

  • 6.9.0-5 でデグレードした線が細くなる問題の修正
  • キャプションの文字が領域に収まらない(?)問題

差分

ChangeLogにない差分
  • coders/palm.c
    • BPP チェックを範囲 1から16という大雑把なのから 1,2,4,8,16 のいずれかにした。
<     if ((bits_per_pixel == 0) || (bits_per_pixel > 16))
<       ThrowReaderException(CorruptImageError,"ImproperImageHeader");
---
>     if ((bits_per_pixel != 1) && (bits_per_pixel != 2) &&
>         (bits_per_pixel != 4) && (bits_per_pixel != 8) &&
>         (bits_per_pixel != 16))
    • version チェック、compressionType チェックを追加。
>     if ((version != 0) && (version != 1) && (version != 2))
>       ThrowReaderException(CorruptImageError,"FileFormatVersionMismatch");
332a336,339
>     if ((compressionType != PALM_COMPRESSION_NONE) &&
>         (compressionType != PALM_COMPRESSION_SCANLINE ) &&
>         (compressionType != PALM_COMPRESSION_RLE))
>     if (image_info->ping != MagickFalse)
>       {
>         (void) CloseBlob(image);
>         return(image);
>       }
  • magick/composite-private.h
    • どこかでガンマ値を書け忘れてた?
55a56
>     gamma,
62a64,65
>   gamma=Sa*(-Da)+Sa+Da;
>   gamma=PerceptibleReciprocal(gamma);
66c69
<   SetPixelRed(composite,MagickOver_((MagickRealType)
---
>   SetPixelRed(composite,gamma*MagickOver_((MagickRealType)
---
<   composite->red=MagickOver_(p->red,alpha,q->red,beta);
<   composite->green=MagickOver_(p->green,alpha,q->green,beta);
<   composite->blue=MagickOver_(p->blue,alpha,q->blue,beta);
---
>   composite->red=gamma*MagickOver_(p->red,alpha,q->red,beta);
>   composite->green=gamma*MagickOver_(p->green,alpha,q->green,beta);
>   composite->blue=gamma*MagickOver_(p->blue,alpha,q->blue,beta);
  • ImageMagick-6.9.0-7/magick/morphology.c
    • 違うピクセルを数える時の透明度を比較する際に透明度が有効か(matte)をチェックするようにした。
<             || ( p[r].opacity != GetPixelOpacity(q))
<             || ( image->colorspace == CMYKColorspace &&
<                 GetPixelIndex(p_indexes+r) != GetPixelIndex(q_indexes+y) ) )
---
>             || ( (image->matte != MagickFalse) &&
>                  (p[r].opacity != GetPixelOpacity(q)))
>             || ( (image->colorspace == CMYKColorspace) &&
>                  (GetPixelIndex(p_indexes+r) != GetPixelIndex(q_indexes+y)))
  • magick/property.c
    • EXIF データのタグを取得する際に5文字以下ならエラーにする。
  /*
    If EXIF data exists, then try to parse the request for a tag.
  */
  profile=GetImageProfile(image,"exif");
  if (profile == (const StringInfo *) NULL)
    return(MagickFalse);
  if ((property == (const char *) NULL) || (*property == '\0'))
    return(MagickFalse);
  while (isspace((int) ((unsigned char) *property)) != 0)
    property++;
  if (strlen(property) <= 5)
    return(MagickFalse);
||
- Magick++/lib/Image.cpp
--  Lock の呼び方が変わってる
>|c++|
<   Lock(&_blobRef->_mutexLock);
---
>   Lock lock(&_blobRef->_mutexLock);
    • Image::repace() を追加。
> void Magick::Image::repage()
> {
>   modifyImage();
>   options()->page(Geometry());
>   image()->page.width = 0;
>   image()->page.height = 0;
>   image()->page.x = 0;
>   image()->page.y = 0;
> }

ChangeLog

2015-02-22  6.9.0-7 Cristy  <quetzlzacatenango@image...>
  * New version 6.9.0-7, SVN revision 18067.

2015-02-15  6.9.0-7 Cristy  <quetzlzacatenango@image...>
  * Line strokes appeared too thin (reference
    http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=26927).
  * Keep text in caption area (reference
    http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22504).