[转载]剖析Web屏幕截图的工作原理
2009-02-17 16:18
197 查看
首先通过控件的方式调用windows api来截图,然后返回base64的字符串,因为file类型(文件上传控件)的控件没有方法可以写入路径,所以不能用添加附件的形式来上传截到的图片。所以客户端控件截图后返回的必须是Base64的字符串,放于表单中的一个隐藏框中。
在服务器接收的过程处理。接收的时候用请求的方式取得字符串的内容,然后再转换成字节,然后保存成图片,就实现了截图并存于服务器的功能。
详细代码参考如下:
取得图片的base64编码参考(客户端控件实现,只做参考)
string sFile = "c:\\1.gif";
Image img = Image.FromFile(sFile);
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);//用BMP的方式不会进行压缩这样出来的文件大小就会一样
byte[] bytes = ms.GetBuffer();
this.TextBox1.Text = Convert.ToBase64String(bytes);
转成Base64后形成的字符串如:
R0lGODlhAAUgA+MAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8
服务器端接收字符串信息,并存成图片参考。
byte[] bytelist;
bytelist = Convert.FromBase64String(this.TextBox1.Text);
//byte[] bytelist = bytes;
MemoryStream ms1 = new MemoryStream(bytelist);
Bitmap bm = (Bitmap)Image.FromStream(ms1);
bm.Save("c:\\2.gif", System.Drawing.Imaging.ImageFormat.Gif);
在服务器接收的过程处理。接收的时候用请求的方式取得字符串的内容,然后再转换成字节,然后保存成图片,就实现了截图并存于服务器的功能。
详细代码参考如下:
取得图片的base64编码参考(客户端控件实现,只做参考)
string sFile = "c:\\1.gif";
Image img = Image.FromFile(sFile);
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);//用BMP的方式不会进行压缩这样出来的文件大小就会一样
byte[] bytes = ms.GetBuffer();
this.TextBox1.Text = Convert.ToBase64String(bytes);
转成Base64后形成的字符串如:
R0lGODlhAAUgA+MAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8
服务器端接收字符串信息,并存成图片参考。
byte[] bytelist;
bytelist = Convert.FromBase64String(this.TextBox1.Text);
//byte[] bytelist = bytes;
MemoryStream ms1 = new MemoryStream(bytelist);
Bitmap bm = (Bitmap)Image.FromStream(ms1);
bm.Save("c:\\2.gif", System.Drawing.Imaging.ImageFormat.Gif);
相关文章推荐
- [原创]剖析Web屏幕截图的工作原理
- (转载)反向代理服务器的工作原理
- 【转载】kafka的工作原理
- 由生活的例子来剖析QuickTest的工作原理 推荐
- 转载:iPhone/Mac Objective-C内存管理教程和原理剖析
- 转载:iPhone/Mac Objective-C内存管理教程和原理剖析
- Java并发编程:深入剖析ThreadLocal(这是一篇转载的,不是原创)
- 【转载】内存工作原理二
- [转载]WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
- 转载---WAVE文件格式剖析
- java 注解 实战剖析(转载)
- UML类图关系全面剖析-转载
- Servlet生命周期与工作原理(转载)
- tomcat源码剖析之总体印象[tomcat工作原理]
- [转载]:SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程
- 【转载】HDMI接口的工作原理
- UML类图关系全面剖析和C++代码表现(转载)
- GDB的基本工作原理剖析
- ·剖析MFC六大关键技术(五六)--消息映射与命令传递 (转载,版权归原作者)
- Lucene的工作原理(转载)