canvas导出图片python_Scriptable神器实战6 —— 给背景图片加上半透明遮罩

前序文章:

  1. Scriptable 神器试玩,创建一个显示自定义标题内容的 iOS14桌面组件

  2. Scriptable 神器实战2 —— 给桌面组件添加自定义背景图片

  3. Scriptable 神器实战3 —— 夜间模式动态展示

  4. Scriptable 神器实战4 —— 获取桌面组件的大小以自动展示内容

  5. Scriptable 神器实战5 —— 给桌面组件添加一个渐变色背景

本文讲一个比较能提升用户体验的功能技巧:给背景图片加上半透明遮罩层。

有什么用呢?

比如,我们的桌面组件是用背景图片+文字展示的,原图没处理之前,展示效果如下:

5b0645e56066024fc7154e89e95f8ba4.png

大家可以看到,背景图片比较明亮的时候,文字会显示的非常不清楚,很影响用户的体验。

一个比较好的处理方案就是,给背景再加一层半透明的遮罩,这样就可以降低背景图片的明亮度,更好的显示用户想要查阅的文本内容了。

加上遮罩后的效果如图:

2c1d7c958d5f864dfda1562831c4aa36.png

这样看起来,效果是不是棒多了 😁

那么这个效果是如何做到的呢?

我们这里用到了 Scriptable 的一个功能:DrawContext()

也就是我们前端开发者比较熟悉的:canvas

用这个 API,我们就像操控 canvas 一样,轻松绘制内容,并导出成图片。

具体图片加遮罩代码如下:

async function shadowImage (img) {  let ctx = new DrawContext()  // 把画布的尺寸设置成图片的尺寸  ctx.size = img.size  // 把图片绘制到画布中  ctx.drawImageInRect(img, new Rect(0, 0, img.size['width'], img.size['height']))  // 设置绘制的图层颜色,为半透明的黑色  ctx.setFillColor(new Color('#000000', 0.5))  // 绘制图层  ctx.fillRect(new Rect(0, 0, img.size['width'], img.size['height']))    // 导出最终图片  return await ctx.getImage()}

这个代码可以通用,复制到你的脚本中后,通过如下方式即可设置组件的半透明遮罩图片背景:

widget.backgroundImage = await shadowImage(img)

如果你还有不清楚不了解的地方,可以在古人云公众号内留言评论,欢迎一起学习进步 1bdbd15bc8d8216b59f7f88532394b26.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值