delphi 怎样将一个PByte类型 拷贝到内存,再将它们分配给bitmap 然后保存成bmp图像?
const
Width = 752;
Height = 480; var ABitmap: TBitmap;
myBuffer: PByte;begin
ABitmap := TBitmap.Create;
ABitmap.PixelFormat := pf24bit;
ABitmap.Width := Width;
ABitmap.Height := Height; GetMem(myBuffer, SizeOf(pbyte));
CopyMemory(myBuffer,ABitmap.ScanLine[Height - 1], Width * Height * 3);//这一句出错 请问该怎样拷贝内存? ABitmap.SaveToFile(dlgSave1.FileName);
ABitmap.Free;
const
Width = 752;
Height = 480; var ABitmap: TBitmap;
myBuffer: PByte;begin
ABitmap := TBitmap.Create;
ABitmap.PixelFormat := pf24bit;
ABitmap.Width := Width;
ABitmap.Height := Height; GetMem(myBuffer, SizeOf(pbyte));
CopyMemory(myBuffer,ABitmap.ScanLine[Height - 1], Width * Height * 3);//这一句出错 请问该怎样拷贝内存? ABitmap.SaveToFile(dlgSave1.FileName);
ABitmap.Free;
解决方案 »
- ADO是不是在SQL语句内同一个变量不能用多次
- 如何在DBGrid中取得某一单元格中的内容,100分相送
- clientdataset动态添加字段以及创建Bool值的计算字段???
- 紧急求助,如何从SQL数据库中,将表中记录插入到ACCESS数据库表中?
- 单元全局变量与工程全局变量有什么区别
- 简单问题
- 急!!!请问该如何能让dbgrid的某一列能编辑,另一些列不能编辑呢(在线等待)
- 用delphi写了个dll,pb调用它时时正常的,可是退出时总报错!
- DELPHI 关于quick report打印只出每条记录的第一个字.急!
- 急需AspExpress Professional Edition(http://www.asp-express.com)
- 如何用ClientDataSet1调用oracel返回带参数存储过程?
- 最近才发现Boolean原来是ByteBool
我的myBuffer是有值的 是$40013600 就是想把myBuffer的内存拷贝给bitmap 不知道该怎么实现?
我不同你说了,我只告诉你正确的将myBuffer拷贝到ABitmap就行了: stride = (ABitmap.Width * 3 + 2) and not 3; // 24位图像每行数据字节
size = stride * ABitmap.Height; // 图像总的字节数
GetMem(myBuffer, size); // myBuffer里面是些乱七八糟的随机数
CopyMemory(ABitmap.ScanLine[Height - 1], myBuffer, size);
GetMem(myBuffer, sizeof(pbyte));
CopyMemory(ABitmap.ScanLine[Height - 1], myBuffer, Width * Height * 3);
Width * Height * 3计算的是Width所需字节数,但不等于图像每行的字节数,图像每行的字节数必须是4的整倍数。
Width * 3计算的是Width所需字节数,但不等于图像每行的字节数,图像每行的字节数必须是4的整倍数。