从img格式文件读取的图像数据如何加头信息才可直接读取?
从img文件中读取指定长度的图像:
/// <summary>
/// 读取图像数据
/// </summary>
/// <param name="imgFileName">img文件图像文件名</param>
/// <param name="startIndex">起始位置</param>
/// <returns></returns>
private string RedImgInfo(string imgFileName, int startIndex)
{
if (!File.Exists(imgFileName))
return "";
byte[] buff = new byte[imgSize];//imgSize=180*120*4
FileStream fs = new FileStream(imgFileName, FileMode.Open, FileAccess.Read);
try
{
fs.Seek((startIndex-1)*imgSize, SeekOrigin.Begin);
fs.Read(buff, 0, imgSize);
//测试生成一个jpg或BMP文件时,需加入图像前缀信息后方可预览图片
//TestImageFields("D:\\" + startIndex.ToString() + ".JPG", buff);
return ToHexString(buff);
}
catch
{
return "";
}
finally
{
fs.Close();
}
}
这样返回的数据要加图片格式(比如加.jpg)才可打开成图片,如何加头信息进去使得直接就能读取成位图格式呢?(无需在最后加格式)
下面是头信息的(fh+info)的c++代码,c#中如何对应呢????
int _stdcall SaveBMPImage(LPCTSTR file , MV_IMAGE * img)
{
BITMAPFILEHEADER fh;
BITMAPINFOHEADER info;
memset(&bfh , 0 , sizeof(BMP_FILE_HEAD));
fh.bfType = 0x4d42;
info.biSize = sizeof(bfh.info);
info.biPlanes = 1;
info.biWidth = 180 ;//180
info.biHeight = 120 ;//120
info.biPlanes = 1;
info.biBitCount = 32;
fh.bfSize = sizeof(bfh) + 180*120*4;
fh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
}