从img格式文件读取的图像数据如何加头信息才可直接读取?

erif1001 2010-04-15 09:04:32
从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);
}
...全文
323 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
erif1001 2010-04-18
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100416/16/66b992ea-550b-4921-9c38-854604391efb.html
详细问题
xingyuebuyu 2010-04-16
  • 打赏
  • 举报
回复
c++代码传个完整的上来看看.
erif1001 2010-04-15
  • 打赏
  • 举报
回复
请问xingyuebuyu,你给的结构体赋值后加上图片数据就能行了吗?
如何加在返回的string RedImgInfo()的图像值前面呢?
xingyuebuyu 2010-04-15
  • 打赏
  • 举报
回复
[StructLayout(LayoutKind.Sequential, Pack=1)]
public struct BITMAPFILEHEADER
{
public ushort bfType;
public uint bfSize;
public ushort bfReserved1;
public ushort bfReserved2;
public uint bfOffBits;
}

[StructLayout(LayoutKind.Sequential, Pack=1)]
public struct BITMAPINFOHEADER
{
public uint biSize;
public int biWidth;
public int biHeight;
public ushort biPlanes;
public ushort biBitCount;
public uint biCompression;
public uint biSizeImage;
public int biXPelsPerMeter;
public int biYPelsPerMeter;
public uint biClrUsed;
public uint biClrImportant;
}


bfh是什么类型的?
按照上面的定义改

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧