【问题标题】:Fast TIFF image conversion to show in web-client快速 TIFF 图像转换以在 Web 客户端中显示
【发布时间】:2011-05-16 02:16:26
【问题描述】:

对于扫描的 TIFF 文档的预览,我目前使用以下内容:

Bitmap bmp = new Bitmap(@"document.tif");
var ms = new MemoryStream();

bmp.Save(ms, ImageFormat.Png);

var bmpBytes = ms.GetBuffer();
bmp.Dispose();
ms.Close();

return new FileStreamResult(new MemoryStream(bmpBytes), "image/png");

有什么方法可以加快转换速度?使用标准 Image.Save() 方法以外的其他方法?

我发现了在像素操作here 之间锁定和解锁 bitmapData 的不安全类,但我不确定它是否适合我的任务(因为我只需要从一种格式转换为另一种格式)。但是我的分析器显示大约 30 毫秒获胜(116 毫秒之前,83 毫秒之后)

【问题讨论】:

    标签: c# .net asp.net-mvc image-processing tiff


    【解决方案1】:

    FreeImage 是一个很棒的图像处理库,它有 C# 包装器。你也可以找到FreeImage .NET documentation

    相当成熟,所以它的几个元素都经过高度优化。

    【讨论】:

    • 谢谢!我会在不久的将来通过 Atalasoft 库与当前解决方案进行比较。
    • 根据文档,这就是我想要的!再次感谢! ))
    【解决方案2】:

    我想我找到了! :) Atalasoft dotImage(免费版)提升图像显示到大约 35 毫秒...

    【讨论】:

      【解决方案3】:

      我正在使用外部工具进行转换:http://www.imagemagick.org/script/index.php

      速度要快很多。

      更新

      做这样的事情:

      var sourceFile = "C:\\yourscanned.tiff";
      var destFile = Path.GetTempPath() + "\\yourpng.tmp";
      var process = Process.Start("C:\path\to\imagick\convert.exe", sourceFile + " " + destFile);
      process.WaitForExit();
      
      FileStream myStream = new FileStream(destFile);
      //woho, do what you want.
      
      File.Delete(destFile);
      

      【讨论】:

      • 我试过 ImageMagick.NET 包装器。似乎它可以解决我的问题,但 API 相当不舒服且文档记录不完整。尚未尝试外部 imagemagick,因为我更喜欢 .NET 纯解决方案,但我会记住您的建议(如果没有找到任何其他方式)。谢谢!
      • 您是否使用 imagemagick 来完成与我类似的任务?我的意思是将生成的 png(或 jpeg)发送到客户端而不将其保存到磁盘?如果是这样,请您提供一个简短的样本吗?
      • 我正在使用 imagick 将 pdf 转换为 tiff。我没有使用 .Net 包装器,因为它只会让事情变得更难:) 请注意该工具的示例。如果不将文件保存到磁盘,则无法执行此操作(至少不使用 imagick),只需为该进程创建一个临时文件并在完成后将其删除)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2017-12-28
      相关资源
      最近更新 更多