GraphicsMagick ChangeLog
2026-01-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/heif.c (ReadHEIFImageFrame): Fix opacity code for monochrome HEIF image. Use union for plane pointer access.
2026-01-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/heif.c: Add preliminary support for a "MP4" coder.
configure.ac: Add a check for libheif/heif_sequences.h.
2026-01-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
magick/blob.c: Restore use of externally allocated stdio vbuf. It appears that some versions of GNU libc (e.g. 2.31) may attempt to access bytes in a self-allocated vbuf which were not initialized. Should close oss-fuzz issues 475333713, 475305110, and 475335803.
2026-01-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
PerlMagick/t/heif: Add some sample images for AVCI, AVIF, and HEIC.
coders/heif.c (ReadHEIFImageFrame): Throw exception rather than abort if heif_image_get_plane_readonly2() returns NULL. (RegisterHEIFImage): Add coder registrations for "AVCI" and "AVIF".
2026-01-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
Magick++/lib/Thread.cpp (Magick::MutexLock::~MutexLock): Fix Coverity "CID 501168: Error handling issues (UNCAUGHT_EXCEPT)". C++ destructors should not throw exceptions.
PerlMagick/Magick.xs: Fixes so PerlMagick can build with C++.
coders/heif.c (ReadHEIFImage): Log the 'magick' string assignment.
magick/magick.c (MagickToMime): Add more MIME mappings.
coders/heif.c (IsHEIF): Use heif_check_filetype() to verify that the input appears to be HEIF.
2026-01-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/heif.c (ReadHEIFImage): Support accessing file data directly from in-memory blob. Add a simple header sanity check.
magick/blob.c (OpenBlob): Have setvbuf() allocate the buffer rather than managing it independently.
coders/heif.c (ReadHEIFImage): Support reading multiple image frames. Deduce image magick string by asking libheif what it is.
2026-01-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
Magick++/lib/Image.cpp (Magick::Image::monochrome): If monochrome is disabled, then clear the image is_monochrome flag if it is set. This may help for issues such as SourceForge issue #397 "DIB: Unable to write a monochrome DIB as 8bit depth.".
coders/dib.c (WriteDIBImage): Add tracing to reveal the image storage representation.
NEWS.txt: Update the news.
Magick++/lib/Magick++/Thread.h, Magick++/lib/Thread.cpp: Change definition used to enable pthreads support from HasPTHREADS to HAVE_PTHREAD. Magick++ code relying on this has not been thread-safe since 2003! Much thanks to Michael Stephan for making me aware of this.
coders/wbmp.c (RegisterWBMPImage): Support "WBM" and "WBP" as extensions for WBMP format. Resolves SourceForge issue #192 "can not open *.wbm".
2026-01-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/jpeg.c (ReadJPEGImage): While in ping mode, set is_grayscale true for JCS_GRAYSCALE images, and otherwise set is_grayscale and is_monochrome to false. This should help GetImageCharacteristics() report something useful while in ping mode. Resolves SourceForge issue "#614 ping(blob) reports JPG and JNX files as monochrome BilevelType".
2026-01-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
coders/jp2.c (WriteJP2Image): Specifying '-define jp2:rate=1.0' is documented to use lossless compression (by removing the rate specification entirely), but this was not working properly. Fixed now.
2026-01-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
Copyright.txt: Updated copyright year. Rotated ChangeLog to ChangeLog.2025.
2026-01-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
wand/drawing_wand.c: The existing function bodies are gutted and replaced with calls into the equivalent functions in magick/draw.c. This eliminates a large amount of replicated code.
magick/draw.c (DrawCloneContext): New function to replicate (deep copy) an existing drawing context.