C# 将字节数组Tiff转换为字节数组Jpeg

C# 将字节数组Tiff转换为字节数组Jpeg,c#,image,tiff,jpeg,libtiff.net,C#,Image,Tiff,Jpeg,Libtiff.net,如何将tiff图像中的字节数组转换为jpg的字节数组 我从网络上获得了Tiff图像的字节数组,那么如何在不编写新文件的情况下将其用作jpg呢 Byte[] tiffBytes; Byte[] jpegBytes; using (MemoryStream inStream = new MemoryStream(tiffBytes)) using (MemoryStream outStream = new MemoryStream()) { System.Drawing.Bitmap.Fr

如何将tiff图像中的字节数组转换为jpg的字节数组

我从网络上获得了Tiff图像的字节数组,那么如何在不编写新文件的情况下将其用作jpg呢

Byte[] tiffBytes;
Byte[] jpegBytes;

using (MemoryStream inStream = new MemoryStream(tiffBytes))
using (MemoryStream outStream = new MemoryStream())
{
    System.Drawing.Bitmap.FromStream(inStream).Save(outStream, System.Drawing.Imaging.ImageFormat.Jpeg);
    jpegBytes = outStream.ToArray();
}

我没有试过,但它应该能起作用。如果要最后保存文件,可以在位图上使用“保存”方法,使用文件路径而不是流。

“写入文件”与“写入内存”或“写入流”基本相同。使用(MemoryStream strm=new MemoryStream(startBytes))System.Drawing.bitmap.FromStream(strm)。保存(localfileName,System.Drawing.Imaging.ImageFormat.Jpeg);以Jpeg格式保存到文件中。您介意解释您的代码吗?这将帮助作者快速理解您的观点。使用
outStream.ToArray()不是更好吗
?或者甚至有区别吗?我不知道区别是什么。我一直认为ToArray将IEnumerable转换为数组,并且由于流不是因为缺少更好的解释而创建的列表,所以我只使用GetBuffer。至于代码,您从输入字节数组创建的MemoryStream创建位图。然后您可以使用位图的Save函数将其保存到输出MemoryStream,然后您可以从中读取字节数组。搜索我发现的web时,您应该使用ToArray,因为它在流关闭时工作。尽管在我上面的示例中,它们都可以工作,因为流超出using语句的范围。