微信小程序 canvas画布clip()在ios端多次裁剪无效

这篇具有很好参考价值的文章主要介绍了微信小程序 canvas画布clip()在ios端多次裁剪无效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在使用canvas绘制用户电子名片时,由于第一次使用不够熟悉,在绘制名片时根据顺序需要先裁剪出名片的形状及边角圆;

然后再在卡片区域中绘制头像,由于头像需要裁剪一个斜角线,于是需要使用到clip()进行二次裁剪,裁剪后在安卓手机显示一切正常,但在ios端测试时无法进行有效封闭

|

解决思路:

网上找了很久也没找到直接的有效解决方法,于是根据自己的思路新增了一个临时的画布,在将需要进行二次裁剪的样式先在临时画布上绘制后,再转换成图片,以图片的形式再绘制到画布中

代码示例:文章来源地址https://www.toymoban.com/news/detail-534785.html

 <canvas canvas-id="CanvasImg"></canvas>
// 创建临时画布
createCanvasContext(){
	const this_ = this
	const context_img = wx.createCanvasContext('CanvasImg');
	// 绘制用户头像
	context_img.save();
	// 开始创建一个路径
	context_img.beginPath()
	// 画一个圆形裁剪区域  宽、高
	context_img.arc(170, 180, height, Math.PI / 1.7, Math.PI * 1.5)
	// 关闭绘制路径
	context.closePath();  
	// 设置描边颜色,transparent:透明
	context.strokeStyle = "transparent";
	context.stroke();
	context_img.clip();
	// 绘制图片
	context_img.drawImage(img_path, 0, 0, 170, 180);
	context_img.restore();
	// 绘制完成,保存画布
	context_img.draw()
	// 临时画布图像转图片
    wx.canvasToTempFilePath({
         x: 0,
         y: 0,
         width: imageSize.width,
         height: imageSize.height,
         canvasId: 'CanvasImg',
         success: function(res) {
         	// 拿到绘制后的图片
            const avatarUrl = res.tempFilePath
            this_.setData({avatarUrl})  
         }
     });
}

到了这里,关于微信小程序 canvas画布clip()在ios端多次裁剪无效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序中使用画布canvas实现动态心电图绘制

    大家好,我是雄雄。 近期,接了个项目,三端(小程序、PC、公众号)同步开发,PC端没的问题,以前一直做的就是PC端,但是小程序和公众号之前没有做过,只能通过这个项目,边做边学了。 人家都说小程序用原生的特别难,大部分都用 uniapp 开发,说是这个方便快捷,还能

    2024年02月09日
    浏览(32)
  • 微信小程序canvas画布图片保存到相册官方授权、自定义授权、保存

    目录 关键步骤介绍 Component实现自定义授权弹框 wx.getSetting可以获取授权信息。 wx.authorize首次授权时会打开弹框让用户授权,若用户已选择同意或拒绝,后续不会再显示授权弹框。 如果授权信息显示未进行相册授权,则打开自定义弹框(show_auth: true)让用户选择是否自行配置

    2024年01月16日
    浏览(35)
  • 微信小程序使用canvas画布生成二维码海报分享图片(完整示例代码)

    canvas.js //获取应用实例 const app = getApp() Page({ /** 页面的初始数据 */ data: { // canvas _width: 0, //手机屏宽 _heigth: 0,//手机屏高 swiperHeight: 300,//主图图片高度 canvasType: false,//canvas是否显示 loadImagePath: ‘’,//下载的图片 imageUrl: ‘https://cos.myfaka.com/car/service/1.jpg’, //主图网络路径 codeU

    2024年04月12日
    浏览(58)
  • 微信小程序canvas画布绘制base64图片并保存图片到相册中

    WXML部分: 样式可以根据自己需求自行调整 canvas绘制成图片部分: 这就将图片绘制出来了。 首先获取用户相册权限。 保存功能:

    2024年02月13日
    浏览(28)
  • uni-app 微信小程序中如何通过 canvas 画布实现电子签名?

    一、实际应用场景 电子签名软件应用场景:电子签名在金融、银行、贷款行业中可以用于对内日常办公流转的文档的盖章签字,对外涉及业务合作协议,采购合同,贷款申请、信用评估、贷款合同、贷款文件表、说明函等等。 可以说,只要是涉及纸质文档签字盖章的场景,

    2024年02月10日
    浏览(36)
  • ios系统(苹果手机)微信小程序canvas.draw不执行回调

    当canvas绘制图片完成之后,来执行draw的时候, 1.安卓手机不受影响,可以正常执行draw的回调函数 2.苹果手机在ios高版本系统上,则可能出现draw的回调函数不执行了。  比如以下代码: 之所以会出现这样的原因是:ios高版本系统 对于 canvas的元素要求是: canvas元素必须存在,如

    2024年02月03日
    浏览(35)
  • Android画布Canvas矩阵Matrix放大裁剪Rect区域的Bitmap,Kotlin

                          Android Matrix画布Canvas缩放scale,Kotlin-CSDN博客 文章浏览阅读116次,点赞3次,收藏3次。文章浏览阅读9.6k次。文章浏览阅读1.8k次。/*Java代码 将Drawable转化为Bitmap */ Bitmap drawableToBitmap(Drawable drawable) { int width = drawable.getIntrinsicWidth();Android Material Design :Line

    2024年02月03日
    浏览(28)
  • 微信小程序实现画布生成海报功能

    微信小程序可以通过使用 标签来实现生成海报的功能。以下是基本实现步骤: 1.在 WXML 文件中创建一个 标签,并设置其宽度和高度属性。 ’ 2.在 JS 文件中,获取到 标签的上下文对象。 3.在 ctx 上下文对象中,使用各种绘图 API 绘制出海报的内容 4.最后调用 ctx.draw() 方法将海

    2024年02月16日
    浏览(37)
  • 微信小程序优化多次跳转后卡顿问题

    一、微信小程序多次跳转会产生卡顿的原理 通过wx.navigateTo 跳转,都会出现保留当前页面,打开新的页面机制。 wx.navigateTo不会将旧页面出栈,会将新页面入栈(栈内元素个数增加,栈内元素5个时,不能再跳转)。手机性能好点,可能10次左右才会导致小程序跳转卡顿崩溃。 二

    2024年02月11日
    浏览(90)
  • 微信小程序实现图片多点裁剪

    话不多说,直接上代码 1、页面布局 2、页面样式 3、页面逻辑

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包