
回复
本文会详细介绍如何向画布中插入外部图像。效果如下图所示:
Web组件不支持直接访问鸿蒙本地目录,所以需要将利用arkts将图像转换为base64形式才可以插入图像到画布。
首先需要用arkts实现一个InsertImage函数,用于选择本地图像,然后将其转换为base64编码,并调用js函数插入图像到画布,该函数的代码如下:
这段代码的实现目的是在一个ArkTS环境中,通过文件选择器选择一个图片文件,然后将该图片读取并编码为Base64格式的字符串,最后通过执行JavaScript代码将该图片插入到页面中。以下是对代码的详细解释:
初始化变量和文件选择选项
创建文件选择器实例并选择文件
处理文件选择结果
用于将图像转换为base64编码的函数代码如下:
最关键的是addImage函数,这是js实现的函数,用于将图像插入到画布中,代码如下:
fromURL
函数是Fabric.js库中的一个方法,用于从给定的URL加载图像,并在回调函数中提供一个fabric.Image
实例,以便对图像进行进一步操作。以下是对这段代码的详细解释:
定义一个名为addImage
的函数,该函数接受一个参数src
,表示图像的URL。
fabric.Image.fromURL
: 这是Fabric.js库提供的一个静态方法,用于从指定的URL加载图像。该方法需要两个参数:
src
: 图像的URL。callback
: 当图像加载完成后执行的回调函数,回调函数的参数是一个fabric.Image
实例。const scale = Math.min(150 / oImg.width, 150 / oImg.height)
: 计算图像缩放比例,使图像的宽度或高度最大为150像素,保持图像的纵横比。Math.min
确保缩放比例不会超过指定的尺寸。oImg.scale(scale)
: 按照计算的比例缩放图像。oImg.set({ left: 20, top: 20 })
: 设置图像的位置,将其左上角放置在canvas的坐标(20, 20)处。将调整后的图像添加到Fabric.js的canvas
对象中,显示在画布上。
整个函数的实现步骤如下:
addImage
函数,并接收一个图像的URL作为参数。fabric.Image.fromURL
从给定的URL加载图像。canvas
对象中,显示在画布上。通过这些步骤,addImage
函数可以从指定的URL加载图像,并在画布上显示缩放和定位后的图像。