C# 如何将TIFF转换为JPEG?

C# 如何将TIFF转换为JPEG?,c#,freeimage,C#,Freeimage,我正在尝试使用FreeImage将TIFF文件转换为JPEG 问题是FreeIamge.SaveToStream实际上什么都不做。即使在调用之后,流的长度,容量和位置也为0 这是我的代码: using (var stream = new MemoryStream()) { var image = FreeImage.LoadEx(fileName); FreeImage.SaveToStream(image, stream, FREE_IMAGE_FORMAT.FIF_JPEG,

我正在尝试使用FreeImage将TIFF文件转换为JPEG

问题是
FreeIamge.SaveToStream
实际上什么都不做。即使在调用之后,
长度
容量
位置
也为0

这是我的代码:

using (var stream = new MemoryStream())
{
    var image = FreeImage.LoadEx(fileName);
    FreeImage.SaveToStream(image, stream, FREE_IMAGE_FORMAT.FIF_JPEG,
                           FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB);

    // stream.Length, stream.Capacity & stream.Position are all 0 here
}

我做错了什么?

问题是输入-由另一个图像库创建的16位图像。看起来FreeImage在16位图像上有一些问题,因为GDI+可以毫无问题地读取它。我将输入切换到24位图像,问题中的代码开始工作。

首先尝试倒带流,看看它是否持续。出于好奇,为什么要使用
内存流
?为什么不直接在
FileStream
上调用
SaveToStream
?@Theodoroschatzigianakis:那没用。将
内存流的全部内容写入另一个流。这是有案可查的。此外,我还检查了:
MemoryStream
的长度、容量和位置为0。@vcsjones:因为这是我真实代码中的一个简化示例代码,我需要这一步。所以问题是为什么
FreeImage.SaveToStream
实际上没有这样做。叹气。。。不使用异常处理的库的乐趣。“GDI+可以毫无问题地读取”——GDI+可以读取16位TIFF?我使用PNG文件的经验(我刚刚遇到这个)是System.Drawing.Image(.NET wrapper for GDI+)将16位下变频为8位,并将单个通道乘以RGBA,但我还没有尝试过TIFF。