紧急求教,在内存中读取BMP数据的方法(C#)

trypsin 2010-12-20 06:33:22
目标:将磁盘上的BMP图像存入QUICKCAM GEV(DALSA相机的SDK)的NCyUserBuffer,因为要使用这个SDK中的图像处理显示和处理函数。
NCyUserBuffer定义:

public class NCyUserBuffer : IDisposable
{
public CyUserBuffer* ptr;

public NCyUserBuffer(IntPtr aBuffer, uint aBufferSize);
public NCyUserBuffer(IntPtr aBuffer, uint aBufferSize, uint aID);

public override sealed void Dispose();
protected virtual void Dispose(bool __p1);
public IntPtr GetBuffer();
public uint GetBufferSize();
public virtual NCyResultEvent GetCompletionEvent();
public uint GetID();
public virtual NCyImageInfo GetImageInfo();
public virtual NCyResult SetBuffer(IntPtr aBuffer, uint aBufferSize);
}


以前一直都对文件IO和内存处理不熟悉,现在赶鸭子上架,却一时怎么也理不出头绪来,请高人给一个详细一点的C#流程。
...全文
130 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiehuanxie 2010-12-20
  • 打赏
  • 举报
回复
BMP的主要信息就是一个颜色信息的数组,



Bitmap dst = new Bitmap(destImg);
BitmapData dstBD =
dst.LockBits( new Rectangle(destX, destY, destWidth, destHeight),
ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed);

int dstStride = dstBD.Stride;

System.IntPtr dstScan0 = dstBD.Scan0;

unsafe
{
byte *pDst = (byte *)(void *)dstScan0;

for(int y = 0; y < destHeight; y++)
{
for(int x = 0; x < destWidth; x++)
{

}
}
}

dst.UnlockBits(dstBD);

110,535

社区成员

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

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

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