Package: libgraphicsmagick1-dev
Version: 1.4+really1.3.45+hg17696-1
Severity: important
Using the demo.c example code from
/usr/share/doc/libgraphicsmagick1-dev/www/api/api.html fails to generate a gif
animation in the trixie version of libgraphicsmagick1-dev. It worked
correctly under bullseye.
I'm not sure if this is a failure of the documentation to track the API
or an actual bug in the library.
demo.c:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <magick/api.h>
int main(int argc,char **argv)
{
ExceptionInfo
exception;
Image
*image,
*images,
*resize_image,
*thumbnails;
ImageInfo
*image_info;
int
i;
/*
Initialize the image info structure and read the list of files
provided by the user as a image sequence
*/
InitializeMagick(*argv);
GetExceptionInfo(&exception);
image_info=CloneImageInfo((ImageInfo *) NULL);
images=NewImageList();
for (i=1; i< argc-1; i++)
{
(void) strcpy(image_info->filename,argv[i]);
printf("Reading %s ...", image_info->filename);
image=ReadImage(image_info,&exception);
printf(" %lu frames\n", GetImageListLength(image));
if (exception.severity != UndefinedException)
CatchException(&exception);
if (image)
(void) AppendImageToList(&images,image);
}
if (!images)
{
printf("Failed to read any images!\n");
exit(1);
}
/*
Create a thumbnail image sequence
*/
thumbnails=NewImageList();
while ((image=RemoveFirstImageFromList(&images)) != (Image *) NULL)
{
resize_image=ResizeImage(image,106,80,LanczosFilter,1.0,&exception);
DestroyImage(image);
if (resize_image == (Image *) NULL)
{
CatchException(&exception);
continue;
}
(void) AppendImageToList(&thumbnails,resize_image);
}
/*
Write the thumbnail image sequence to file
*/
if (thumbnails)
{
(void) strcpy(thumbnails->filename,argv[argc-1]);
image_info->adjoin=MagickTrue;
printf("Writing %s ... %lu frames\n",
thumbnails->filename,
GetImageListLength(thumbnails));
WriteImage(image_info,thumbnails);
}
/*
Release resources
*/
DestroyImageList(thumbnails);
DestroyImageInfo(image_info);
DestroyExceptionInfo(&exception);
DestroyMagick();
return(0);
}
test script test.sh:
#!/bin/sh
dpkg-query -W libgraphicsmagick1-dev
for i in 1 2 3 4 5 6
do
gm convert -size 300x300 -background white -fill black -pointsize 200 \
label:$i $i.png
done
gcc -o demo demo.c -O `GraphicsMagick-config --cppflags --ldflags
--libs`
./demo *.png out.gif
gm identify out.gif
output under trixie:
libgraphicsmagick1-dev 1.4+really1.3.45+hg17696-1
Reading 1.png ... 1 frames
Reading 2.png ... 1 frames
Reading 3.png ... 1 frames
Reading 4.png ... 1 frames
Reading 5.png ... 1 frames
Reading 6.png ... 1 frames
Writing out.gif ... 6 frames
out.gif GIF 106x80+0+0 PseudoClass 256c 8-bit 1.7Ki 0.000u 0m:0.000000s
Only 6.png ends up in the final image. However the following works fine:
$ gm convert *.png out2.gif
$ gm identify out2.gif
out2.gif[0] GIF 300x300+0+0 PseudoClass 128c 8-bit 17.2Ki 0.000u
0m:0.000000s
out2.gif[1] GIF 300x300+0+0 PseudoClass 256c 8-bit 17.2Ki 0.000u
0m:0.000203s
out2.gif[2] GIF 300x300+0+0 PseudoClass 256c 8-bit 17.2Ki 0.000u
0m:0.000205s
out2.gif[3] GIF 300x300+0+0 PseudoClass 256c 8-bit 17.2Ki 0.000u
0m:0.000200s
out2.gif[4] GIF 300x300+0+0 PseudoClass 256c 8-bit 17.2Ki 0.000u
0m:0.000203s
out2.gif[5] GIF 300x300+0+0 PseudoClass 256c 8-bit 17.2Ki 0.000u
0m:0.000210s
Test script output undef bullseye:
libgraphicsmagick1-dev 1.4+really1.3.36+hg16481-2+deb11u1
Reading 1.png ... 1 frames
Reading 2.png ... 1 frames
Reading 3.png ... 1 frames
Reading 4.png ... 1 frames
Reading 5.png ... 1 frames
Reading 6.png ... 1 frames
Writing out.gif ... 6 frames
out.gif[0] GIF 106x80+0+0 PseudoClass 256c 8-bit 8.6Ki 0.000u
0m:0.000002s
out.gif[1] GIF 106x80+0+0 PseudoClass 256c 8-bit 8.6Ki 0.000u
0m:0.000096s
out.gif[2] GIF 106x80+0+0 PseudoClass 256c 8-bit 8.6Ki 0.000u
0m:0.000097s
out.gif[3] GIF 106x80+0+0 PseudoClass 128c 8-bit 8.6Ki 0.000u
0m:0.000090s
out.gif[4] GIF 106x80+0+0 PseudoClass 256c 8-bit 8.6Ki 0.000u
0m:0.000096s
out.gif[5] GIF 106x80+0+0 PseudoClass 256c 8-bit 8.6Ki 0.000u
0m:0.000101s
-- System Information:
Debian Release: 13.6
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.12.96+deb13-amd64 (SMP w/16 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=en_CA.ISO-8859-1, LC_CTYPE=en_CA.ISO-8859-1 (charmap=ISO-8859-1),
LANGUAGE=en_CA:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages libgraphicsmagick1-dev depends on:
ii libbz2-dev 1.0.8-6
ii libc6-dev 2.41-12+deb13u3
ii libexif-dev 0.6.25-1+deb13u1
ii libfreetype-dev 2.13.3+dfsg-1+deb13u1
ii libgraphicsmagick-q16-3t64 1.4+really1.3.45+hg17696-1
ii libheif-dev 1.19.8-1
ii libice-dev 2:1.1.1-1
ii libjbig-dev 2.1-6.1+b2
ii libjpeg-dev 1:2.1.5-4
ii libjpeg62-turbo-dev [libjpeg-dev] 1:2.1.5-4
ii libjxl-dev 0.11.2-0.1~deb13u2
ii liblcms2-dev 2.16-2+deb13u2
ii libltdl-dev 2.5.4-4
ii libpng-dev 1.6.48-1+deb13u5
ii libsm-dev 2:1.2.6-1
ii libtiff-dev 4.7.0-3+deb13u3
ii libwebp-dev 1.5.0-0.1
ii libwmf-dev 0.2.13-1.1+b3
ii libx11-dev 2:1.8.12-1
ii libxext-dev 2:1.3.4-1+b3
ii libxml2-dev 2.12.7+dfsg+really2.9.14-2.1+deb13u3
ii libzstd-dev 1.5.7+dfsg-1
ii pkgconf 1.8.1-4
ii x11proto-dev [x11proto-core-dev] 2024.1-1
ii zlib1g-dev [libz-dev] 1:1.3.dfsg+really1.3.1-1+b1
libgraphicsmagick1-dev recommends no packages.
Versions of packages libgraphicsmagick1-dev suggests:
ii graphicsmagick 1.4+really1.3.45+hg17696-1
-- no debconf information