zoukankan      html  css  js  c++  java
  • [原创]剖析Web屏幕截图的工作原理

    本文环境 C# vs2005 windowxp
    首先通过控件的方式调用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);

  • 相关阅读:
    CAS 之 集成RESTful API
    RSA客户端js加密服务器C#解密(含源码)
    Java实现文件的RSA和DES加密算法
    对称加密DES和TripleDES
    VCL消息处理机制
    10款你应该了解的开源安全工具
    一个登陆框引起的血案
    npm install -S -D -g 有什么区别
    共享软件中恶意代码插入技术研究
    GyoiThon:基于机器学习的渗透测试工具
  • 原文地址:https://www.cnblogs.com/liubiqu/p/941096.html
Copyright © 2011-2022 走看看