目前,我使用以下内容预览扫描的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的不安全类,但我不确定它是否适合我的任务(因为我只需要从一种格式转换为另一种格式)。然而,我的探查器显示大约30ms的胜利(在116毫秒之前,83毫秒之后)
答案 0 :(得分:1)
FreeImage是一个很棒的图像处理库,它有C#包装器。您也可以找到FreeImage .NET documentation。
相当成熟,所以它的几个元素都经过了高度优化。
答案 1 :(得分:1)
我想我找到了它! :) Atalasoft dotImage(免费版)将图像显示为大约35毫秒...
答案 2 :(得分: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);