如何在C#ASP.NET中操作透明的Tiff图像

如何在C#ASP.NET中操作透明的Tiff图像,c#,asp.net,image,tiff,C#,Asp.net,Image,Tiff,我正在尝试在ASP.NET环境中使用C#处理TIFF图像。捕捉,图像可能有透明度,任何时候我试图与一个透明的TIFF文件,我得到要么内存不足异常或参数是无效的错误 以下是我的不同做法: string imagename = "Test.tif"; var image = Image.FromFile(@"C:\Path-to-File\" + imagename); 或 我已经尝试将其放入文件流,但仍然收到错误。TIFF文件来自Photoshop,我肯定是把透明度缩小了 寻找任何类型的指导…

我正在尝试在ASP.NET环境中使用C#处理TIFF图像。捕捉,图像可能有透明度,任何时候我试图与一个透明的TIFF文件,我得到要么内存不足异常或参数是无效的错误

以下是我的不同做法:

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

我已经尝试将其放入文件流,但仍然收到错误。TIFF文件来自Photoshop,我肯定是把透明度缩小了


寻找任何类型的指导……这应该不像我发现的那样困难。

多亏了@Andrew Morton建议的FreeImage,它最终把我带到了Magick.NET图书馆

最终,使用当前版本的Visual Studio,FreeImage几乎不可能在C#程序中工作,因此通过一些挖掘,我发现在NuGet中快速搜索后,安装和运行起来非常容易

以下是我所做的:

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

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

  • 熟悉本课程的基本知识
就这样!下面是我用来让它工作的代码:

using (MagickImage image = new MagickImage(@"C:\FolderPathToFile\OriginalFile.tif"))
{
    image.Write(@"C:\FolderPathToFile\FinalOutput.png");
}

根据文件,支持TIFF。你收到一个错误吗?正如我在原来的帖子中所说,我收到了“内存不足”的异常。虽然文档状态TIFF是受支持的,但它明确指出透明度不受支持。很抱歉,我错过了=P你有一个样本图像吗?你看到这个了吗?别担心!附上图片。我注意到在这个图像的属性中,位深度是40,而同样类型的非透明图像设置为32。不知道这是否与此有关。是的,我确实看到了那个链接,我需要使用TIFF进行打印,PNG是压缩的。PNG使用无损压缩。您是否签入了在Photoshop中保存时显示的选项,该选项设置为以IBM PC字节顺序保存,以防万一?我假设你的图像在任何一个维度上都不超过32767像素。也许像这样的替代方案更适合你。
using (MagickImage image = new MagickImage(@"C:\FolderPathToFile\OriginalFile.tif"))
{
    image.Write(@"C:\FolderPathToFile\FinalOutput.png");
}