远程控制篇:抓取远程屏幕图像

{抓屏幕图像,保存为内存流--BMP流,压缩BMP流,JPG流,以及使用流}
{在网络中传送BMP流和JPG流的速度没测试过}
{BMP流的压缩是无损压缩}
{
全局变量
memoryStream:TMemoryStream;
memoryStream:=TMemoryStream.create;
}

var
image:Timage;
jpgstream:TJPEGImage;
ss:tcanvas;

begin
ss:=tcanvas.Create;
ss.Handle:=getdc(0);
image:=timage.Create(self);
image.width:=Screen.width;
image.Height:=screen.Height ;
image.picture.bitmap.PixelFormat:= pf16bit;
bitblt(image.canvas.handle,0,0,image.width,image.height,ss.handle,0,0,srccopy);

{大大的原始BMP流
image.picture.bitmap.SaveToStream(memoryStream);
}

{无损压缩BMP流  uses Zlib.pas
{先定义变量count,DestStream,SourceStream}
image.picture.bitmap.SaveToStream(memoryStream);
Count:=memoryStream.Size;
DestStream:=TMemoryStream.Create;
{压缩方式:clnone,clfastest,cldefault,clmax}
SourceStream:=TCompressionStream.Create(cldefault, DestStream);
try
memoryStream.SaveToStream(SourceStream);
SourceStream.Free;
memoryStream.Clear;
memoryStream.WriteBuffer(Count, SizeOf(Count));
memoryStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
}

{JPG流  uses jpeg
jpgstream:= TJPEGImage.Create;
jpgstream.Assign(image.picture.bitmap);
jpgstream.CompressionQuality:=50; {压缩质量}
jpgstream.Compress;
jpgstream.SaveToStream(memoryStream);{保存为JPG流}
jpgstream.free;
}

ReleaseDC(0,ss.Handle);
image.free;

{发送内存流...}

-----------------------------------------------------
{接收内存流...}

{使用BMP流
image.Picture.Bitmap.LoadFromStream(bmpStream);}

{还原压缩的BMP流  uses:Zlib.pas
先定义变量count,buffer,DestStream,SourceStream
memoryStream是压缩的BMP流
memoryStream.ReadBuffer(Count, SizeOf(Count));
GetMem(Buffer, Count);
DestStream:=TMemoryStream.Create;
SourceStream:=TDecompressionStream.Create(memoryStream);
Try
SourceStream.ReadBuffer(Buffer^, Count);
  DestStream.WriteBuffer(Buffer^, Count);
  DestStream.Position:=0;
  image.Picture.Bitmap.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
}

使用JPG流 image.Picture.Assign(jpgstream);

转载于:https://www.cnblogs.com/FKdelphi/p/4643125.html

远程控制篇:抓取远程屏幕图像相关推荐

  1. php图片截取后缀,PHP抓取远程图片(含不带后缀的)教程详解

    一.创建项目 作为演示,我们在www根目录创建项目grabimg,创建一个类GrabImage.php和一个index.php. 二.编写类代码 我们定义一个和文件名相同的类:GrabImage cl ...

  2. java控制vnc_VNC 抓取远程桌面

    VNC (Virtual Network Computing)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在基于 UNI ...

  3. 百度UEditor编辑器关闭抓取远程图片功能(默认开启)

    2019独角兽企业重金招聘Python工程师标准>>> 这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白 ...

  4. #.NET分别以GET和POST方式抓取远程页面

    代码 引入命名空间 using System.IO; using System.Net; using System.Text; using System.Text.RegularExpressions ...

  5. 一个抓取电脑屏幕的小控件台程序

    一个抓取电脑屏幕的小控件台程序 using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  6. gitlab 分支操作笔记\新建远程分支\抓取远程分支\复制远程\删除分支

    密码重新输入 git config --global http.emptyAuth true 1.不复制远程,直接新建远程分支.(非正规操作) git init //初始化 git remote ad ...

  7. php 模拟客户端访问,PHP通过伪造和模拟客户端COOKIE登陆来采集抓取远程网址

    平时开发中经常会遇到抓取某个页面内容,但是有时候某些页面需要登陆才能访问,最常见的就是论坛,这时候我们需要来使用curl模拟登陆. 以下讨论的是和伪造模拟客户端COOKIE登陆采集抓取远程网址相关的P ...

  8. PHP抓取远程图片教程(包含不带后缀图片)

    之前做微信登录开发时候,发现微信头像图片没有后缀名,传统的图片抓取方式不奏效,需要特殊的抓取处理.所以,后来将各种情况结合起来,封装成一个类,分享出来. 创建项目 作为演示,我们在www根目录创建项目 ...

  9. php 抓取远程内容,php抓取远程网页内容简单示例

    本教程用php实现像asp里xmlhttp的功能一样,抓取远程网页内容. php有好多函数可以打开远程url读取内容.但采集推荐大家用fsockopen函数, 我们先来看一下fsockopen函数的语 ...

最新文章

  1. linux操作系统-设置静态ip
  2. 九度 题目1548:平面上的点
  3. Could not find artifact com.sun:tools:jar:1.5.0 解决办法
  4. IT项目管理不能犯的错误
  5. No monitoring data is available
  6. 计算机设计大赛国奖作品_5. 模拟退火求解旅行商问题
  7. python默认参数不能定义为可变对象类型
  8. 计量风险系列—两大定价产品怎么计算风险损失
  9. Sublime Text 全程指南
  10. Hibernate本机SQL查询示例
  11. 是以微型计算机为中心 配以相应的外围设备,______是以微型计算机为中心,配以相应的外围设备、电源和辅助电路,以及指挥微型计算机工作的系统软件而构成的。...
  12. Oracle图书馆借阅管理数据库,图书借阅系统的oracle数据库
  13. 微信屏蔽网站域名,提示“已停止访问该网页”该怎么办?
  14. 人生一世,草木一秋,再伟大的人在历史长河中也只是一个匆匆过客
  15. c语言钟表程序,制作一个电子时钟C语言版
  16. 【产业互联网周报】华为面向鲲鹏计算产业启动数据基础设施战略;阿里王坚当选中国工程院院士...
  17. 计算机的键盘分别代表什么,键盘中的三个指示灯分别代表什么意思
  18. 平板电脑必装十大软件_知乎高赞回答:职场新人必装的电脑软件有哪些?太全了!...
  19. H5小游戏 - 答题游戏
  20. D2550运行Linux,也发一个128*128的相框lcd4linux的conf

热门文章

  1. Nginx+Tomcat搭建高性能负载均衡集群的实现方法
  2. 2017年山东省两化融合深度行临沂站成功举办
  3. Springmvc_3(SessionAttributes 将数据放入到session中)
  4. 剑指OFFER之用两个栈实现队列(九度OJ1512)
  5. Make my home's PC as proxy server to surf internet
  6. USB设备的插入检测
  7. pdo 连接操作数据库
  8. 查看MySQL数据库中每个表占用的空间大小
  9. JS设计模式初识(四)-迭代器模式
  10. Sequelize Unknown column 'createdAt' in 'field list'?