Commit 86455caf9 for imagemagick.org
commit 86455caf9e42b63476b87ef89efab1282db668ff
Author: Greg B <64932474+gregbenz@users.noreply.github.com>
Date: Mon Sep 7 15:43:47 2026 -0500
Fix grayscale Ultra HDR base encoding (#8945)
diff --git a/coders/uhdr.c b/coders/uhdr.c
index 133d436b4..d590f75a1 100644
--- a/coders/uhdr.c
+++ b/coders/uhdr.c
@@ -1000,6 +1000,7 @@ static StringInfo *EncodeBaseImageProfile(const ImageInfo *image_info,
(void) CopyMagickString(base_info->filename,"JPEG:uhdr-base.jpg",
MagickPathExtent);
(void) CopyMagickString(base_info->magick,"JPEG",MagickPathExtent);
+ base_info->type=TrueColorType;
if (image->quality > 0)
base_info->quality=image->quality;
(void) CopyMagickString(base_image->magick,"JPEG",MagickPathExtent);
diff --git a/tests/cli-uhdr-encoder.tap b/tests/cli-uhdr-encoder.tap
index 02e35f002..c89b84d23 100755
--- a/tests/cli-uhdr-encoder.tap
+++ b/tests/cli-uhdr-encoder.tap
@@ -9,11 +9,13 @@ encoder_hdr=cli-uhdr-encoder-hdr.miff
pattern_output=cli-uhdr-encoder-pattern-%d.jpg
pattern_first=cli-uhdr-encoder-pattern-0.jpg
pattern_wrong=cli-uhdr-encoder-pattern-1.jpg
+gray_source=cli-uhdr-encoder-gray-source.jpg
+gray_roundtrip=cli-uhdr-encoder-gray-roundtrip.jpg
cleanup()
{
rm -f "$encoder_error" "$encoder_sdr" "$encoder_hdr" \
- "$pattern_first" "$pattern_wrong"
+ "$pattern_first" "$pattern_wrong" "$gray_source" "$gray_roundtrip"
}
cleanup
@@ -33,7 +35,7 @@ if ! ${MAGICK} -list configure 2>/dev/null | awk '
exit 0
fi
-echo "1..6"
+echo "1..7"
if ! ${MAGICK} "${SRCDIR}/rose.pnm" -depth 8 "$encoder_sdr" \
>/dev/null 2>&1 ||
! ${MAGICK} "${SRCDIR}/rose.pnm" -depth 16 "$encoder_hdr" \
@@ -95,5 +97,26 @@ else
pattern_wrong_size=`wc -c < "$pattern_wrong" 2>/dev/null`
echo "# destination changed or is missing (size=$pattern_wrong_size)"
fi
+
+if ! ${MAGICK} \( "${SRCDIR}/rose.pnm" -colorspace Gray -colorspace sRGB \
+ -type TrueColor -depth 8 \) \
+ \( "${SRCDIR}/rose.pnm" -colorspace Gray -colorspace sRGB \
+ -type TrueColor -depth 16 \) \
+ -define uhdr:hdr-color-transfer=linear "UHDR:$gray_source" \
+ >/dev/null 2>&1 || \
+ ! ${MAGICK} -define uhdr:output-color-transfer=linear \
+ "UHDR:$gray_source" null: >/dev/null 2>&1; then
+ echo "Bail out! unable to create or decode grayscale UHDR source"
+ cleanup
+ exit 0
+fi
+
+if ${MAGICK} "$gray_source" "$gray_roundtrip" >/dev/null 2>&1 && \
+ ${MAGICK} -define uhdr:output-color-transfer=linear \
+ "UHDR:$gray_roundtrip" null: >/dev/null 2>&1; then
+ echo "ok - grayscale UHDR roundtrip decodes as linear HDR"
+else
+ echo "not ok - grayscale UHDR roundtrip decodes as linear HDR"
+fi
cleanup
: