Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将.jpg图像的像素值读入字节数组_C# - Fatal编程技术网

C# 将.jpg图像的像素值读入字节数组

C# 将.jpg图像的像素值读入字节数组,c#,C#,我正试图用c语言编写一个程序,通过以太网发送一个帧 目前我有分辨率为1920x1080的.jpg测试图像,大小以字节为单位非常不同 我试图将.jpg图像转换为字节数组,我寻找了类似的答案,但当我尝试它们时,我得到了字节数组,每个图像包含4371013字节。考虑到图像的高清分辨率,这是没有意义的。如何将图像文件转换为1920*1080*3(RGB)字节数组?请记住,我正在尝试开发一个实时应用程序,它应该能够以高速率发送帧,这样代码就不会太慢 提前谢谢。 Tunc读取图像字节到字节数组:

我正试图用c语言编写一个程序,通过以太网发送一个帧

目前我有分辨率为1920x1080的.jpg测试图像,大小以字节为单位非常不同

我试图将.jpg图像转换为字节数组,我寻找了类似的答案,但当我尝试它们时,我得到了字节数组,每个图像包含4371013字节。考虑到图像的高清分辨率,这是没有意义的。如何将图像文件转换为1920*1080*3(RGB)字节数组?请记住,我正在尝试开发一个实时应用程序,它应该能够以高速率发送帧,这样代码就不会太慢

提前谢谢。
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一个字节。