首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ImageMagick.NET -更快的性能

ImageMagick.NET -更快的性能
EN

Stack Overflow用户
提问于 2014-09-18 18:20:06
回答 1查看 2.6K关注 0票数 6

我正在使用C#的ImageMagick.NET库,我想从.PDF文档中的每个页面获取一些信息。下面是我当前的代码:

代码语言:javascript
运行
复制
var list = new MagickImageCollection();
list.Read(file.FullName);

foreach (var page in list)
{
    if (!backgroundWorker.CancellationPending)
    {
        pageCount.pageColorspace(page);

        isFormat(page.Width, page.Height);

        pageCount.incPdfPages();
    }
}

但在我看来,它的表现真的很慢。对于10个703页的PDF文件,需要4分钟。这是一种更快获得它的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-20 19:06:09

您可以通过逐页读取文件来提高性能。如果您读取整个文件,则内存中将有703个页面。您的机器可能无法分配那么多内存,然后ImageMagick将使用磁盘来存储像素,这将降低性能。

可以使用MagickReadSettings类的FrameIndex属性指定要读取的页。如果指定的页面太高,将引发异常(需要Magick.NET 7.0.0.0005或更高版本),并显示一条消息,指出您正在请求无效的页面。您需要这样做,因为ImageMagick不知道PDF文件的页数。下面是你如何做到这一点的一个例子。

代码语言:javascript
运行
复制
int page = 0;
while (true)
{
  MagickReadSettings settings = new MagickReadSettings()
  {
    FrameIndex = page
  };

  try
  {
    using (MagickImage image = new MagickImage(@"C:\YourFile.pdf", settings))
    {
      // Do something with the image....
    }
  }
  catch (MagickException ex)
  {
    if (ex.Message.Contains("Requested FirstPage is greater"))
      break;
    else
      throw;
  }

  page++;
} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25910033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档