Set BackgroundDispose for animated JXL frames with alpha (#8635)

JXL delivers fully coalesced frames where each frame is a complete
independent image. Without setting dispose, converting transparent
animated JXL to GIF/WebP/MNG causes frames to accumulate instead
of replacing, making previous frames bleed through transparent areas.
This commit is contained in:
Madars
2026-03-24 13:54:06 +02:00
committed by GitHub
parent 5c38bb6f21
commit e2e023dfa3
+4
View File
@@ -48,6 +48,7 @@
#include "MagickCore/exception-private.h"
#include "MagickCore/image.h"
#include "MagickCore/image-private.h"
#include "MagickCore/layer.h"
#include "MagickCore/list.h"
#include "MagickCore/magick.h"
#include "MagickCore/memory_.h"
@@ -644,6 +645,9 @@ static Image *ReadJXLImage(const ImageInfo *image_info,
(void) memset(&frame_header,0,sizeof(frame_header));
if (JxlDecoderGetFrameHeader(jxl_info,&frame_header) == JXL_DEC_SUCCESS)
image->delay=(size_t) frame_header.duration;
if ((basic_info.have_animation == JXL_TRUE) &&
(basic_info.alpha_bits != 0))
image->dispose=BackgroundDispose;
break;
}
case JXL_DEC_NEED_IMAGE_OUT_BUFFER: