热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php类似html2canvas,使用html2canvas在服务器端生成图片

需求:在项目中需要使用截图的功能,但是我们一般情况都是采用微信或者是QQ进行截图,而且这种方式不方便,更重要的是࿰

需求:在项目中需要使用截图的功能,但是我们一般情况都是采用微信或者是QQ进行截图,而且这种方式不方便,更重要的是,如果要截取的部分超出一屏的话,采用上述方式截图,只能截取一部分内容,而不能将所有的内容截取出来,因此,我们迫切的需要一种可以滚动截图的方式,并且是截取我想要的部分,因此就引出了下面的这种截图方式--html2canvas。

首先最基本的是:引入这个js文件。

下面是实现此功能的具体代码

1. HTML页面的代码

保存图片

2. js代码

$(function(){

$(".saveImage").on('click', function (event) {

var img={}

event.preventDefault();

html2canvas($(".fc-view-container"), {

allowTaint: true,

taintTest: false,

onrendered: function(canvas) {

canvas.id = "mycanvas";

//生成base64图片数据

var dataUrl = canvas.toDataURL();

img.img=dataUrl;

saveimg(img)

}

});

});

});

// 保存图片

function saveimg(img){

$.ajax({

url:"{:U('Index/saveImg')}",

type:'post',

data:img,

success:function(data){

if (data.status) {

//toast.success(data.info,'温馨提示');

setTimeout(function(){

window.location.href="/Uploads/Screen/"+data.url+".png";

}, 1000)

}else{

//toast.error(data.info,'温馨提示');

setTimeout(function(){

window.location.reload(true);

},1200)

};

}

})

}

首先是给保存图片的这个元素绑定一个未来事件,在事件中使用了canvas接口中的toDataURL()方法,我们来解释一下这个方法的作用:

参考Web Api接口 使用此方法,可以返回一个data: URL,根据type参数指定的类型将包含在canvas中的图片文件编码成字符串形式, type参数的默认值为image/png.

其次是:html2canvas($(".fc-view-container")),这个方法用来指定截取并生成图片的Dom对象。

最后我们是后端的代码:

3.PHP代码

/**

* 截图保存图片

*/

public function saveImg()

{

$pictureFlow=I('img');

//图片流转存

$pictureFlow = str_replace('data:image/png;base64,', '', $pictureFlow);

$pictureFlow = base64_decode($pictureFlow);

$NOW_TIME=NOW_TIME;

$new_pic_path = 'Uploads/Screen/'.$NOW_TIME.'.png';

$ret = file_put_contents($new_pic_path, $pictureFlow);

if ($ret) {

$this->success('下载成功',$NOW_TIME);

}else{

$this->error('下载失败');

}

}

服务器端的代码中使用替换操作和base64解码功能,这样就可以直接保存前面截取的部分为png格式的图片。

保存截图如下:

287e9eb6e36a

截取的png图片



推荐阅读
  • HTML:  将文件拖拽到此区域 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 图像处理学习笔记:噪声分析与去除策略
    本文详细探讨了不同类型的图像噪声及其对应的降噪技术,旨在帮助读者理解各种噪声的本质,并掌握有效的降噪方法。文章不仅介绍了高斯噪声、瑞利噪声、伽马噪声、指数噪声、均匀噪声和椒盐噪声等常见噪声类型,还特别讨论了周期噪声的特性及处理技巧。 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文详细介绍了笔记本电脑上多种实用的快捷键,包括屏幕调整、图形设置、分辨率更改、驱动更新、导航操作、音量控制及屏幕锁定等,旨在帮助用户更高效地使用笔记本电脑。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
author-avatar
dmcm0010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有