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

3

如何将Tiff图片的字节数组转换为Jpg的字节数组?

我从网络上获得了Tiff图片的字节数组,那么如何在不写入新文件的情况下使用它作为Jpg?


“写入文件”基本上与“写入内存”或“写入流”相同。 - leonbloy
1个回答

5
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();
}

我没有尝试过,但应该可以工作。如果你要最后保存文件,你可以直接使用位图上的保存方法,而不是使用流。


使用以下代码将文件保存为jpeg格式:using (MemoryStream strm = new MemoryStream(startBytes)) System.Drawing.Bitmap.FromStream(strm).Save(localfileName, System.Drawing.Imaging.ImageFormat.Jpeg); - darin
你介意解释一下你的代码吗?这将有助于作者快速理解你的观点。 - AYK
使用 outStream.ToArray() 不是更好吗?还是说有什么区别吗? - Samuel Parkinson
我不知道它们的区别。我一直以为ToArray是将IEnumerable转换成数组,因为流不失为一个List<Byte>,所以我只使用GetBuffer。至于代码,您会从创建的MemoryStream中创建位图,该MemoryStream来自输入的字节数组。然后您可以使用位图的Save函数将其保存到输出的MemoryStream中,然后可以从中读取字节数组。 - darin
搜索网络后发现,应该使用ToArray,因为它在流关闭时仍然有效。尽管在我上面的示例中,它们都可以正常工作,因为流会超出using语句的范围。 - darin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接