如何将Pbyte类型中的图片存入bitmap中。

wwjjw001 2011-06-22 05:37:01
我得到了一个Pbyte类型的图片,可是如何将它存入到Tbimap类型中呢,我需要做一些后期处理。
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Frank.WU 2011-06-23
  • 打赏
  • 举报
回复
必须还要知道它的长度,否则没戏
iamduo 2011-06-22
  • 打赏
  • 举报
回复
Tbimap.LoadFromStream(PByte,长度)
mdejtod 2011-06-22
  • 打赏
  • 举报
回复
你要知道这缓冲区的图片的宽,高,位深,才能正确显示出来
给你个例子看下,ph 里包含了这些信息

function OnPreview(ph : PBitmapInfoHeader; buff: pbyte): HRESULT; stdcall;
var dc : HDC;
iw,ih : Integer;
bmp : TGpBitmap;
bd : TBitmapData;
gp : TGpGraphics;
begin
dc := GetDC(form1.pnlDc.Handle);
bmp := TGpBitmap.Create(ph^.biWidth,ph^.biHeight,pf24bppRGB);
bd := bmp.LockBits(GpRect(0,0,bmp.Width,bmp.Height),[imRead],pf24bppRGB);
CopyMemory(bd.Scan0,buff,bd.Height * bd.Stride);
bmp.UnlockBits(bd);
bmp.RotateFlip(rfX180);
iw := form1.pnlDc.Width;
ih := Round(ph^.biHeight * iw/ph^.biWidth);
// StretchDIBits(dc,0,0,iw,ih,0,0,ph^.biWidth,ph^.biHeight,buff,pBITMAPINFO(ph)^,DIB_RGB_COLORS, SRCCOPY);//拉伸显示时效果不好,所以用TGPBITMAP类来转换
gp := TGpGraphics.Create(dc);
gp.DrawImage(bmp,GpRect(0,0,iw,ih),0,0,bmp.Width,bmp.Height,utPixel);
FreeAndNil(bmp);
FreeAndNil(gp);
ReleaseDC(Form1.pnlDc.Handle,dc);
end;
山东蓝鸟贵薪 2011-06-22
  • 打赏
  • 举报
回复
什么意思???????
要保存到数据库中吗>>>>>>>>>

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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