uniapp如何实现一个图片涂抹任意位置获取蒙版图代码?
要求能支持app、小程序、h5,这个控件怎么写,主要用于ai图片涂抹修改局部重绘。
网友回复
我写了一个基础的图片预览画笔涂改局部区域形成蒙版的组件,蒙版图片尺寸与原图一致,效果如下:
实现的uniapp组件代码如下:
点击查看代码
<template> <view class="image-mask-editor"> <view v-if="!imagePath" class="upload-container"> <button @tap="chooseImage">上传图片</button> </view> <view v-else class="canvas-container" style="position: fixed; top: 0;bottom: 0;left:0;right:0; width: 100%;z-index:3;background-color: black;"> <view style="position: relative;"> <!-- <canvas style="display: none;" canvas-id="myCanvas" :style="canvasStyleexport" ></canvas> --> <image :src="imagePath" mode="widthFix" class="background-image" :style="imgStyle"></image> <canvas canvas-id="maskCanvas" class="maskCanvas" :style="canvasStyle" @touchstart="touchstartmask" @touchmove="touchmovemask" @touchend="touchendmask"></canvas> <view class="controls"> <button @tap="clearMask">清除遮罩</button> <button @tap="getMaskImage">预览遮罩图</button> </view> </view> </view> </view> </template> <script> export default { data() { return { ctx: null, scaleratio: 0, imgrealWidth: 0, imgrealHeight: 0, screenWidth: 0, screenHeight: 0, canvasStyle: '', soureimgPath: "", //原图压缩后与蒙版图尺寸一致 imgStyle: '', imagePath: '', points: [], //路径点集合 isDrawing: false, lastX: 0, lastY: 0, } }, onReady() { // 获取屏幕宽度 uni.getSystemInfo({ success: (res) => { this.screenWidth = res.windowWidth this.screenHeight = res.windowHeight } }) }, methods: { chooseImage() { uni.chooseImage({ count: 1, success: (res) => { this.soureimgPath = res.tempFilePaths[0] this.imagePath = res.tempFilePaths[0] this.$nextTick(() => { this.initCanvas() }) } }) }, initCanvas() { // 获取图片尺寸以设置画布大小 uni.getImageInfo({ src: this.imagePath, success: (imageInfo) => { // 设置 canvas 的实际尺寸为图片尺寸 this.imgrealWidth = imageInfo.width; this.imgrealHeight = im...
点击查看剩余70%
腾讯混元模型广场里都是混元模型的垂直小模型,如何api调用?
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?