1

图像如何在内部存储在字节数组中?在 Visual Studio 中调试时,我可以看到 ASCII 代码(我猜)。但是请有人解释一下。

说,我们有一个存储在表中的图像(BLOB)。将该 BLOB 提取到代码(在 .net 中)中的数据表中,如下所示,

byte[] image = new image();
DataTable dt = new DataTable();
dt.Columns.Add("Image", typeof(byte[]));
\\Consider the BLOB from the DB is fetched into DataTable Image column.
image = dt[Row]["Image"];

现在,BLOB 如何在内部存储在 byte[] 图像中?

我在互联网上搜索过,但找不到任何东西。

4

3 回答 3

3

任何图像都只是根据用于表示它的任何底层格式构造的字节序列,例如颜色数据、层、尺寸等。您在调试期间看到的任何字节的重要性完全取决于原始格式图像,例如 PNG、TIFF、JPEG、BMP 等。

希望这就是你要找的。如果您需要更具体的内容,请修改您的原始帖子,也许有人可以为您提供更多详细信息。

于 2012-08-28T20:50:12.340 回答
2

我不确定你不清楚什么,但也许这段代码可以提供帮助

MemoryStream m = new MemoryStream();

Image img = Image.FromFile(file);
img.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);

byte[] bytes = m.ToArray();

m.Position = 0;
Image img2 = Image.FromStream(m);
于 2012-08-28T20:54:40.803 回答
1

图像通常是文件中由某种算法编码的一组颜色。我熟悉 GIF 图像格式。看下面的图片,看看一个红色的“V”存储在白色背景中的例子。此示例中的图像宽度可能为 7 像素,高度为 4 像素。每个图像总是有一个颜色表,指示图像中使用的颜色数量。R 标记的像素是红色的,w 标记的像素是白色的。

RwwwwwR
wRwwwRw
wwRwRww
wwwRwww

每个像素都是一个 32 位宽的整数,用于告诉 r(red)g(green)b(blue) 分量和透明度分量。

于 2012-08-28T20:52:12.950 回答