CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  GAME,图形处理/多媒体

BYTE* lpDestBuf 缓冲区中存有图象数据,怎样取出来存为jpeg图象(或bmp)

楼主bphantom(无花无酒)2003-09-03 14:58:56 在 Delphi / GAME,图形处理/多媒体 提问

已有函数能取得显卡(或显示屏)中的数据,原形为:  
  int   __stdcall   ReadDispWindow(HDC   hdc,int   left,int   top,int   width,int   height,BYTE*   lpDestBuf);  
  函数说明:取指定窗口内的图象数据,存于数据区   lpDestBuf中,lpDestBuf中的第一行数据为图象窗口中最后一行数据,按先后顺序存放。对于8位图象数据方式:每个像素对应其灰度值;对于15位以上数据方式:每个像素有红,绿,蓝三个各8位,共24位颜色值。  
   
  我不知道怎样取出lpDestBuf中的数据,经过怎样的转换才能显示为jpeg.望各位老大给一段程序。  
  问题点数:100、回复次数:8Top

1 楼pop155()回复于 2003-09-03 15:58:06 得分 20

每个像素有红,绿,蓝三个各8位,也就是每三个字节表示一个像素,这也是24位图的表现形式,好像得知道图像的宽和高,24位的可以直接用jpeg.lib中的库函数转换成jpeg,  
  原型:  
  extern   "C"   void   RGBtoJPEGFile(BYTE*   Buff,DWORD   ImageWidth,DWORD   ImageHeight,char*   outFileName);  
  Top

2 楼bphantom(无花无酒)回复于 2003-09-03 16:03:35 得分 0

上面的width,height就是图象的宽和高了。谢谢了,我先试试。Top

3 楼XZHHAI(星之瀚海)回复于 2003-09-03 16:05:46 得分 0

学习Top

4 楼hansome(连环)回复于 2003-09-03 16:07:49 得分 40

var  
          Bitmap:   TBitmap;  
          ByteArray:   PByteArray;  
          x,   y:   Integer;  
  begin  
          Bitmap   :=   TBitmap.Create;  
          Bitmap.Width   :=   320;  
          Bitmap.Height   :=   200;  
          Bitmap.PixelFormat   :=   pf24bit;  
          for   y:=0   to   200   do  
          begin  
                  ByteArray   :=   Bitmap.ScanLine[y];  
                  ByteArray   :=   lpDestBuf;     //这样就可以传入一行象素  
          end;  
          Bitmap.SaveToFile('tom.bmp');  
          Bitmap.Free;  
  end;  
   
  稍做修改和扩展就可以了Top

5 楼bphantom(无花无酒)回复于 2003-09-03 16:17:33 得分 0

在msdn中我找不到,在delphi中怎么做呢?procedure   ReadBuffer(var   Buffer;   Count:   Longint);读吗?读出来要怎么弄成jpg或jpeg图象呢?Top

6 楼bphantom(无花无酒)回复于 2003-09-03 16:19:48 得分 0

to   hansome(连环),好,我试试。Top

7 楼bphantom(无花无酒)回复于 2003-09-03 16:47:26 得分 0

函数原形为:ReadDispWindow(hdc:LongWord;   Left,Top,Width,   Height:Integer;  
                        lpDestBuf:PChar):integer;stdcall;呢?Top

8 楼pop155()回复于 2003-09-04 11:52:55 得分 40

RGBtoJPEGFile   不是微软的冬冬,是第三方连接库,你到google上查一下jpeg.lib   会有的Top

相关问题

  • WinSock缓冲区
  • Socket缓冲区
  • socks缓冲区
  • 如何把Object的各类型的数据成员填充到byte缓冲区
  • 请问如何将一段缓冲区中的Byte型数据,读出存入int型变量中
  • 清除键盘缓冲区
  • 缓冲区的问题
  • 缓冲区溢出,请教。
  • 缓冲区的问题
  • 什么叫缓冲区?

关键词

  • 数据
  • jpeg
  • 函数
  • lpdestbuf
  • 图象
  • bitmap
  • bytearray
  • hdc
  • height
  • byte

得分解答快速导航

  • 帖主:bphantom
  • pop155
  • hansome
  • pop155

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo