uniapp开发微信小程序使用painter绘制海报

参考文章:
1.简书大佬文章https://www.jianshu.com/p/e9cab600cf6c
2.CSDN大佬文章https://blog.csdn.net/YouZi_X/article/details/107339893?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_aggregation-13-107339893.pc_agg_rank_aggregation&utm_term=%E4%BD%BF%E7%94%A8Painter%E4%B8%ADonimgok%E6%B2%A1%E5%8F%8D%E5%BA%94&spm=1000.2123.3001.4430\

最初绘制海报时是准备用canvas绘制,但是绘制方法过于复杂,超出了我的能力范围,尝试百次也不能呈现绘制的图片。
于是在我不断利用引擎搜索的努力下,找到了大佬设计的painter插件,比较方便,并且有了成果。

这个功能花了我一整天时间,在此做笔记,并分享给和我碰到相同困难的朋友。

过程中使用了简书文章中大佬的方法,图片内容的获取没问题,可是不论如何都无法正确引入painter插件,无法生成图片。
然后花了半天时间查找适合我引入painter插件的方法,经过测试,在第二篇CSDN大佬文章中完成了图片的生成。

下面直接开始整套方法,结合两篇文章,省略掉不必要的操作。

1.利用git引入文件代码
git clone https://github.com/Kujiale-Mobile/Painter.git


不同插件出现的位置不同,此时,我拉取的paiter包出现在了我的项目根目录:

如果网络不好或者不能使用git,可以手动下载
https://codechina.csdn.net/mirrors/shesw/Painter/-/tree/master/components/painter
由于项目机制的原因,部分引用方法无法引用static外的文件,所以我们将painter复制到static文件夹下(最主要的就是painter文件包,其他的都没用了):

大家跟着我的标注走就好,不要被标注以外的地方干扰。

2.在我需要绘图的页面引入painter插件

就是这一步耗了我半天时间。
uniapp以微信小程序合适的方法引入插件,按道理说方法有很多,有的插件可以有的却不行,方法我一直模糊不清,这个方法成功了:

"style": {"navigationBarTitleText": "Painter","usingComponents":{"painter":"@/static/painter/painter"}
}


另外,main.js主文件中同样引入,才可使用:

3.页面中使用该插件,进行绘图

(1)绘制图片
开发插件的大佬顺便为我们设计了绘图网站,我们在内部绘制好图片,将代码复制下来即可:
绘图网站https://lingxiaoyi.github.io/painter-custom-poster/

我是直接上传了张海报样式的图片,进行测试。
然后将代码赋值到绘制页面旁边的card.js文件中,大家放到哪里都行,只要可以正确引入即可:

然后在绘制页面中引入card.js:

(2)在绘制页面中引入painter插件

此时,就可以使用painter插件了:

<view class="content-img" @click="saveImage"><image :src="data:imagePath" @tap="previewClick" class="img-preview" mode="widthFix"></image>
</view>
<view class="canvas-box"><painter :palette="template" widthPixels="1000" @imgOK="onImgOK" @imgErr="imgErr" />
</view>


(3)利用方法函数进行插件的操作
methods:

// 将之前的绘制代码引入
initData() {uni.showLoading({title: "拼命生成中...",mask: true,});// template动态插入painter组件,自动合成this.template = new Card().palette()console.log('aaa', this.template)
},
// 合成成功后将图片地址传入image,进行显示
onImgOK(e) {console.log('bbb', e)this.imagePath = e.detail.path;uni.hideLoading();
},
// 错误返回,有没有都可以,基本不会出错
imgErr(e) {uni.hideLoading();uni.showModal({title: '提示',content: "生成海报失败",showCancel: false,})console.log('ccc', e);
},
// 下载图片到相册
saveImage() { //保存var _this = this;uni.authorize({scope: "scope.writePhotosAlbum",success() {uni.saveImageToPhotosAlbum({filePath: _this.imagePath,success() {uni.showModal({title: "保存成功",content: "图片已成功保存到相册,快去分享到您的圈子吧",showCancel: false})}});}})},


以上,进入页面即可成功渲染图片。

后续操作,如v-show大家自行改动。

4.动态设置图片

忽略card.js,直接将代码复制给template,动态引入图片地址即可:

大家可以在图片布局网站中将海报设计好,然后再页面中替换即可。
没有新建项目给大家讲解,我怕有缺漏,如果大家无法实现,有任何问题欢迎留言,我会对自己的文章负责0_0!

更多设计、功能的学习经验,大家也可以去我的公众号查看!

————

uniapp开发微信小程序使用painter绘制海报相关推荐

  1. uniapp开发微信小程序使用painter生成海报

    最初绘制海报时是准备用canvas绘制,但是绘制遇到各种问题,且难度颇高,最后也没能绘制出来,也尝试过使用微信官方的 wxml-to-canvas,但需要传入wxml和样式,太为难我这个小小的后端开发 ...

  2. uniapp开发微信小程序设置分包,简单易学(图解)

    我们使用uniapp开发微信小程序的时候,当我们的包体积过大的时候,无法真机模拟 因为小程序单个包只支持2MB,所以这时候我们要选择去分包. 有人要问了分包难吗?分包很简单.但是 最重要的来了,分包这 ...

  3. uni-app开发微信小程序使用微信小程序的插件

    假如使用uni-app开发微信小程序需要用到官方插件----OCR插件, 插件地址如下: OCR插件 申请方式见插件地址介绍.本文主要记录调用方式 1.在manifest.json的"mp- ...

  4. Uni-app开发微信小程序使用本地图片做背景图

    Uni-app开发微信小程序使用本地图片做背景图 <view class="content" :style="{backgroundImage:'url(' + i ...

  5. uniapp开发微信小程序,从构建到上线

    前言: 本文主要介绍 uniapp 的基础使用,以及使用 uniapp 在企业开发的过程中的一个详细流程,比较适合第一次使用uniapp 开发微信小程序的伙伴,或者没有过实战经验的小伙伴参考:使用 H ...

  6. uniapp开发微信小程序分享功能

    记一次uniapp开发微信小程序遇到的问题, 问题: 关于button的分享属性, 在HbuilderX中开发时,直接将button覆盖在image上,将button设置为透明,可以直接实现分享功能, ...

  7. uniapp开发微信小程序-7.用户填写表单信息

    uniapp开发微信小程序-7.用户填写表单信息 本章让用户通过表单更新自己的个人信息,也是本系列文章最后一篇入门分享,之后碰到新颖.常用的功能会继续分享给大家,如果大家有任何问题欢迎留言,我会尽快线 ...

  8. uniapp开发微信小程序-4.页面跳转与横向滑动

    uniapp开发微信小程序-4.页面跳转与横向滑动 本篇文章主要是想记录一下横向滑动功能,备忘的同时给大家做个分享. 但既然是初级分享系列文章,为了方便新手朋友的上手工作,还是在此之前说一下页面跳转的 ...

  9. uniapp开发微信小程序 wx.navigateBack()携带数据问题

    uniapp开发微信小程序 wx.navigateBack()携带数据问题 某个表单页面 有时需要跳转另一个页面查询数据 但如此想要保存当前页面数据需要在另一个查询页面调用 wx.navigateBa ...

最新文章

  1. MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)
  2. 数据中台全景架构及模块解析
  3. CF1012B Chemical table 题解【二分图】【构造】
  4. Linux crontab的使用方式,sh脚本的编写,sh脚本自动启动tomcat服务器,sh监控系统运行情况
  5. 如何在Java中使用Zxing和JFreeSVG创建QR Code SVG?
  6. c mysql日期时间格式_mysql日期和时间类型
  7. RocketMQ消费失败如何处理?如何保证消费消息的幂等性?
  8. 被苹果“先捧后杀”的操作系统
  9. 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime
  10. 大地坐标系是不是经纬度_批量导入经纬度点到奥维地图中
  11. doip 源码_DoIP—协议框架
  12. 冰雪传奇刷怪计时器_冰雪传奇BOSS计时器
  13. 笔记本电脑显卡性能排行榜
  14. Java信息管理系统模板思维导图
  15. 无业务不伸缩之一,云计算有ESS(基础篇)
  16. php固定登录账号,PHP实现会员单一账号登录
  17. Linux服务器开发,Posix API与网络协议栈
  18. 论文笔记|固定效应的解释和使用
  19. Spring是什么,为什么要学Spring
  20. CSU 1506 酷酷的单词

热门文章

  1. 成都Java开发工程师工资有多高
  2. 我是一只IT小小鸟读后感
  3. 【测试工具】五、jmeter在GUI与non-GUI模式下结果集自定义封装展示
  4. MySQL千万数据方案调研,一不小心直接打挂我系统
  5. 机器学习-机器学习之集成学习(ensemble learning)
  6. 苹果电脑python官网下载步骤-Python3 Mac版下载
  7. 微信小程序+vant的自定义tabBar
  8. File类(Java)
  9. 常用css整理2 转自csdn
  10. 浅析IBM的竞争优势