<uni-canvas id="myCanvas" ></uni-canvas>结合uniapp实现一张本地图片出现在canvas中心点的位置
时间: 2024-11-23 20:40:08 浏览: 6
html5教你做炫酷的碎片式图片切换 (canvas)
在UniApp中,如果你想让一张本地图片在`<uni-canvas>`组件的中心点出现,可以按照以下步骤操作:
1. 获取图片数据:
使用`uni.getImageInfo` API 来获取图片的信息,例如 `originImgUrl`,因为直接插入 `img` 标签可能会有跨域限制:
```javascript
const loadImage = async (url) => {
const response = await uni.getImageInfo({
src: url,
success: (res) => {
this.originImgUrl = res.path; // 将图片路径存储起来
},
});
};
await loadImage('/path/to/local/image.jpg'); // 替换为你的图片路径
```
2. 创建画布实例并在准备好时设置图片:
```html
<uni-canvas id="myCanvas" :resize-mode="canvasResizeMode"></uni-canvas>
```
在 `setup` 或 `created` 生命周期钩子里:
```javascript
import { onReady } from 'uni-app';
const canvasResizeMode = 'contain';
onReady(async () => {
const canvasInstance = canvas.create('#myCanvas', { resizeMode: canvasResizeMode });
if (this.originImgUrl) {
// 设置图片尺寸和偏移量使其居中
let centerX = canvasInstance.width / 2;
let centerY = canvasInstance.height / 2;
canvasInstance.drawImage(this.originImgUrl,
centerX - (await getRealImageSize(this.originImgUrl).width) / 2,
centerY - (await getRealImageSize(this.originImgUrl).height) / 2,
null, null, // 不指定源图尺寸,让其自动适应
null, null, // 目标尺寸由图片内容确定
'center');
}
});
// 获取真实图片尺寸的函数
const getRealImageSize = async (url) => {
const img = new Image();
img.src = url;
await img.onload;
return { width: img.width, height: img.height };
};
```
3. 注意:`getRealImageSize` 中的 `new Image()` 实例会在异步加载完成后返回图片的实际尺寸。
阅读全文