如何在Bitmap头中存储ASCII信息?

时间:2013-03-21 19:23:46

标签: c# metadata bmp

我看到位图标题中有一个区域用于存储其他信息。因此,如果我要用C#编写图像,我是否可以在标题中添加额外的ASCII信息?

public void writeToPath(GMapControl form)
{
    if(path == String.Empty || path == null)
        path=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

    int width = form.Size.Width;
    int height = form.Size.Height;

    Bitmap bm = new Bitmap(width, height);
    form.DrawToBitmap(bm, new Rectangle(0, 0, width, height));

    bm.Save("C:\SomePath\blah");

}

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为,在不深入研究BITMAPINFOHEADER业务的情况下,最简单的方法就是再次打开文件并编辑您所追踪的特定字节。

这是一些(未经测试的)代码:

using (var stream = File.Open(@"C:\SomePath\blah.jpg", FileMode.Open))
{
    var myBytes = new byte[] { /* put up to 4 bytes here */ };

    stream.Position = 6; //there is some space at 0x006 and 0x0008 for your data
    stream.Write(myBytes, 0, myBytes.Length);
}

答案 1 :(得分:0)

您可以按元数据的大小将文件偏移量增加到像素数组。然后将数据放在像素阵列之前。但是,您需要拥有自己的bmp io例程来编写和检索额外的数据块。