2

我看到位图标题中有一个区域可以存储其他信息。因此,如果我用 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");

}

在此处输入图像描述

4

2 回答 2

0

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

于 2014-01-10T16:25:26.987 回答
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);
}
于 2013-03-21T19:40:01.243 回答