【问题标题】:What Does the Byte[] Representation of an Image Actually Mean?图像的 Byte[] 表示实际上是什么意思?
【发布时间】:2013-07-24 01:28:18
【问题描述】:

我将一个 1 像素的图像加载到位图中,然后将其转换为字节[]

           _Image = "test.jpg";

            Bitmap testImage = new Bitmap(_Image);

            ImageConverter converter = new ImageConverter();
            byte[] byteTestImage =  (byte[])converter.ConvertTo(testImage,typeof(byte[]));

单个像素具有 RGB 值(255、116、25)。这些中的每一个都可以用一个字节来表示, 所以我假设 byteTestImage 将对应于此。但是, byteTestImage 总共有 635 个元素。

这些字节与 1 像素图像之间的关系是什么?

【问题讨论】:

  • 文件本身不仅仅是 RGB 元素。它还可以具有 Alpha 通道(另一个字节),并具有文件头信息。例如,标头信息表明它是 JPG。当您考虑它时,这一定存在,因为图像至少知道它有多高或多宽?

标签: c# image bitmap


【解决方案1】:

位图中的单个像素并不总是 RGB 格式。这完全取决于格式。你可以有一个 alfa 组件,你可以有一个像素矩阵引用的调色板等等......

查看:Bitmap format

【讨论】:

    【解决方案2】:

    您加载的文件是 JPG。它具有某些附加信息(宽度、高度、EXIF 数据),而不仅仅是颜色。看https://en.wikipedia.org/wiki/JPEG

    尝试在十六进制编辑器中打开它。您甚至可以阅读有关拍摄它的相机的信息。

    【讨论】:

    • 因此,如果我只有一个像素值的 3d 数组,并且我想将其转换为位图,我将单独设置位图中的像素。我无法将数组转换为 byte[],因为我没有其他信息。
    • @user1475729:JPEG 只是 BitMap 支持的一种格式。有很多方法可以将数据放入 BitMap。
    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多