asp.net - How to resize animated gif file using imagemagick without destroying animation using C#? -
i using imagemagick dll (refer: http://www.imagemagick.org) resize image,
when re-sized animated gif image going screw.
i using below code re-size image ( image type png, gif, jpg, bmp, tif ...)
imagemagickobject.magickimage imglarge = new imagemagickobject.magickimage(); object[] o = new object[] { strorig, "-resize", size, "-gravity", "center", "-colorspace", "rgb", "-extent", "1024x768", strdestnw }; imglarge.convert(ref o);
how can fixed it. see result image
i think have extract every single frame gif first, resize every single frame , put together.
edit: this? not tested nor builded...
int maxframes=32; imagemagickobject.magickimage imglarge = new imagemagickobject.magickimage(); // first extract frames gif single png files for(int frame=0; frame<maxframes;frame++) { object[] o = new object[] { string.format(strorig+"[{0}]", frame) , string.format("tmp{0}.png", frame) }; imglarge.convert(ref o); } // resize every single png files // add resized filenames stringbuilder stringbuilder filenames = new stringbuilder(); for(int frame=0; frame<maxframes;frame++) { object[] o = new object[] { string.format("tmp{0}.png", frame) , "-resize" , size , "-gravity" , "center" , "-colorspace" , "rgb" , "-extent" , "1024x768" , string.format("tmp-resized{0}.png", frame) }; filenames.append(string.format("tmp-resized{0}.png", frame)); filenames.append(environment.newline); imglarge.convert(ref o); } // write resized filenames file file.writealltext("tmp-resized-files.txt", filenames); // create resize animated gif based on filenames in tmp-resized-files.txt object[] o = new object[] { "@tmp-resized-files.txt" , strdestnw }; imglarge.convert(ref o);
Comments
Post a Comment