C# 如何将TIFF转换为JPEG?
我正在尝试使用FreeImage将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,
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。