GD

 view release on metacpan or  search on metacpan

ChangeLog  view on Meta::CPAN

2.91    * t/affine.t: compare affineInvert(scale(2,3))'s result with an
          epsilon (1e-6) instead of exact is_deeply, since -Duselongdouble
          perls compute the division in extended precision, giving a
          last-few-ULP-different 1/3 than a plain double (GH #68).
        * Bumped $VERSION in GD::Image, GD::Image_pm.PL and GD::Polygon to
          2.91, in sync with GD.pm; these were left un-bumped in 2.90.
2.90    * Add JXL, UHDR support for new libgd-2.4.0 (from git)
          - JXL: newFromJxl/newFromJxlData readers, jxl() writer
            (lossless/distance/effort), magic-byte autodetection in new().
          - UHDR: new GD::UHDR class (newFromFile/newFromData, width/height/
            hasGainMap, resize/crop/rotate/mirror, file/write, getSdr).
          - Work around libgd 2.4.0 gd.h no longer declaring gdImageBoundsSafe().
        * IMAGEQUANT: trueColorToPaletteSetMethod/SetQuality and the
          GD_QUANT_* constants for the libimagequant-backed quantizer.
	  Guard for installations without libimagequant.
          Fix imagequant feature autodetection in Makefile.PL (libimagequant
          surfaces in gdlib.pc's Libs.private, not Requires.private).
        * Embed rpath (Linux) and fix stale blib/lib/GD/Image.pm so
          'make test' reliably exercises the just-configured libgd
          (GH #21 test infra); fix GD_LIQ detection from the deprecated
          gdlib-config script.
        * Add Affine transformations (GH #21): GD::Image affine matrix
          builders (affineIdentity/Scale/Rotate/ShearHorizontal/
          ShearVertical/Translate/Concat/Invert/Flip/Expansion/
          Rectilinear/Equal/ApplyToPoint) and transformAffineGetImage/
          transformAffineCopy/transformAffineBoundingBox, wrapping
          gdAffine*/gdTransformAffine* (libgd >= 2.1.0). Fix GD_AFFINE_*
          constant visibility (same enum/#ifdef issue as GD_QUANT_*).
        * Add more previously-unbound libgd methods (libgd >= 2.1.0 unless
          noted): paletteToTrueColor, crop, cropAuto, cropThreshold,
          colorReplace, colorReplaceArray, colorReplaceThreshold,
          convolution, resolution; cloneImage, getTrueColorPixel,
          perceptualDiff (libgd >= 2.4.0). clone() now uses the native
          gdImageClone() when available, fixing truecolor-ness loss on
          the old new()+copy() fallback. Fix GD_CROP_* constant
          visibility (same enum/#ifdef issue as GD_QUANT_*).
        * Animated WebP support (libgd >= 2.4.0): new GD::WebpAnimWriter
          (new/addImage/finish, wrapping gdWebpWriteOpenPtr/AddImage/
          PtrFinish) and GD::WebpAnimReader (newFromData/info/nextImage,
          wrapping gdWebpReadOpenCtx/GetInfo/NextImage) classes.
        * Animated/multi-image JXL support (libgd >= 2.4.0): new
          GD::JxlAnimWriter (new/addImage/finish, wrapping
          gdJxlWriteOpenPtr/AddImage/PtrFinish) and GD::JxlAnimReader
          (newFromData/info/nextImage, wrapping gdJxlReadOpenCtx/
          GetInfo/NextImage) classes, mirroring GD::WebpAnimReader/Writer.
        * Multi-page TIFF support (libgd >= 2.4.0): new
          GD::TiffMultiWriter (new/addImage/finish, wrapping
          gdTiffWriteOpenPtr/AddImage/PtrFinish) and GD::TiffMultiReader
          (newFromData/info/nextImage, wrapping gdTiffReadOpenCtx/
          GetInfo/NextImage) classes, mirroring GD::WebpAnimReader/Writer
          (pages have no per-page delay; nextImage() returns a
          page-info hashref instead). Also adds the GD_TIFF_* writer
          option constants (colorspace, compression, resolution unit,
          alpha type).
        * Per-format header introspection (libgd >= 2.4.0): new
          GD::Image->pngInfoData/jpegInfoData/gifInfoData/bmpInfoData/
          avifInfoData/heifInfoData class methods, wrapping
          gd{Png,Jpeg,Gif,Bmp,Avif,Heif}GetInfoCtx. Each reads just the
          container facts (dimensions, bit depth, and similar) from an
          in-memory buffer without fully decoding the image.
        * Fixed a longstanding bug in the in-memory gdIOCtx used by every
          newFrom*Data()/*InfoData() method: its getC() callback never
          advanced the read position, so any decoder reading a buffer
          byte-by-byte (as the new bmpInfoData()'s BMP header parser
          does) would spin re-reading the first byte forever. PNG, JPEG,
          GIF, WebP, TIFF, JXL, AVIF and HEIF decoding were unaffected
          because they read through the bulk getBuf() callback instead,
          which was already correct.
        * Worked around inconsistent success/failure return conventions
          across libgd's new Get*InfoCtx functions: gdPngGetInfoCtx,
          gdJpegGetInfoCtx, gdAvifGetInfoCtx and gdHeifGetInfoCtx all
          return 0 on success despite two of their own header comments
          claiming the opposite, while gdGifGetInfoCtx and
          gdBmpGetInfoCtx return 1 on success as documented.
2.87    * fix OpenBSD support (Alexander Bluhm, PR #63)
        * fix $image->compare() usages (Alexander Bluhm, PR #65, #64)
        * fix tiff test without libimagequant (Alexander Bluhm, PR #66)
2.86    * Fix CVE-2026-11526, command injection via 2-arg open() in _make_filehandle.
	  CWE-78, CWE-73 (Reported and fixed by Paul Johnson)
2.85    * Tolerate runtime TIFF decode failures in autodetect (GH #62)
	* Replace cpm with cpanm in github actions
	* Fixed a minor precedence bug in t/z_manifest.t
2.84    * Added Makefile.PL --with and --without options to bypass autodetection
	  errors or upstream libgd or subsequent library errors, as
	  libtiff 4.5.1+git230720 wrongly packaged on ubuntu/debian (GH #55).
	* Better support MSWin32 without gdlib.pc. Requires manual --options and
	  --lib_gd_path.
	* Workaround broken ExtUtils::PkgConfig->find (GH #61)
	* Fixed snprintf for newer MSVC (>= VS 2015)
	* Added GD::Image::supported() image types method.
	* Added newFromTiffData() method.
	* Fixed t/GD.t for unsupported image types.
	* Add GIFANIM to the default since 2.0.33 (PeterCJ GH #56)
	* Honor PKG_CONFIG_PATH for finding gdlib.pc (PeterCJ GH #57)
	* Add demos/png2jpeg.pl
2.83    * Fix missing PNG regression (RT #153923) on old
          systems without the .pc, but gdlib-config. The check was too strict.
          Requires now File::Which.
2.82    * Improve HEIF/AVIF autodetection (RT #153305) by Yuriy Yevtukhov.
	* Fix strawberryperl default libgd path (shawnlaffan PR #54)
	* Fix AVIF and Webp autodetection in tests (shawnlaffan PR #54)
2.81    * Change GD::Polygon::transform to match old demos (RT #140043),
          and GD::Polyline.
          Add GD::Polygon::rotate(cw-radian) helper.
          Allow GD::Polygon::scale(2.0).
2.80    * Fix broken copyTranspose and copyReverseTranspose (RT #153300)
          by Yuriy Yevtukhov.
        * Add transformation tests
        * Fix wrong WBMP name and detection
        * Fix wrong filename extension auto-detection for gd,gd2,wbmp
        * Fix wrong filename extension auto-detection for xpm,
          newFromXpm needs the filename, not handle.
        * Fix wrong libgd doc link (PR #52) by Tsuyoshi Watanabe
2.79    * Improve image type autodetection (RT #153212), add a test
        * Fix Avif without Heif config
        * Improve gdlib.pc reader for supported library features
2.78    * Fix Use of uninitialized value $pkg in concatenation warning
          (RT #148899 and GH #47). Thanks to ppisar for the analysis.
          Adds a new hard Test::NoWarnings test requirement.
2.77    * add BMP support with libgd 2.1.0, PR #49 by PeterCJ
        * don't link to -lXPM without XPM nor X11, GH #45
        * rename ANIMGIF feature to GIFANIM
        * fix unused variable failure in GH CI, RT #141125 by PhilterPaper
2.76    * fix broken TIFF and AVIF support, PR #43 by Paul Howarth
        * re-enable XBM support (always on)
        * provide xbm magic support (a hack, for GD::Graph)
2.75    * add experimental support for TIFF and RAQM (with freetype)
        * improve GD2 tests (GH #42, RT #140856)
        * also list the unsupported image formats in the GD::Image pod
        * fix copyRotated pod (it rotates CCW) PR #36 by LorenzoTo



( run in 2.105 seconds using v1.01-cache-2.11-cpan-bbc515a03b3 )