乐于分享
好东西不私藏

uni-app如何将整个页面保存为图片,并且公众号h5中保存图片到相册

uni-app如何将整个页面保存为图片,并且公众号h5中保存图片到相册

以有涯随无涯,殆已!已而为知者,殆而已矣! —庄周-

例如你玩星座付费解析后,需要把所有的分析结果变成图片保存到手机相册中,涉及到2个内容

1.如果把整个页面变成图片

2.公众号H5情况下如何保存图片到相册

技术来源

先说如何把整个页面变成图片,因为重新去做一个canvas去塞入众多内容不如直接把将整个页面保存为图片

用到技术来自文章:《uniapp如何实现将整个页面保存为图片功能

https://bbs.itying.com/topic/690343544a7a41007019982a

原理基本也就是把整个图片放入画布转成图片

H5平台

// 安装 html2canvas:npm install html2canvasimport html2canvas from 'html2canvas';// 方法示例async function capturePage() {  const element = document.getElementById('capture-area'); // 指定要截图的区域  const canvas = await html2canvas(element, {    useCORStrue// 允许跨域图片    scale2 // 提高清晰度  });  // 转换为图片并下载  const imgData = canvas.toDataURL('image/png');  const link = document.createElement('a');  link.href = imgData;  link.download = 'page-screenshot.png';  link.click();}

微信小程序平台

<!-- 在模板中添加 canvas --><canvasid="myCanvas"canvas-id="myCanvas"style="width:100%;height:100vh;"></canvas>
// 在 methods 中定义方法methods: {  savePageAsImage() {    const query = uni.createSelectorQuery().in(this);    query.select('#capture-area').fields({ nodetruesizetrue }).exec(res => {      const node = res[0].node;      // 创建 canvas 上下文      const ctx = uni.createCanvasContext('myCanvas'this);      ctx.drawImage(node, 00300200); // 调整尺寸      ctx.draw(false() => {        // 保存到相册        uni.canvasToTempFilePath({          canvasId'myCanvas',          successres => {            uni.saveImageToPhotosAlbum({              filePath: res.tempFilePath,              success() => uni.showToast({ title'保存成功' })            });          }        });      });    });  }}

如何保存图片

在uni-app开发H5的环境下是无法使用uni.saveImageToPhotosAlbum;在浏览器中可以直接a标签打开图片进行下载。但是在微信开发工具和公众号H5真机测试是没办法实现的

canvas转成的画布是Base64,也无法使用uni.previewImage预览;只能通过image标签直接显示 提示用户长按保存

<!-- 保存页面按钮 --><viewclass="save-page-section">   <viewclass="save-btn" @click="savePage">       <textclass="save-icon">📷</text>       <textclass="save-text">保存页面</text>   </view> </view>         <!-- 弹窗 --><viewclass="preview-modal"v-if="showPreviewModal" @click="closePreviewModal">      <viewclass="modal-content" @click.stop>            <viewclass="modal-header">                  <textclass="modal-title">页面预览</text>                  <textclass="modal-close" @click="closePreviewModal">×</text>            </view>            <viewclass="modal-body">                  <imagev-if="previewImage":src="previewImage"mode="aspectFit"class="preview-image"                        show-menu-by-longpress />                  <viewclass="preview-tip">                        <textclass="tip-icon">👆</text>                        <textclass="tip-text">长按图片保存到手机相册</text>                  </view>            </view>      </view></view>

# 源码下载

由于代码很长,打包下载本地运行看看效果(注意需要真机才能长按保存)

https://www.123865.com/s/SmZtVv-fnegh

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » uni-app如何将整个页面保存为图片,并且公众号h5中保存图片到相册

猜你喜欢

  • 暂无文章