如何在c# ASP.NET中使用透明操作Tiff图像



我正试图在ASP中使用c#处理TIFF图像。网络环境。问题是,图像可能具有透明度,并且每当我尝试使用透明的TIFF文件时,我都会得到内存不足异常或参数无效错误。

以下是我做这件事的不同方法:

string imagename = "Test.tif";
var image = Image.FromFile(@"C:Path-to-File" + imagename);

Bitmap myBitmap = new Bitmap(@"C:Path-to-File" + imagename);

我试过把它扔进文件流,但仍然收到错误。TIFF文件来自Photoshop,我已经确定透明度是罪魁祸首。

这个链接提到Image类不支持透明

寻找任何类型的指导…这应该没有我想象的那么难。

感谢@Andrew Morton推荐的FreeImage,它最终把我引向了Magick。网络图书馆。

最终,使用当前版本的Visual Studio在c#程序中使用FreeImage几乎是不可能的,因此通过一些挖掘,我找到了Magick。在NuGet中快速搜索后,它非常容易安装和使用。

我是这样做的:

  • 在NuGet中搜索Magick并选择所需的架构(x64或x86)
注意:如果选择x64,项目的构建设置必须设置为相同的体系结构,否则将出现如下错误:

无法加载文件或程序集'Magick.NET.DLL'或其依赖项之一。无法找到指定的模块。

  • 熟悉本文档中的基础知识

就是这样!下面是我用来让它工作的代码:

using (MagickImage image = new MagickImage(@"C:FolderPathToFileOriginalFile.tif"))
{
    image.Write(@"C:FolderPathToFileFinalOutput.png");
}

最新更新