ImageMagick-6.9.10-28差分

ImageMagick-6.9.10-28差分

http://www.imagemagick.org/script/download.php
The latest release of ImageMagick is version 6.9.10-28

7 系同時リリースは ImageMagick-7.0.8-28

まとめ

気になる事

差分

  • WebP で -define webp:use-sharp-yuv=1 指定ができるように。
    • 実験用PNG素材

f:id:yoya:20190218235913p:plain
convert -size 256x256 xc:white -stroke red -draw "line 128 0 128 256 line 0 128 256 128 " red-line.png

    • WebP への変換結果。左が今までの。右は -define webp:use-sharp-yuv=1 指定。

f:id:yoya:20190218235714p:plain
-define webp:use-sharp-yuv=1 の検証

    • WebPの弱点として有名な色のくすみが大分改善される。なお少しだけファイルサイズ増える。(libwebp 的には v6.0.0 からの機能なので実は数年前からあります)
  • もう少し詳細 >

qiita.com

ChangeLog にない差分

<    #'CC' => 'gcc',
>    #'CC' => 'gcc -std=gnu99 -std=gnu99',
<    'PERLMAINCC'       => ' ',
>    'PERLMAINCC'       => ' -fopenmp',
  • PerlMagick/t/input.fits
大量のバイナリ差分
  • coders/cin.c
726a727,728
>   if (((MagickSizeType) image->columns*image->rows/8) > GetBlobSize(image))
>     ThrowReaderException(CorruptImageError,"InsufficientImageDataInFile");

- 
>       {
>         image->colors++;
1292a1295
>       }
  • coders/heic.c
    • coder のバージョンを設定。
395a396,398
> #if defined(LIBHEIF_VERSION)
>   entry->version=ConstantString(LIBHEIF_VERSION);
> #endif
  • coders/miff.c
    • 明示的なキャストを追加
    • 画像のパラメータチェックをより厳密に
    • LZMAMaxExtent の利用。
228,229c228,230
<           *index=ConstrainColormapIndex(image,((size_t) *p << 24) |
<             ((size_t) *(p+1) << 16) | ((size_t) *(p+2) << 8) | (size_t) *(p+3));
---
>           *index=ConstrainColormapIndex(image,(ssize_t) (((size_t) *p << 24) |
>             ((size_t) *(p+1) << 16) | ((size_t) *(p+2) << 8) |
>             (size_t) *(p+3)));
235c236
<           *index=ConstrainColormapIndex(image,(*p << 8) | *(p+1));
---
>           *index=ConstrainColormapIndex(image,(ssize_t) ((*p << 8) | *(p+1)));
241c242
<           *index=ConstrainColormapIndex(image,*p);
---
>           *index=ConstrainColormapIndex(image,(ssize_t) *p);
1116c1117
<     if ((LocaleCompare(id,"ImageMagick") != 0) || (image->depth > 128) ||
---
>     if ((LocaleCompare(id,"ImageMagick") != 0) ||
1120c1121,1122
<         (image->columns == 0) || (image->rows == 0))
---
>         (image->columns == 0) || (image->rows == 0) ||
>         (image->depth == 0) || (image->depth > 64))
1332a1335,1336
>     if (compress_extent < (packet_size*image->columns))
>       ThrowMIFFException(ResourceLimitError,"MemoryAllocationFailed");
1598c1602
<           extent=x;
---
>           extent=(size_t) x;
2619c2623
<             lzma_info.avail_out=packet_size*image->columns;
---
>             lzma_info.avail_out=LZMAMaxExtent(packet_size*image->columns);
  • coders/mpc.c
    • 画像のパラメータチェックをより厳密に
768c768
<     if ((LocaleCompare(id,"MagickCache") != 0) || (image->depth > 128) ||
---
>     if ((LocaleCompare(id,"MagickCache") != 0) ||
770,771c770,772
<         (image->compression == UndefinedCompression) || (image->columns == 0) ||
<         (image->rows == 0))
---
>         (image->compression == UndefinedCompression) ||
>         (image->columns == 0) || (image->rows == 0) ||
>         (image->depth == 0) || (image->depth > 64))
  • coders/mvg.c
--  mvg:vector-graphics の処理を追加。
--  ExpandBuffer の引数を逆に。掛け算の順序が変わるだけで影響はない?
>|c|
244c244
<   (void) SetImageArtifact(image,"MVG",draw_info->primitive);
---
>   (void) SetImageArtifact(image,"mvg:vector-graphics",draw_info->primitive);
356c356
<   value=GetImageArtifact(image,"MVG");
---
>   value=GetImageArtifact(image,"mvg:vector-graphics");
  • coders/pict.c
    • const 修飾追加。
329,330c329,330
< static unsigned char *ExpandBuffer(unsigned char *pixels,
<   MagickSizeType *bytes_per_line,const unsigned int bits_per_pixel)
---
> static const unsigned char *ExpandBuffer(const unsigned char *magick_restrict pixels,
>   const unsigned int bits_per_pixel,MagickSizeType *bytes_per_line)
331a332,334
>   register const unsigned char
>     *p;
>
336d338
<     *p,
405a408,410
>   register const unsigned char
>     *p;
>
410d414
<     *p,
482c486
<         p=ExpandBuffer(scanline,&number_pixels,bits_per_pixel);
---
>         p=ExpandBuffer(scanline,bits_per_pixel,&number_pixels);
521c525
<           p=ExpandBuffer(scanline+j+1,&number_pixels,bits_per_pixel);
---
>           p=ExpandBuffer(scanline+j+1,bits_per_pixel,&number_pixels);
531c535
<           p=ExpandBuffer(scanline+j+1,&number_pixels,bits_per_pixel);
---
>           p=ExpandBuffer(scanline+j+1,bits_per_pixel,&number_pixels);
(略)
  • coders/svg.c
    • trim 後に length が 0 の時は失敗と同じ処理
    • mvg:vector-graphics 対応。
681c681,682
<   if (trim != MagickFalse)
---
>   length=strlen(message);
>   if ((trim != MagickFalse) && (length != 0))
686d686
<       length=strlen(message);
4139c4139
<   value=GetImageArtifact(image,"MVG");
---
>   value=GetImageArtifact(image,"mvg:vector-graphics");
-- 
>|c|
1923a1924
>         (void) SetImageStorageClass(image,DirectClass);
1954c1955,1957
<             if (image->matte != MagickFalse)
---
>             if (image->matte == MagickFalse)
>               SetPixelOpacity(q,OpaqueOpacity);
>             else
2057a2061
>                   SetPixelOpacity(q,OpaqueOpacity);
2095a2100
>         (void) SetImageStorageClass(image,DirectClass);
2127c2132,2134
<             if (image->matte != MagickFalse)
---
>             if (image->matte == MagickFalse)
>               SetPixelOpacity(q,OpaqueOpacity);
>             else
  • coders/webp.c
    • バージョンによる機能切り替えの修正。
484,486c484,486
<     (WebPGetDecoderVersion() >> 16) & 0xff,
<     (WebPGetDecoderVersion() >> 8) & 0xff,
<     (WebPGetDecoderVersion() >> 0) & 0xff,WEBP_DECODER_ABI_VERSION);
---
>     (WebPGetEncoderVersion() >> 16) & 0xff,
>     (WebPGetEncoderVersion() >> 8) & 0xff,
>     (WebPGetEncoderVersion() >> 0) & 0xff,WEBP_ENCODER_ABI_VERSION);
552c552
< #if WEBP_DECODER_ABI_VERSION >= 0x0100
---
> #if WEBP_ENCODER_ABI_VERSION >= 0x0100
640c640
< #if WEBP_DECODER_ABI_VERSION >= 0x0100
---
> #if WEBP_ENCODER_ABI_VERSION >= 0x0100
669c669
< #if WEBP_DECODER_ABI_VERSION >= 0x0200
---
> #if WEBP_ENCODER_ABI_VERSION >= 0x0200
723c723
< #if WEBP_DECODER_ABI_VERSION >= 0x0201
---
> #if WEBP_ENCODER_ABI_VERSION >= 0x0201
736c736
< #if WEBP_DECODER_ABI_VERSION >= 0x020e
---
> #if WEBP_ENCODER_ABI_VERSION >= 0x020e
834c834
< #if WEBP_DECODER_ABI_VERSION >= 0x0100
---
> #if WEBP_ENCODER_ABI_VERSION >= 0x0100
  • coders/wpg.c
    • カラーマップのサイズ変更の処理をエラー対処つきで。
1113a1114
>   image->storage_class=DirectClass;
1172c1173
<               if (!AcquireImageColormap(image,image->colors))
---
>               if (AcquireImageColormap(image,image->colors) == MagickFalse)
1259,1260c1260,1276
<                       image->colormap=(PixelPacket *) ResizeQuantumMemory(
<                         image->colormap,(size_t) (one << bpp),
---
>                     {
>                       PixelPacket
>                         *colormap;
>
>                       size_t
>                         colors;
>
>                       colormap=image->colormap;
>                       colors=image->colors;
>                       image->colormap=(PixelPacket *) NULL;
>                       if (AcquireImageColormap(image,one << bpp) == MagickFalse)
>                         {
>                           colormap=(PixelPacket *)
>                             RelinquishMagickMemory(colormap);
>                           goto NoMemory;
>                         }
>                       (void) memcpy(image->colormap,colormap,colors*
1261a1278,1280
>                       colormap=(PixelPacket *)
>                         RelinquishMagickMemory(colormap);
>                     }
  • magick/annotate.c
    • リファイン?
1530a1531
>     glyph.image=0;
1716c1717,1718
<     if (last_glyph.id != 0)
---
>     if (last_glyph.image != 0)
>       {
1717a1720,1721
>         last_glyph.image=0;
>       }
1725,1726c1729,1733
<   if (last_glyph.id != 0)
<     FT_Done_Glyph(last_glyph.image);
---
>   if (glyph.image != 0)
>     {
>       FT_Done_Glyph(glyph.image);
>       glyph.image=0;
>     }
  • magick/draw.c
    • dash_pattern のオブジェクトサイズを大きめにとる。あとzero初期化も。
    • mvg:vector-graphics へのセット。
    • ConstrainCoordinate。値のクランプ
342c342
<       clone_info->dash_pattern=(double *) AcquireQuantumMemory((size_t) (x+1),
---
>       clone_info->dash_pattern=(double *) AcquireQuantumMemory((size_t) (2*x+2),
346a347,348
>       (void) memset(clone_info->dash_pattern,0,(size_t) (2*x+2)*
>         sizeof(*clone_info->dash_pattern));
1795d1796
<         n++;
2474c2475
<   (void) SetImageArtifact(image,"MVG",primitive);
---
>   (void) SetImageArtifact(image,"mvg:vector-graphics",primitive);
4907a4909,4917
> static inline double ConstrainCoordinate(double x)
> {
>   if (x < -SSIZE_MAX)
>     return(-SSIZE_MAX);
>   if (x > SSIZE_MAX)
>     return(SSIZE_MAX);
>   return(x);
> }
>
5049,5050c5059,5060
<   x=(ssize_t) ceil(primitive_info->point.x-0.5);
<   y=(ssize_t) ceil(primitive_info->point.y-0.5);
---
>   x=(ssize_t) ceil(ConstrainCoordinate(primitive_info->point.x-0.5));
>   y=(ssize_t) ceil(ConstrainCoordinate(primitive_info->point.y-0.5));
  • magick/image.c
  • -
1776c1776
<         offset+=strlen(pattern)-4;
---
>         offset+=strlen(pattern)-strlen(value)+3;
  • www/assets/magick.css
    • Bootstrap バージョン変更
2,4c2,4
<  * Bootstrap v4.2.1 (https://getbootstrap.com/)
<  * Copyright 2011-2018 The Bootstrap Authors
<  * Copyright 2011-2018 Twitter, Inc.
---
>  * Bootstrap v4.3.0 (https://getbootstrap.com/)
>  * Copyright 2011-2019 The Bootstrap Authors
>  * Copyright 2011-2019 Twitter, Inc.
6c6
  • www/assets/magick.js
    • Bootstrap バージョン変更
2,3c2,3
<   * Bootstrap v4.2.1 (https://getbootstrap.com/)
<   * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstr
ap/graphs/contributors)
---
>   * Bootstrap v4.3.0 (https://getbootstrap.com/)
>   * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstr
ap/graphs/contributors)
6c6

ChangeLog

2019-02-12  6.9.10-28 Cristy  <quetzlzacatenango@image...>
  * Fixed a number of issues (reference
    https://github.com/ImageMagick/ImageMagick/issues).