C# 将.jpg图像的像素值读入字节数组
我正试图用c语言编写一个程序,通过以太网发送一个帧 目前我有分辨率为1920x1080的.jpg测试图像,大小以字节为单位非常不同 我试图将.jpg图像转换为字节数组,我寻找了类似的答案,但当我尝试它们时,我得到了字节数组,每个图像包含4371013字节。考虑到图像的高清分辨率,这是没有意义的。如何将图像文件转换为1920*1080*3(RGB)字节数组?请记住,我正在尝试开发一个实时应用程序,它应该能够以高速率发送帧,这样代码就不会太慢 提前谢谢。C# 将.jpg图像的像素值读入字节数组,c#,C#,我正试图用c语言编写一个程序,通过以太网发送一个帧 目前我有分辨率为1920x1080的.jpg测试图像,大小以字节为单位非常不同 我试图将.jpg图像转换为字节数组,我寻找了类似的答案,但当我尝试它们时,我得到了字节数组,每个图像包含4371013字节。考虑到图像的高清分辨率,这是没有意义的。如何将图像文件转换为1920*1080*3(RGB)字节数组?请记住,我正在尝试开发一个实时应用程序,它应该能够以高速率发送帧,这样代码就不会太慢 提前谢谢。 Tunc读取图像字节到字节数组:
Tunc读取
图像
字节到字节数组:
Image image = ...;
MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
if (ms.Length == 0)
{
ms.Close();
throw new Exception("Bad Image File");
}
ms.Position = 0;
byte[] baImageBytes = new byte[ms.Length];
ms.Read(baImageBytes , 0, (int)ms.Length);
ms.Close();
byte[] baImageBytes =...
Image myImage = Image.FromStream(new MemoryStream(baImageBytes ));
要从字节数组创建映像,请执行以下操作:
Image image = ...;
MemoryStream ms = new MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
if (ms.Length == 0)
{
ms.Close();
throw new Exception("Bad Image File");
}
ms.Position = 0;
byte[] baImageBytes = new byte[ms.Length];
ms.Read(baImageBytes , 0, (int)ms.Length);
ms.Close();
byte[] baImageBytes =...
Image myImage = Image.FromStream(new MemoryStream(baImageBytes ));
JPG是一种压缩格式,这就是它的大小(以及相应字节数组的大小)的原因 通常远小于1920*1080*3。为了从JPG获取字节数组,您可以使用 溪流:
Image myImage;
...
byte[] result;
using (MemoryStream ms = new MemoryStream()) {
myImage.Save(ms, ImageFormat.Jpeg);
result = ms.ToArray();
}
如果您只需要字节数组形式的像素,则必须将JPG转换为BMP(或其他原始未压缩格式)
你试过什么?你能发一些代码吗?“所以这段代码不会太慢”-但是你的最终版本不会使用你的测试图像作为源,因此不必解码JPEG,对吗?这里有人解释了如何从图像创建字节数组。这可能会有帮助。如果你想要的是每索引一个像素。。对于
字节
数组,这是不可能的。一个通道可以存储在字节中。。不是所有三个。你需要一个int
数组来实现这一点。不想在游行上下雨,但是如果你要通过以太网传递JPEG,你将获得更好的结果,发送压缩JPEG的原始文件字节,而不是解码它,读取字节数组并发送一个(大得多)以太网上的数据量。我认为这两个都不是他想要的。他希望从JPEG文件生成一幅图像,然后构建一个字节数组,每个渲染像素有三个字节,每个RGB一个字节。