ImageMagick.NET PDF到JPG转换 - 内存不足

时间:2014-04-25 01:14:04

标签: c# pdf imagemagick jpeg magick.net

我使用ImageMagick.NET将PDF转换为JPG。这是我的代码:

    MagickReadSettings settings = new MagickReadSettings();
    settings.Density = new MagickGeometry(300, 300);

    using (MagickImageCollection images = new MagickImageCollection())
    {
        images.Read(pdfFilePathString, settings);

        MagickImage image = images.AppendVertically();
        image.Format = MagickFormat.Jpg;
        //image.Quality = 70; 
        //if (image.Width > 1024)
        //{
        //    int heightRatio = Convert.ToInt32(Math.Round((decimal)(image.Height / (image.Width / 1024)), 0));
        //    image.Resize(1024, heightRatio);
        //}
        image.Write(tempFilePathString);               
        image.Dispose();
    }

问题是,我一直没有得到足够的内存异常,这会发生在image.Write()上。这显然是由于文件大小,因为一个小的pdf将起作用,但不是多页pdf。我尝试让它运行的特定文件是12页文本pdf。如果我将密度降低,例如(100,100)工作,我可以让它工作,但质量很糟糕。

注释掉的线条是我试图实施的其他一些解决方案,但是它会持续运行很长时间(几分钟)而不会结束(至少就我的耐心而言)启用了这些解决方案。其中之一是降低质量,另一个是减小图像尺寸。 pdf总是非常大,比必要的大得多。

如果我可以在写入文件之前减小图像大小和/或质量,那就太棒了。或者至少我需要能够以足够好的质量生成图像,而不会出现内存问题。它似乎不应该在这里有内存问题,因为它不像文件大小是巨大的,虽然它可能仍然比图像所需的更大。 12页pdf,当我可以得到它渲染时,大约6-7 megs。

我使用的是32位ImageMagick - 我想知道64位是否可以解决这个问题,但是尝试让该版本在本地环境中运行时出现了问题 - 这完全是另一个问题。

有人对我能尝试的其他事情有任何想法吗?

由于

0 个答案:

没有答案