GraphicsMagick: 2 new changesets
GraphicsMagick Commits <[email protected]>
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.19933.1668959856.1567.graphicsmagick-commit@lists.sourceforge.net> |
changeset bdf7362c4a40 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=bdf7362c4a40 summary: coders/wpg.c Fix warning "mage->logging" changeset ba399a277070 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=ba399a277070 summary: Merge diffstat: ChangeLog | 5 ++ VisualMagick/installer/inc/version.isx | 4 +- coders/heif.c | 81 ++++++++++++++++++++++++++++++++++ coders/wpg.c | 6 +- magick/version.h | 4 +- www/Changelog.html | 11 ++++ 6 files changed, 104 insertions(+), 7 deletions(-) diffs (199 lines): diff -r 1976d2fdce7d -r ba399a277070 ChangeLog --- a/ChangeLog Sun Nov 20 12:25:33 2022 +0100 +++ b/ChangeLog Sun Nov 20 16:57:06 2022 +0100 @@ -1,3 +1,8 @@ +2022-11-20 Bob Friesenhahn <[email protected]> + + * coders/heif.c (ReadColorProfile): Support reading ICC color + profile. + 2022-11-20 Fojtik Jaroslav <[email protected]> coders/wpg.c Reveal more internal info to optional log. diff -r 1976d2fdce7d -r ba399a277070 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Sun Nov 20 12:25:33 2022 +0100 +++ b/VisualMagick/installer/inc/version.isx Sun Nov 20 16:57:06 2022 +0100 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020221119" -#define public MagickPackageReleaseDate "snapshot-20221119" +#define public MagickPackageVersionAddendum ".020221120" +#define public MagickPackageReleaseDate "snapshot-20221120" diff -r 1976d2fdce7d -r ba399a277070 coders/heif.c --- a/coders/heif.c Sun Nov 20 12:25:33 2022 +0100 +++ b/coders/heif.c Sun Nov 20 16:57:06 2022 +0100 @@ -133,6 +133,9 @@ ThrowReaderException(code_,reason_,image_); \ } while (0); +/* + Read metadata (Exif and XMP) +*/ static Image *ReadMetadata(struct heif_image_handle *heif_image_handle, Image *image, ExceptionInfo *exception) { @@ -237,6 +240,76 @@ return image; } + +/* + Read Color Profile +*/ +static Image *ReadColorProfile(struct heif_image_handle *heif_image_handle, + Image *image, ExceptionInfo *exception) +{ + struct heif_error + err; + + enum heif_color_profile_type + profile_type; /* 4 chars encoded into enum by 'heif_fourcc()' */ + + unsigned char + *profile; + + profile_type = heif_image_handle_get_color_profile_type(heif_image_handle); + + if (heif_color_profile_type_not_present == profile_type) + return image; + + if (image->logging && (heif_color_profile_type_not_present !=profile_type)) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + "Found color profile of type \"%c%c%c%c\")", + ((char) ((unsigned int) profile_type >> 24) & 0xff), + ((char) ((unsigned int) profile_type >> 16) & 0xff), + ((char) ((unsigned int) profile_type >> 8) & 0xff), + ((char) ((unsigned int) profile_type) & 0xff)); + + if (heif_color_profile_type_prof == profile_type) + { + size_t profile_size; + + profile_size = heif_image_handle_get_raw_color_profile_size(heif_image_handle); + + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + "Reading ICC profile with size %" MAGICK_SIZE_T_F "u bytes", + (MAGICK_SIZE_T) profile_size); + + if (profile_size > 0) + { + /* Allocate 'profile' buffer for profile */ + profile=MagickAllocateResourceLimitedArray(unsigned char*,profile_size, + sizeof(*profile)); + + if (profile == (unsigned char*) NULL) + ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,image); + + /* Copy ICC profile to 'profile' buffer */ + err = heif_image_handle_get_raw_color_profile(heif_image_handle, + profile); + if (err.code != heif_error_Ok) + { + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + "heif_image_handle_get_raw_color_profile() reports error \"%s\"", + err.message); + MagickFreeResourceLimitedMemory(profile); + ThrowReaderException(CorruptImageError, + AnErrorHasOccurredReadingFromFile,image); + + } + SetImageProfile(image,"ICM",profile,profile_size); + MagickFreeResourceLimitedMemory(profile); + } + } + return image; +} + /* This progress monitor implementation is tentative since it is not invoked @@ -416,12 +489,20 @@ "Matte: %s", image->matte ? "True" : "False"); } + /* Read EXIF and XMP profile */ if (!ReadMetadata(heif_image_handle, image, exception)) { HEIFReadCleanup(); return NULL; } + /* Read ICC profile */ + if (!ReadColorProfile(heif_image_handle, image, exception)) + { + HEIFReadCleanup(); + return NULL; + } + if (image_info->ping) { image->depth = 8; diff -r 1976d2fdce7d -r ba399a277070 coders/wpg.c --- a/coders/wpg.c Sun Nov 20 12:25:33 2022 +0100 +++ b/coders/wpg.c Sun Nov 20 16:57:06 2022 +0100 @@ -1278,7 +1278,7 @@ Header.MinorVersion=ReadBlobByte(image); Header.EncryptKey=ReadBlobLSBShort(image); Header.Reserved=ReadBlobLSBShort(image); - if(image->logging) LogHeaderWPG(Header); + if(logging) LogHeaderWPG(Header); if (Header.FileId!=0x435057FF || (Header.ProductType>>8)!=0x16) ThrowReaderException(CorruptImageError,ImproperImageHeader,image); @@ -1349,7 +1349,7 @@ BitmapHeader1.Depth=ReadBlobLSBShort(image); BitmapHeader1.HorzRes=ReadBlobLSBShort(image); BitmapHeader1.VertRes=ReadBlobLSBShort(image); - if(image->logging) LogWPGBitmapType1(BitmapHeader1); + if(logging) LogWPGBitmapType1(BitmapHeader1); if(BitmapHeader1.HorzRes && BitmapHeader1.VertRes) { @@ -1402,7 +1402,7 @@ BitmapHeader2.Depth=ReadBlobLSBShort(image); BitmapHeader2.HorzRes=ReadBlobLSBShort(image); BitmapHeader2.VertRes=ReadBlobLSBShort(image); - if(image->logging) LogWPGBitmapType2(&BitmapHeader2); + if(logging) LogWPGBitmapType2(&BitmapHeader2); image->units=PixelsPerCentimeterResolution; image->page.width=(unsigned int) diff -r 1976d2fdce7d -r ba399a277070 magick/version.h --- a/magick/version.h Sun Nov 20 12:25:33 2022 +0100 +++ b/magick/version.h Sun Nov 20 16:57:06 2022 +0100 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x272400 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 27,24,0 -#define MagickChangeDate "20221119" -#define MagickReleaseDate "snapshot-20221119" +#define MagickChangeDate "20221120" +#define MagickReleaseDate "snapshot-20221120" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r 1976d2fdce7d -r ba399a277070 www/Changelog.html --- a/www/Changelog.html Sun Nov 20 12:25:33 2022 +0100 +++ b/www/Changelog.html Sun Nov 20 16:57:06 2022 +0100 @@ -37,6 +37,17 @@ </div> <div class="document"> +<p>2022-11-20 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> +<blockquote> +<ul class="simple"> +<li><p>coders/heif.c (ReadColorProfile): Support reading ICC color +profile.</p></li> +</ul> +</blockquote> +<p>2022-11-20 Fojtik Jaroslav <<a class="reference external" href="mailto:JaFojtik%40yandex.com">JaFojtik<span>@</span>yandex<span>.</span>com</a>></p> +<blockquote> +<p>coders/wpg.c Reveal more internal info to optional log.</p> +</blockquote> <p>2022-11-19 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> <blockquote> <ul class="simple">