I was getting access violations (in gif related dll) while batch converting and saving emf to gif on Windows XP. It happened quite frequently after about 100th saving. The only reason I believe it is a bug is that it does not happen with jpg. In my testcase I was very low on physical memory, practically the full conversion went in virtual memory. Average size of emf is 100KB. Here is the crashing code in JMagick:
for (int i = 0; i < files.length; i++) {
File srcFile =
new File(gifFolder + "/" + files[i]); //about 20 100KB files here
if
(srcFile.exists()) {
System.out.println("ImageMagick: processing " + srcFile.getAbsolutePath());
ImageInfo info = new ImageInfo( srcFile.getAbsolutePath() );
info.setDensity("300");
MagickImage
image = new MagickImage( info );
String gifFile =
gifFolder + "/big_" + files[i].replaceAll("\\.EMF", ".gif"); //wonr crash with
.jpg
System.out.println("ImageMagick: processing " + gifFile);
image =
image.scaleImage(960, 720);
image.setFileName(gifFile);
image.writeImage(new ImageInfo(gifFile));
gifFile = gifFolder + "/" + files[i].replaceAll("\\.EMF", ".gif");
System.out.println("ImageMagick: processing " + gifFile);
image = image.scaleImage(640, 480);
image.setFileName(gifFile);
image.writeImage(new ImageInfo(gifFile));
gifFile = gifFolder + "/small_" + files[i].replaceAll("\\.EMF", ".gif");
System.out.println("ImageMagick: processing " + gifFile);
image = image.scaleImage(90, 65);
image.setFileName(gifFile);
image.writeImage(new ImageInfo(gifFile));
image.destroyImages();
}
}
I have already rewrote my code to jpg because of this, but I hope someone can
reproduce it and fix it. In my oppinion there is a minor memory leak in the gif
related codes.
Marton Bokor
_______________________________________________
Magick-bugs mailing list
[email protected]
http://studio.imagemagick.org/mailman/listinfo/magick-bugs
