快速将TIFF图像转换为适合在Web客户端显示的格式

3

目前,我使用以下方法预览已扫描的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()方法以外的东西?

我找到了一个不安全的类,该类在像素操作之间锁定和解锁bitmapData 这里,但我不确定它是否适合我的任务(因为我只需要从一种格式转换到另一种格式)。然而,我的性能分析器显示获得了约30毫秒的优势(之前是116毫秒,之后是83毫秒)。

3个回答

1

FreeImage 是一个非常棒的图像处理库,它有 C# 的封装。你也可以找到 FreeImage .NET 文档

它已经相当成熟了,因此其中的一些元素都进行了高度优化。


谢谢!我将在不久的将来进行检查,以通过Atalasoft库比较它与当前解决方案。 - barser
根据文档,这正是我想要的!再次感谢!)) - barser

1

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


0

我正在使用一个外部工具进行转换: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解决方案,但如果找不到其他方法,我会记住你的建议。谢谢! - barser
你是否使用ImageMagick来完成类似于我的任务?我的意思是生成PNG(或JPEG)并将其发送到客户端而无需将其保存到磁盘上。如果是这样,能否请您提供简要示例? - barser
我正在使用imagick将pdf转换为tiff。我没有使用.Net包装器,因为它只会让事情更加困难 :) 要查看工具的示例。你不能不保存文件到磁盘上就完成转换(至少使用imagick是这样),只需为该进程创建一个临时文件,并在完成后将其删除。 - jgauffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接