精华内容
下载资源
问答
  • html2canvas实现网页保存为图片

    千次阅读 2018-10-28 22:19:29
    今天我们来学习一波怎么将一个网页生成一张图片的,主要的应用场景在,分享,截图等 我主要使用的是一个js库 html2canvas ,下面来了解一下他的详细用法吧。 大家可以去这里...

    今天我们来学习一波怎么将一个网页生成一张图片的,主要的应用场景在,分享,截图等
    我主要使用的是一个js库 html2canvas ,下面来了解一下他的详细用法吧。

    大家可以去这里https://download.csdn.net/download/qq_20343517/10739325下载这个库
    然后直接通过script标签引入或者通过其他方式导入也可以。

    基于html2canvas.js 可将一个元素渲染为canvas,只需要简单的调用,html2canvas(element[,options]);即可,下列html2canvas方法会返回一个包含有canvas元素的promise:

    html2canvas(document.body,{useCORS: true}).then(function(canvas) {
       document.body.appendChild(canvas);
    });
    • 由于canvas对于图片资源的同源限制,经测试,同时包含cdn图片和本地图片的资源的页面,只有本地图片能够被渲染出来。

    canvas转img

    方案一:基于原生canvas的 toDataURL 方法将canvas输出为 data:url 类型的图片地址,再将该图片的地址赋值给 image 元素的src属性即可,

    方案二:使用第三方库 Canvas2Image.js 调用其 convertToImage 方法即可

    <div id="box">
        <h1>hello world</h1>
        <img style="width:100px;" src="abc.png" alt="">
        <p style="background-color:#000;color:#fff;border:1px solid red;">我是一只大灰狼</p>
    </div>
    <a href="#" id="a" download>点击下载图片</a>
    html2canvas(document.getElementById("box"),{useCORS: true}).then(function(canvas) {
        url=canvas.toDataURL();
        a=document.querySelector('#a');
        a.href=url;
    });

    高保真图片

    可以参考这个链接https://segmentfault.com/a/1190000011478657

    展开全文
  • 1. 写在前面今天又发现个好工具,有时候在网上看到点好东西,想保存下次...2. 工具为了实现,我找了找,发现360浏览器有自带的,直接可以将网页保存为图片,但是作为一个开发者,难道要改用360?而且我认为连360都能做

    1. 写在前面

    今天又发现个好工具,有时候在网上看到点好东西,想保存下次也可以看一般我是有这几种途径。
    1.可以添加网页到文件夹,但是这样子看的时候必须要联网。
    2.或者保存在云笔记中。
    3.但是还是不够全,我想将整个网页变成一张图片,想怎么看就怎么看。

    2. 工具

    为了实现,我找了找,发现360浏览器有自带的,直接可以将网页保存为图片,但是作为一个开发者,难道要改用360?而且我认为连360都能做出来的功能,难道谷歌老大做不出来,然后去谷歌网上应用店找到一款这样的工具。只需添加一个拓展工具即可。见图,需要科学上网。
    这里写图片描述
    这里写图片描述
    工具有很多,我选了款评分最多的,而且很高的。捕捉网页截图-FireShot的,名字有点怪,无所谓,然后直接傻瓜式的添加为拓展程序即可。添加完以后,使用直接点击全是中文,见图。
    这里写图片描述
    这个拓展程序文件已经被我打包出来了,但是不知道为什么我把这.crx文件上传到csdn资源上传总是成功了,但是去查看又没有,上次也是一样,不知道什么情况,如果不能科学上网的留下邮箱,我看到可以发你们。

    展开全文
  • 我的页面的上的表格是用html+css写出来的,请问怎么保存下载到本地word文件呢?![图片说明](https://img-ask.csdn.net/upload/201610/06/1475747764_373160.png)
  • 一个仿站工作者,当遇到网站有版权时甚至加密的时候,WEBZIP也熄火,怎么扣取网页上的图片和背景图片呢。有时候,可能会想到用火狐,这款浏览器好像一个强大的BUG,文章有版权,屏蔽右键,火狐丝毫也不会被影响...
  • 在线文档,顾名思义就是通过在线的方式对文档进行操作,实现如数据填报、数据计算、可视化、在线导入导出 Excel 文件、自定义系统外观、工具栏、在网页内满足单人或多人编辑并将文件上传至服务端保存的功能。...

    在线文档,顾名思义就是通过在线的方式对文档进行操作,实现如数据填报、数据计算、可视化、在线导入导出 Excel 文件、自定义系统外观、工具栏、在网页内满足单人或多人编辑并将文件上传至服务端保存的功能。

    国内外常见的在线文档,包括:微软Office Online、Google文档、石墨文档、腾讯文档、飞书、语雀等。点击此处,了解这些软件产品的功能对比

    bc529ad9b710579ee2c8a6ec0e6b0d9b.png

    通过对比这些软件产品,可以将它们的主要功能点,概括为三个层面:数据填报、协同编辑和类Excel的呈现方式。

    • 数据填报:支持在线导入导出 Excel、大数据量填报、填报暂存、多 sheet 填报、多级上报
    • 协同编辑:支持多人协作、实时编辑、数据同步、多级上报、历史查询
    • 类Excel的呈现方式:提供类Excel的操作模式和使用体验,兼容Excel数据结构

    可以说,只要满足了上述需求,就可以开发出一款优秀的在线文档。

    而SpreadJS纯前端表格控件,恰好满足。

    5f0ff9e4a1df52f91b1a26ed79088e02.png

    下面,我们就通过Spring Boot + Vue.js的前后分离开发技术,演示如何借助 SpreadJS 搭建一款简单的在线文档系统。

    在线文档系统示例

    该系统集成了SpreadJS表格控件,目前已经实现了在线读取、编辑Excel 文档的功能,文末提供了示例代码下载,大家可以按照 Readme文档中的步骤运行。

    PS:欢迎大家前往SpreadJS 产品官网,了解并学习这款纯前端表格组件,以实现更多在线文档的功能。

    如下是系统运行截图。

    进入页面(File List的展示文件均为服务器上的文件):

    8218237c964ffd95ef14c789fc8f4548.png

    单击 Excel文件,右侧会显示该文件的详细信息:

    7c84123484df41267e37cecac986d765.png

    双击文件夹:

    23ca1573df0ca45dfcff4a2376796b0c.png

    点击某个 Excel文件,打开编辑文件的弹框:

    c40936249786079343c3a064ff0143e1.png

    在线对Excel文件进行修改、删除:

    d440fe285a20aca9cdd479a1172e86bc.png

    技术栈

    • 后端:SpringBoot
    • 前端:SpreadJS、Vue、ElementUI、Typescript

    关键步骤

    1. 实现该系统的相关依赖包都写在package.json里,执行命令 npm install 即可安装,主要有:

    "@grapecity/spread-sheets": "^13.0.5",

    "@grapecity/spread-sheets-resources-zh": "^13.0.5",

    "@grapecity/spread-sheets-vue": "^13.0.5",

    "@grapecity/spread-sheets-pdf": "^13.0.5",

    "@grapecity/spread-sheets-print": "^13.0.5",

    "@grapecity/spread-sheets-charts": "^13.0.5",

    "@grapecity/spread-sheets-shapes": "^13.0.5",

    1. 在 SpreadJS.vue文件中引入 SpreadJS 相关安装包:

    import "@grapecity/spread-sheets-vue";

    import * as GC from "@grapecity/spread-sheets";

    import "@grapecity/spread-sheets-charts";

    import "@grapecity/spread-sheets-shapes";

    1. 在App.vue文件中引入 SpreadJS 的样式文件、中文资源文件:

    import '@grapecity/spread-sheets-resources-zh'

    import '@grapecity/spread-sheets/styles/gc.spread.sheets.excel2016colorful.css'

    1. List.vue文件中是主要的页面逻辑,双击文件时弹出弹框,弹框中引入了自定义的组件:

    <MySpreadJS :mySpread="mySpread" :filePath="filePath" @done="childDone" :closeSpread='closeSpread'></MySpreadJS>

    1. mySpread变量中是从后台返回的文件流,传给MySpreadJS 组件,子组件接收到数据后,调用excelIO.open方法打开Excel 文件流,

    spreadInitHandle: function(spread) {

    this.spread = spread;

    let self = this;

    let excelIO = new http://ExcelIO.IO();

    excelIO.open(

    this.spreadblob as Blob,

    function(json) {

    let workbookObj = json;

    self.spread.fromJSON(workbookObj);

    },

    function(e) {

    alert(e.errorMessage);});},

    1. 在线编辑Excel文件,并保存。借助excelIO.save方法可以将修改后的文件流传给后台,实现文件的修改功能:

    excelIO.save(

    curjson,

    function(fileblob) {

    let formData = new FormData();

    formData.append("filePath", self.filePath);

    formData.append("type", "update");

    formData.append("excelFile", fileblob);

    httpUtils.post("/filemanager/savefile", formData).then(response => {

    self.$message({

    type: "success",

    message: "保存成功!"

    });

    self.$emit("done");

    });},

    function(e) {

    //process error

    console.log(e);});

    后台接口介绍

    获取某路径下的文件集合:getfolder

    • 参数:path(指明文件夹路径)

    12ce0e276b50848e48e686cc4c89e55a.png

    获取Excel文件内容:getFile

    • 参数:filePath(指明文件路径)

    07e75206ea5677c252f4ac7f5a3a72dd.png

    保存文件:savefile

    • 参数:filePath(指明文件路径)、type(create创建文件、update更新文件)

    c0c9cbdbd29cc3994316cfc49f144d7d.png

    删除文件:deletefile

    • 参数:filePath(指明文件路径)

    c6c326149b3d3682a77a2df2151b3510.png

    ----

    以上就是Vue+SpringBoot+SpreadJS 实现的一个简单的在线文档,如需了解详细的实现步骤,请下载示例代码。

    SpreadJS除提供示例中在线读取、编辑Excel 文档的功能外,还提供了Web Excel 组件开发、数据填报、Excel 类报表设计等功能。除此之外,您还可通过调用API对SpreadJS进一步扩展,满足协同编辑、多级上报、填报暂存等更多场景的业务需要,欢迎前往SpreadJS 产品官网,下载试用。

    展开全文
  • 这是上半年遇到的一个小需求,想实现网页的抓取,并保存为图片。研究了不少工具,效果都不理想,不是显示太差了(Canvas、Html2Image、Cobra),就是性能不怎么样(如SWT的Brower)。后发现无界面浏览器可以满足这...

    使用PhantomJS实现网页截图服务

    2015-12-12来源:Java教程人气:99

     

        这是上半年遇到的一个小需求,想实现网页的抓取,并保存为图片。研究了不少工具,效果都不理想,不是显示太差了(Canvas、Html2Image、Cobra),就是性能不怎么样(如SWT的Brower)。后发现无界面浏览器可以满足这个条件,大致研究了一下PhantomJS与CutyCapt,两者都是Webkit内核,其中PhantomJS使用上更方便一些,尤其在Windows平台上,如果在linux下,从2.0版本后需要自己去机器上编译了(大概要编译3个小时,不得不说,g++就是个渣渣,同样的项目,在vc下编译快得,不谈了,毕竟是免费开源的编译器)。下面介绍PhantomJS结合java代码实现的网页截图技术:

       

     一、环境准备

        1、PhantomJS脚本的目录:D:/xxx/phantomjs-2.0.0-windows/bin/phantomjs

        2、截图脚本:D:/xxx/phantomjs-2.0.0-windows/bin/rasterize.js

        截图的脚本在官网上有提供,但是我这里需要说明一下它的高宽度设计原理:

    page.viewportSize = { width: 600, height: 600 };

       这个是默认的高度,也就是600X600,我建议大家把height设置小一点,我这边设置的是width:800,height:200。因为实际上,在不同时设置高度与亮度的情况下,如果真实的网页的高度大于设置值时,图片会自动扩充高宽度的,直到整个页面显示完(当你想截取小的图片时,可能由于默认设置的太大,会使图片有很大一块空的)。如果同时设置了高宽度,下面的代码会被执行,就会对网页的部分进行截取了:

    page.clipRect = { top: 0, left: 0, width: pageWidth, height: pageHeight };

        3、先用命令行测试一下:    

    D:/xxx/phantomjs-2.0.0-windows/bin/phantomjs D:/xxx/phantomjs-2.0.0-windows/bin/rasterize.js http://www.QQ.com D:/test.png

        如果配置好了,应该可以看到生成的图片了。当然还可以配置高宽度的参数,在上面的命令后加上:" 1000px"或" 1000px*400px",都是可以的。

     

    二、服务器代码

        作为一个网页截图服务,这部分代码片段应当被布署在服务器上,当然不必全照搬啦,根据自己的需求来用就好了:

      1 package lekkoli.test;
      2 
      3 import java.io.BufferedInputStream;
      4 import java.io.BufferedReader;
      5 import java.io.ByteArrayOutputStream;
      6 import java.io.File;
      7 import java.io.FileInputStream;
      8 import java.io.IOException;
      9 import org.apache.log4j.Logger; 
     10 
     11 /**
     12  * 网页转图片处理类,使用外部CMD
     13  * @author lekkoli
     14  */
     15 public class PhantomTools {
     16 
     17     PRivate static final Logger _logger = Logger.getLogger(PhantomTools.class);
     18 
     19     // private static final String _tempPath = "/data/temp/phantom_";
     20     // private static final String _shellCommand = "/usr/local/xxx/phantomjs /usr/local/xxx/rasterize.js ";  Linux下的命令
     21     private static final String _tempPath = "D:/data/temp/phantom_";
     22     private static final String _shellCommand = "D:/xxx/phantomjs-2.0.0-windows/bin/phantomjs D:/xxx/phantomjs-2.0.0-windows/bin/rasterize.js ";    
     23 
     24     private String _file;
     25     private String _size;
     26 
     27     /**
     28      * 构造截图类
     29      * @parm hash 用于临时文件的目录唯一化
     30      */
     31     public PhantomTools(int hash) {
     32         _file = _tempPath + hash + ".png";
     33     }
     34 
     35     /**
     36      * 构造截图类
     37      * @parm hash 用于临时文件的目录唯一化
     38      * @param size 图片的大小,如800px*600px(此时高度会裁切),或800px(此时 高度最少=宽度*9/16,高度不裁切)
     39      */
     40     public PhantomTools(int hash, String size) {
     41         this(hash);
     42         if (size != null)
     43             _size = " " + size;
     44     }
     45 
     46     /**
     47      * 将目标网页转为图片字节流
     48      * @param url 目标网页地址
     49      * @return 字节流
     50      */
     51     public byte[] getByteImg(String url) throws IOException {
     52         BufferedInputStream in = null;
     53         ByteArrayOutputStream out = null;
     54         File file = null;
     55         byte[] ret = null;
     56         try {
     57             if (exeCmd(_shellCommand + url + " " + _file + (_size != null ? _size : ""))) {
     58                 file = new File(_file);
     59                 if (file.exists()) {
     60                     out = new ByteArrayOutputStream();
     61                     byte[] b = new byte[5120];
     62                     in = new BufferedInputStream(new FileInputStream(file));
     63                     int n;
     64                     while ((n = in.read(b, 0, 5120)) != -1) {
     65                         out.write(b, 0, n);
     66                     }
     67                     file.delete();
     68                     ret = out.toByteArray();
     69                 }
     70             } else {
     71                 ret = new byte[] {};
     72             }
     73         } finally {
     74             try {
     75                 if (out != null) {
     76                     out.close();
     77                 }
     78             } catch (IOException e) {
     79                 _logger.error(e);
     80             }
     81             try {
     82                 if (in != null) {
     83                     in.close();
     84                 }
     85             } catch (IOException e) {
     86                 _logger.error(e);
     87             }
     88             if (file != null && file.exists()) {
     89                 file.delete();
     90             }
     91         }
     92         return ret;
     93     }
     94 
     95     /**
     96      * 执行CMD命令
     97      */
     98     private static boolean exeCmd(String commandStr) {
     99         BufferedReader br = null;
    100         try {
    101             Process p = Runtime.getRuntime().exec(commandStr);
    102             if (p.waitFor() != 0 && p.exitValue() == 1) {
    103                 return false;
    104             }
    105         } catch (Exception e) {
    106             _logger.error(e);
    107         } finally {
    108             if (br != null) {
    109                 try {
    110                     br.close();
    111                 } catch (Exception e) {
    112                     _logger.error(e);
    113                 }
    114             }
    115         }
    116         return true;
    117     }
    118 }

        使用上面的PhantomTools类,可以很方便地调用getByteImg方法来生成并获取图片内容。  

         

        附上我的截图配置脚本:rasterize.js,至于PhantomJS,大家就自行去官网下载吧。

        转载请注明原址:http://www.cnblogs.com/lekko/p/4796062.html  

     

    转载于:https://www.cnblogs.com/firstdream/p/5123007.html

    展开全文
  • 图片怎么批量修改尺寸

    千次阅读 热门讨论 2018-12-13 17:07:45
    有时候我们做网页,需要代码来实现,这样调整图片大小不是很方便,我们一般采用直接修改图片大小的方式,那么怎样修改图片的大小讷。如图几张图片要改一样大小的。 采用美图秀秀,可以批量进行操作。 电脑下载...
  • 大家在下载网页图片时,是不是已经习惯使用网页的右键另存功能?这种方式虽然便捷,但一次只能保存一张图片,如果页面中有多张图片时,操作起来就显得比较低效。 Folx的集合浏览器上下文菜单功能,可以帮助用户...
  • 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。我们Z常规的做法就是通过鼠标右键,选择另存。但有些图片鼠标右键的...
  • 保存网页手动生成一下,需要图片转PDF的小工具。 结果搜半天,搜到一个一次只支持5张图片,有这功夫我放word里就转了。 我文件夹下有600多张图片,生产PDF。全选放word里,竟然是倒序,不知道怎么排序,也许可以...
  • 今天清理chrome书签,突然就点到了一个关于 知乎五周年的网页,这帮程序员的脑子真有趣,就算是保存一年后再看也还是觉得好有趣,下边是一个截图图片描述 这个网页展示了一个类似ide接口的小窗口,文字逐步输入,...
  • 可以禁用 同时属性里的选中跟动作的效果一样 可以直接用这个选中 当你发现不需要动态面板的时候右键...谷歌浏览器右键单击找到最后一行:审查元素 其中的图片文件就是素材 然后复制图片地址 打开网页再另存 页...
  • 场景:需要长截图整个网站; 效果: 我进行了缩小和模糊处理,涉及到公司业务.模糊的可以看到是忽略了浏览器的头部,保留了完整的整个网页 ...转换为图片流,并保存 pom.xml <!-- 截图插件 --> <dependen
  • 在日常的工作生活中,截图可是一个必不可免的操作,特别是需要长屏幕的截图。...方法一:使用浏览器自带的截图功能现在很多浏览器都已经自带把网页截取为图片的功能。打开需要保存网页点击菜单,...
  • 有时需要将网页相关的文件也保存到本地,如图片、附件等。对于这么多的数据应用,什么样的服务器才是最适合数据采集的呢? 首先,软件数据的采集相对来说复杂很多。目前,101 异构数据采集技术可以实现
  • 以下网页都是由 Typora 和 VLOOK™ 共同编辑和生成的,所有的功能特性和样式你都能直接体验。 • 有关 VLOOK™ 特性的详细介绍、样例及使用说明详见《VLOOK™ 快速参考手册》,国内链接• 有关脚本化图表的详细介绍...
  • 添加了 一个html解析的 小东西 测试了 所有的功能 实现 网页保存为 JpG 图片 也有个小的收藏夹, 因为用大浏览器不习惯就自己做了个 ,想实现地址栏图标 实在能力有限找了很久也没找到办法,不知道怎么去搜网站根...
  • web采集程序?网页抓取程序?小倫程序?不管怎么叫,这种程序应用... 目录 抓取一个远程网页保存到本地 改进:处理乱码 同时下载远程网页图片(和其它文件) 改进:探测真实URL 改进:避免重复下载 实战举例
  • 为了生成适应于不同屏幕大小、系统版本的图片,我使用 bash 编写了一系列脚本,并实现了一个通用的模板化 SVG 格式,详情见 MaterialColdStart 和 AndroidSVGScripts。 经过自定义窗口背景和其他优化,应用在手机上...
  • C#基础类库

    2018-07-11 08:45:26
    3.把Byte流上传到指定目录并保存为文件 复制代码 UpLoadFiles 页面专用类 19.时间操作类 DateFormat 返回每月的第一天和最后一天 复制代码 TimeHelper 1.将时间格式化成 年月日 的形式,如果时间为null,返回当前...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    实现了屏幕绘图操作,实现电子标尺数据计算以及显示,有数据库操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 ...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    实现了屏幕绘图操作,实现电子标尺数据计算以及显示,有数据库操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 ...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    实现了屏幕绘图操作,实现电子标尺数据计算以及显示,有数据库操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 ...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    实现了屏幕绘图操作,实现电子标尺数据计算以及显示,有数据库操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 ...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    实现了屏幕绘图操作,实现电子标尺数据计算以及显示,有数据库操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 ...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    实现了屏幕绘图操作,实现电子标尺数据计算以及显示,有数据库操作保存数据。 VC++ ini文件读写操作类实例 VC++版源代码统计工具 内含自绘CMenu、CButton、CDialog、CStatic、CListCtrl等。 VC++6.0 控制摄像头 ...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

网页保存为图片怎么实现