前端Vue3圖像編輯功能(并生成mask圖)

存在一個需求同豆包的圖像生成的區域重繪功能,類似與下面這種

拆解一下需求,

1、鼠標移動上圖像畫面時出現跟隨鼠標移動的空心圓形,移出圖像畫面、鼠標點擊后、鼠標按下移動時消失,鼠標松開再次出現。

2、鼠標按下出現圓形透明顏色大小同空心圓形、鼠標按下移動形成軌跡,類似涂鴉筆效果,末端是圓形,鼠標松開后涂鴉效果結束。

3、鼠標松開后出現發送框,跟隨鼠標松開的位置,鼠標點擊后發送框消失。

4、鼠標松開即為一次記錄,上方可以進行撤銷還原操作,點擊清空則清除所有涂鴉痕跡。

5、上方滑塊進行更改涂鴉以及空心圓的直徑大小。

6、需要導出base64的mask圖(涂鴉痕跡)

需求實現思路:

使用canvas去實現該功能,至少需要三個canvas,第一個將圖片鋪到canvas上,第二個繪制涂鴉內容,第三個跟隨鼠標的光圈。還需要一個臨時的canvas去生成mask圖(mask圖需要大小跟圖像實際大小一致)

相關代碼如下:

<template><div class="img-edit-box"><div class="img-edit-box-top" v-if="currentImgEdit == 'all'"><div class="img-edit-btn-box" @click="quoteImgEditChange"><!-- @click="quoteChange(true, currentImgUrl, 'imageEdit', currentImgQuestion)" --><div class="img-edit-btn-zhineng"></div><div class="img-edit-btn-text">智能編輯</div></div><div class="img-edit-btn-box" @click="changeEditStatus('scope')"><div class="img-edit-btn-chonghui"></div><div class="img-edit-btn-text">區域重繪</div></div><!-- <div class="img-edit-btn-box"><div class="img-edit-btn-kuotu"></div><div class="img-edit-btn-text">擴圖</div></div> --><!-- <div class="img-edit-btn-box"><div class="img-edit-btn-cachu"></div><div class="img-edit-btn-text">擦除</div></div> --><div class="img-edit-btn-right to-right"><divclass="img-edit-btn-box"@click="downloadBase64"><div class="img-edit-btn-download"></div><div class="img-edit-btn-text">下載原圖</div></div><div class="divide-line"></div><div class="img-edit-btn-box close-box" @click="closeImgEditVisible"><div class="close-icon"></div></div></div></div><div v-if="currentImgEdit == 'scope'" class="img-edit-box-top flex-center"><div class="img-edit-btn-left"><divclass="img-edit-btn-box close-box"@click="changeEditStatus('all')"><div class="back-icon"></div></div></div><div class="img-edit-btn-center"><!-- <div class="img-edit-btn-box"><div class="img-edit-btn-download"></div></div> --><div class="img-edit-btn-slider"><el-sliderv-model="circleDiameter":min="30":max="100"input-size="mini"@mousedown="clickCircleDiameter"@change="changeCircleDiameter"@input="inputCircleDiameter"></el-slider></div><div class="divide-line"></div><divclass="close-box":class="[step == 0 ? 'img-edit-btn-box-none' : 'img-edit-btn-box']"@click="undo"><div class="chexiao-icon"></div></div><divclass="close-box":class="[step == history.length - 1? 'img-edit-btn-box-none': 'img-edit-btn-box',]"@click="redo"><div class="huanyuan-icon"></div></div><div class="divide-line"></div><div:class="[step == 0 ? 'img-edit-btn-box-none' : 'img-edit-btn-box']"style="width: max-content"@click="clearCanvas">清除</div>&

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73808.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決:ModuleNotFoundError: No module named ‘_sqlite3‘

報錯&#xff1a; from _sqlite3 import * ModuleNotFoundError: No module named _sqlite3安裝sqlite3支持組件: sudo apt-get install libsqlite3-dev進入之前下載的python包下&#xff0c;重新編譯和安裝Python ./configure --enable-loadable-sqlite-extensions make &a…

【Go語言圣經3.6】

目標 概念 常量與變量的主要區別在于&#xff1a; 不可變性&#xff1a;常量在聲明后其值就固定下來&#xff0c;不能再被修改。這保證了程序運行時不會因意外修改而導致錯誤。 使用不可變數據&#xff08;例如數學常數 π&#xff09;可以避免意外修改帶來的問題 編譯期計算…

基于x11vnc的ubuntu遠程桌面

1、安裝VNC服務 sudo apt install x11vnc -y2、創建連接密碼 sudo x11vnc -storepasswd3、安裝lightdm服務 x11vnc 在 默認的 GDM3 中不起作用&#xff0c;因此需要使用 lightdm 桌面管理環境 sudo apt install lightdm -y切換至lightdm&#xff0c;上一步已經切換則跳過該…

leetcode日記(105)買賣股票的最佳時機Ⅱ

原本以為是一個很難想的動態規劃&#xff0c;沒想到是最簡單的貪心…… 如果實在想不出就畫個折線圖&#xff0c;只買上漲的就行了&#xff0c;所有上漲的段都取到。 真的沒想到會這么簡單…… class Solution { public:int maxProfit(vector<int>& prices) {int …

手寫發布訂閱模式

手寫實現一個簡易的發布訂閱模式&#xff0c;通常有以下幾個關鍵點&#xff1a; 訂閱&#xff08;subscribe&#xff09;&#xff1a;用戶訂閱特定的事件&#xff0c;當該事件觸發時&#xff0c;執行與事件關聯的回調函數。 發布&#xff08;publish&#xff09;&#xff1a;當…

docker入門篇

使用docker可以很快部署相同的環境,這也是最快的環境構建,接下來就主要對docker中的基礎內容進行講解.Docker 是一個用于開發、交付和運行應用程序的開源平臺&#xff0c;它可以讓開發者將應用程序及其依賴打包到一個容器中&#xff0c;然后在任何環境中運行這個容器&#xff0…

Qt Widgets、Qt Quick

一、核心概念 ?Qt Widgets? Qt框架中的傳統桌面UI開發組件庫&#xff0c;基于C實現&#xff0c;提供按鈕、文本框等控件?。適用于需要深度集成操作系統底層功能或復雜業務邏輯的桌面應用?。 ?Qt Quick? QML的標準庫和工具包&#xff0c;提供預置的視覺組件&#xff08;如…

LinuX---Shell正則表達式

正則表達式 正則表達式使用單個字符串來描述、匹配一系列符合某個語法規則的字符串。在很多文本編輯器里&#xff0c;正則表達式通常被用來檢索、替換那些符合某個模式的文本。在Linux中&#xff0c;grep&#xff0c;sed&#xff0c;awk等命令都支持通過正則表達式進行模式匹配…

nginx配置txt文件點擊鏈接后下載

手上有一個txt文件&#xff0c;上傳到文件服務器后&#xff0c;點擊路徑是在瀏覽器里直接打開了&#xff0c;用戶需要的是下載到本地 nginx新增配置 location ~* /ExcelDownload/envScript/(.\.txt) {add_header Content-Disposition "attachment; filename$1";add…

相機光學(四十七)——相紙材質

1. 光面相紙 光面相紙表面光滑&#xff0c;亮度高&#xff0c;反光性好&#xff0c;能夠呈現出清晰、鮮艷的圖像效果&#xff0c;適合用于表現色彩艷麗、反差要求較高的題材&#xff0c;如產品照、藝術照和風景照。然而&#xff0c;這種相紙容易沾上指紋和灰塵。 2. 絨面相紙…

LabVIEW 線性擬合

該 LabVIEW 程序實現了 線性擬合&#xff08;Linear Fit&#xff09;&#xff0c;用于計算給定一組數據點的斜率&#xff08;Slope&#xff09;和截距&#xff08;Intercept&#xff09;&#xff0c;并將結果可視化于 XY Graph 中。本案例適用于數據擬合、實驗數據分析、傳感器…

Swift 并發中的任務讓步(Yielding)和防抖(Debouncing)

網羅開發 &#xff08;小紅書、快手、視頻號同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

【Android】RuntimeShader 應用

1 簡介 RuntimeShader 是 Android 13&#xff08;T&#xff09;中新增的特性&#xff0c;用于逐像素渲染界面&#xff0c;它使用 AGSL&#xff08;Android Graphics Shading Language&#xff09;編寫著色器代碼&#xff0c;底層基于 Skia 圖形渲染引擎。官方介紹詳見 → Runti…

小程序API —— 53 本地存儲

小程序本地存儲是指在小程序中使用 API 將數據存儲在用戶的設備上&#xff0c;以便小程序在運行時和下次啟動時快速地讀取這些數據&#xff1b; 小程序本地存儲的 API 可以分為兩類&#xff0c;每一類可以分為四種&#xff1a; 同步 API&#xff1a; 存儲&#xff1a;wx.setS…

el-table樹形表格合并相同的值

el-table樹形表格合并相同的值 el-table樹形表格合并相同的值讓Ai進行優化后的代碼 el-table樹形表格合并相同的值 <style lang"scss" scoped> .tableBox {/deep/ &.el-table th:first-child,/deep/ &.el-table td:first-child {padding-left: 0;} } …

虛幻基礎:移動組件

文章目錄 移動組件&#xff1a;角色的移動信息和移動控制walk&#xff1a;行走falling&#xff1a;跳躍&下落 通用設置重力&#xff1a;模式通用重力max acceleration&#xff1a;模式通用加速度 walk制動降速行走&#xff1a;速度超過最大速度時的減速力 falling空氣控制空…

DeepSeek + Kimi 自動生成 PPT

可以先用deepseek生成ppt大綱&#xff0c;再把這個大綱復制到Kimi的ppt助手里&#xff1a; https://kimi.moonshot.cn/kimiplus/conpg18t7lagbbsfqksg 選擇ppt模板&#xff1a; 點擊生成ppt就制作好了。

Unity 解決TMP_Text 文字顯示異常的問題

問題 Unity 中TMP_Text 文字顯示異常大多可分為兩種情況。①制作TMP 字體選用的文本不包含該文字&#xff1b;②制作TMP 字體選用的ttf 源不包含該文字。 第一種情況&#xff0c;制作TMP 字體選用的文本不包含&#xff0c;只需在選用的Charater File 中添加再重新生成即可。 …

Day19:把數字翻譯成字符串

現有一串神秘的密文 ciphertext&#xff0c;經調查&#xff0c;密文的特點和規則如下&#xff1a; 密文由非負整數組成數字 0-25 分別對應字母 a-z 請根據上述規則將密文 ciphertext 解密為字母&#xff0c;并返回共有多少種解密結果。 LCR 165. 解密數字 - 力扣&#xff08…

CentOS下安裝ElasticSearch(日志分析)

準備目錄 搞一個自己喜歡的目錄 mkdir /usr/local/app 切換到該目錄 cd /usr/local/app 下載 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz 選擇其他版本 點擊進入官網