我看到位图标题中有一个区域用于存储其他信息。因此,如果我要用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");
}
答案 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例程来编写和检索额外的数据块。