小程序canvasu真机上数据图片不能使用
canvas遇到的坑
1.文字换行
2.真机不能使用网络数据图片(真坑) 点击显示效果我就不写了,你们可以自己加一下
全部代码贴出来
css
#preview {
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
position: fixed;
z-index: 999;
top: 0;
overflow: hidden;
bottom: 0;
}
#preview button {
width: 43%;
position: absolute;
bottom: 218rpx;
left: 28%;
z-index: 5;
border-radius: 37rpx;
height: 66rpx;
line-height: 66rpx;
background: #fd5b4c;
}
#preview image {
width: 87%;
position: absolute;
top: 8%;
left: 6%;
z-index: 3;
border-radius: 19rpx;
}
#preview .hide1 image {
width: 10%;
height: 6%;
position: absolute;
right: 0;
left: 84%;
}
#preview text {
position: absolute;
bottom: 170rpx;
left: 25%;
z-index: 5;
font-size: 22rpx;
color: gainsboro;
}
canvas {
position: fixed;
top: 0;
left: 10000rpx;
}
wxml
<canvas canvas-id="shareImg" style="width:545px;height:771px;"></canvas>
<view hidden='{{hidden}}' id='preview' class="hide1{{show1?'':'show'}}">
<image src='{{prurl}}' mode='widthFix'></image>
<button type='primary' size='mini' bindtap='save'>保存分享图</button>
<text>保存后,可以从手机相册分享到朋友圈</text>
<view class="hide1{{show1?'':'show'}}" bindtap='onTap'>
<image src='../../images/Close.png'></image>
</view>
</view>
js
getData() {
/*商品详情接口数据代码省略*/
//下载图片
var that = this;
wx.downloadFile({ //需要小程序后台添加downloadFile域名
url: res.result.product.images[0].url, //接口返回数据
type: 'image', //类别
success: function (res) {
var _avatarPath = res.tempFilePath
const ctx = wx.createCanvasContext('shareImg');
var imgPath = _avatarPath //商品图
console.log(imgPath)
var bgImgPath = '../../images/qrcode.jpg'; //二维码图
ctx.setFillStyle('white')
ctx.fillRect(0, 0, 6000, 2800);
ctx.drawImage(imgPath, 120, 30, 320, 320);
ctx.drawImage(bgImgPath, 40, 500, 120, 110);
ctx.setFontSize(22)
ctx.beginPath("")
var lineWidth = 0;
var canvasWidth = 300;
var initHeight = 380;
var lastSubStrIndex = 0;
ctx.setFillStyle('black')
var str = that.data.product.title //商品价格名称
ctx.fillText('长按识别图中的小程序码', 190, 540)
ctx.fillText('查看详情', 190, 580)
//文字换行 这个地方有可能报错注释掉就可以
for (let i = 0; i < str.length; i++) {
lineWidth += ctx.measureText(str[i]).width;
if (lineWidth > canvasWidth) {
ctx.fillText(str.substring(lastSubStrIndex, i), 18, initHeight); //绘制截取部分
initHeight += 34; //文字行高
lineWidth = 0;
lastSubStrIndex = i;
}
if (i == str.length - 1) {//绘制剩余部分
ctx.fillText(str.substring(lastSubStrIndex, i + 1), 18, initHeight);
}
}
ctx.setFillStyle('red')
ctx.fillText(that.data.product.price, 460, 380) //that.data.product.price 商品价格数据
ctx.setStrokeStyle('gainsboro')
ctx.strokeRect(20, 450, 510, 0.1)
ctx.stroke()
ctx.draw()
}
})
}
小程序canvasu真机上数据图片不能使用的更多相关文章
- 微信小程序开发工具的数据,配置,日志等目录在哪儿? 怎么找?
原文地址:http://www.wxapp-union.com/portal.php?mod=view&aid=359 本文由本站halfyawn原创:感谢原创者:如有疑问,请在评论内回复 ...
- 在微信小程序页面间传递数据总结
在微信小程序页面间传递数据 原文链接:https://www.jianshu.com/p/dae1bac5fc75 在开发微信小程序过程之中,遇到这么一些需要在微信小程序页面之间进行数据的传递的情况, ...
- 微信小程序前台的用户数据入库(后台Laravel)
首先 我们可以看到微信小程序官方 文档 wx.login api-login.jpg 通过此图 我们知道 前台要传 一个 code给后台,后台拿到code 并结合appid和appsecret请求 ...
- 小程序canvas绘制base64数据格式图片
翻了微信小程序官方文档,看了看画板drawImage的用法,官方对所要绘制的图片资源路径并没有很详细,模棱两可,没说支持什么格式的路径.今天我就试一下支不支持base64格式的图片 随便找张图片从网上 ...
- 微信小程序使用wxParse,解决图片显示路径问题
我们经常用到发布文章,用的是UEditor百度富文本编辑器,方便排版,存储的也是html代码,这样小程序解析出来的也是排版的样式,但是使用wxParse解析html的时候,因为存储的是图片的相对路径, ...
- 【微信小程序】微信小程序wx.previewImage预览图片
一.小知识 二.例子,配合轮播图使用效果更佳!(如图1) 1.wxml <scroll-view scroll-y="true"> <swiper catchta ...
- [转]微信小程序开发(二)图片上传+服务端接收
本文转自:http://blog.csdn.net/sk719887916/article/details/54312573 文/YXJ 地址:http://blog.csdn.net/sk71988 ...
- 微信小程序 setData动态修改数据数组的值
1.问题说明 有一组数据,用来存储图片路径,动态修改图片的路径来上传图片,而小程序JS只能通过事件获取时机和setData方法修改数据来改变view. 而用这样写的方式明显是错误的 2.解决办法 字符 ...
- 小程序editor篇-基本使用图片上传
今天小程序项目内,要弄一个editor,富文本编辑功能,支持图文并茂,前几天刚好看了小程序的demo应用,刚好看到editor这个东东,那就安排! 官网示例git地址 大概看了下文档,拉下官方示例,看 ...
随机推荐
- 【loj#139】树链剖分
#139. 树链剖分 题目描述 这是一道模板题. 给定一棵 $n$个节点的树,初始时该树的根为 111 号节点,每个节点有一个给定的权值.下面依次进行 $m$ 个操作,操作分为如下五种类型: 换根:将 ...
- [HNOI2006]最短母串问题——AC自动机+状压+bfs环形处理
Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,Sn)都是T的子串. 32MB Input 第一行是一个正整数n(n< ...
- 序列计数(count)
Portal -->broken qwq Description 给你一个长度为\(n\)的序列,序列中的每个数都是不超过\(m\)的正整数,求满足以下两个条件的序列数量: 1.序列中至 ...
- Ubuntu在vncviewer下Tab键失效
打开命令行,运行如下命令即可解决: xfconf-query -c xfce4-keyboard-shortcuts -p /xfwm4/custom/'<'Super'>'Tab -r ...
- shared_ptr & unique_ptr & weak_ptr (C++11)
c++11标准废除乐auto_ptr, C++ 标准库智能指针 使用这些智能指针作为将指针封装为纯旧 C++ 对象 (POCO) 的首选项. unique_ptr 只允许基础指针的一个所有者. 除非你 ...
- expect 批量增加用户及配置密码
start.sh #!/bin/bash password="111111" username="test" if [ $# == 1 ] then usern ...
- HDU 2588 思维 容斥
求满足$1<=X<=N ,(X,N)>=M$的个数,其中$N, M (2<=N<=1000000000, 1<=M<=N)$. 首先,假定$(x, n)=m$ ...
- 重构改善既有代码设计--重构手法15:Remove Middle Man (移除中间人)
某个类做了过多的简单委托动作.让客户直接调用受托类. 动机:在Hide Delegate (隐藏委托关系)的“动机”中,谈到了“封装委托对象”的好处.但是这层封装也是要付出代价的,它的代价是:每当客户 ...
- MYSQL5.6学习——mysqldump备份与恢复
MYSQL备份 冷备份:停止服务进行备份,即停止数据库的写入 热备份:不停止服务进行备份(在线) l mysql的MyIsam引擎只支持冷备份,InnoDB支持热备份,原因: InnoDB引擎是事务 ...
- Eng1—English daily notes
English daily notes 2015年 4月 Phrases 1. As a side note #作为附注,顺便说句题外话,和by the way意思相近,例句: @1:As a sid ...