相关文章推荐
酒量大的拐杖  ·  Java ...·  1 年前    · 
儒雅的机器猫  ·  RWKV - 知乎·  1 年前    · 

页面转换为图片保存到手机html2canvas、base64ToPath

本人只解决了 html2canvas、base64ToPath的引入问题,本文章解决方案并不完整

完整示例请参考 uni-app 中使用 html2canvas 生成图片(支持多端)_不想搬砖。的博客-CSDN博客

使用html2canvas将页面标签转换为图片。

1、引入html2canvas

因为uniapp中不好使用npm安装,我们到html2canvas官网下载他的集成js文件引入使用。

html2canvas地址: html2canvas - Screenshots with JavaScript *可能打不开需要用vpn

GitHub地址: https://github.com/niklasvh/html2canvas *没找到html2canvas.min.js文件

import html2canvas from "@/common/html2canvas.min.js"; //dom节点转canvas转图片

生成图片代码

<script lang="renderjs" module="canvasImage">
// 因为用使用dome操作,uniapp只能使用renderjs的方法操作dome
// 这里另外简历一个script 使用renderjs渲染图片避免与其他代码冲突
// canvasImage.generateImage标签中根据id来执行相应模块的事件
import html2canvas from "@/common/html2canvas.min.js"; //dom节点转canvas转图片
export default {
  methods: {
    imgsave(e,ownerFun) {
     ownerFun.callMethod('_showLoading','正在生成图片') // 生成图片的 loading 提示
      setTimeout(() => {
        const dom = document.getElementById('backBox') // 需要生成图片内容的 dom 节点
        html2canvas(dom, {
          width: dom.clientWidth, //dom 原始宽度
          height: dom.clientHeight,
          scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0
          scrollX: 0,
          useCORS: true, //支持跨域
          // scale: 2, // 设置生成图片的像素比例,默认是1,如果生成的图片模糊的话可以开启该配置项
        }).then((canvas) => {
          // 生成成功
          // html2canvas 生成成功的图片链接需要转成 base64位的url
          ownerFun.callMethod('receiveRenderData', canvas.toDataURL('image/png'))
        }).catch(err=>{
          // 生成失败 弹出提示弹窗
          ownerFun.callMethod('_errAlert',`【生成图片失败,请重试】${err}`)
      }, 300)
</script>

base64转path的方法在uni的插件市场搜索base64ToPath安装即可

mport { base64ToPath } from "../../../../../js_sdk/mmmm-image-tools/index"; // 图片地址转base64url

最近根据业务需求需要适配h5端,因为uni.saveImageToPhotosAlbum这个api无法在h5中使用,只能调用预览api uni.previewImage 将生成的图片预览出来,让用户自行保存图片

if (navigator) { // 判断是浏览器还是手机 true为手机false为app
        uni.showToast({
          title: "长按保存到手机",
          duration: 2000,
          icon: "none",
        setTimeout(() => {
          uni.previewImage({ // 预览api
            urls: [filePath],// 需要数组的方式
            current: 0,
            indicator: "default",
        }, 1000);
      } else {
        uni.saveImageToPhotosAlbum({
          filePath, // 需要临时文件路径,base64无法保存
          success: () => {
            this._showToast("保存图片成功");
          fail: () => {
            this._showToast("保存图片失败,请重试");
                    页面转换为图片保存到手机html2canvas、base64ToPath本人只解决了 html2canvas、base64ToPath的引入问题,本文章解决方案并不完整完整示例请参考uni-app 中使用 html2canvas 生成图片(支持多端)_不想搬砖。的博客-CSDN博客使用html2canvas将页面标签转换为图片。1、引入html2canvas因为uniapp中不好使用npm安装,我们到html2canvas官网下载他的集成js文件引入使用。html2canvas地址:
html2canvas(document.getElementById("id1"), {
onrendered: function(canvas) {
document.getElementById("id2").appendChild(canvas);//生成画布后如何处理,当然可以在新标签打开,在浮层展示等等
canvas_id: 'canvas'//通过修改html2canvas源码添加canvas的id
Note:html2canva
				
图像和base64转换记录一、插件地址二、使用步骤1.引入库2.pathToBase643.base64ToPath 使用uniapp开发微信小程序的过程中遇到,需要将图片转换base64字符串上传 使用工具 image-tools ------------- HBuilderX插件市场 图像转换工具 一、插件地址 插件传送门 二、使用步骤 1.引入库 代码如下(示例): import { pathToBase64, base64ToPath } from '
或者下载后按包引入 // 以下路径需根据项目实际情况填写 import { pathToBase64, base64ToPath } from 'node_modules/image-tools/index.js' 第三步:使用 pathToBase64 从图像路径转换base64uni-app、微信小程序和5+APP使用的路径不支持网络路径, 如果是网络路径需
在做微信公众号H5页面时,需求要求html页面生成base64图片,并保存手机相册中。之前没做过,在网上搜了相关的资料。了解到了html2canvas.js。 html2canvas首先将页面生成canvas画布,然后转换base64图片。最后长按图片保存手机相册。 这是效果图,接下来我们看代码。 <!doctype html> <meta charset="utf-8"> <meta http-equ
```html <script src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script> 然后,在你的JavaScript代码中,使用以下代码将截图转换base64: ```javascript // 获取要截图的元素 var element = document.getElementById("my-element"); // 使用html2canvas截图并将结果转换base64 html2canvas(element).then(function(canvas) { var base64 = canvas.toDataURL(); console.log(base64); 在上面的代码中,`my-element`是你要截图的元素的ID。截图完成后,`toDataURL()`方法将返回一个base64字符串,你可以将其用于需要的任何用途。