autojs寫一個(gè)畫板實(shí)現(xiàn)AI換頭狗頭蛇
正文.
chatGPT1.1.8更新了, 加了一個(gè)換頭功能, 比如傳說(shuō)中的 狗頭蛇
先選擇一張蛇的圖片

涂抹蛇頭

AI 就會(huì)生成 狗頭蛇

這里面使用的就是canvas功能
寫畫板的步驟
第一步: 布局中添加canvas
<canvas id="imageEditCanvas" />
第二步: 編寫draw事件
canvasView.on("draw", (canvas) => {})
技巧, 在編寫draw事件的時(shí)候, 可能會(huì)用到canvasView的寬高, 我們可以延遲一下再添加draw事件, 也就是先讓界面生成完畢, 再執(zhí)行我們的操作
const { delay } = require("lang");
delay(1).then(() => {
let canvasWidth = canvasView.getWidth();
let canvasHeight = canvasView.getHeight();
canvasView.on("draw", (canvas) => {})
})
第三步: 畫圖, 也就是畫蛇的圖片
畫哪張圖片是由用戶決定的, 因此要讓用戶選擇圖片, 增加一個(gè)按鈕, 讓用戶選擇圖片
let intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
context.startActivityForResult(Intent.createChooser(intent, "選擇圖片"), requestCode);
用戶選好圖片以后, 我們繪制圖片
canvas.drawBitmap(maskBitmap512, matrix, null);
這里使用了matrix讓圖片居中, 在之前的教程已經(jīng)講過(guò)了
autojs怎么把長(zhǎng)寬不定的圖片, 放到正方形圖片的中間
第四步: 涂抹蛇頭
這個(gè)隨意, 不管畫點(diǎn), 畫圓, 畫Path, 都可以, 我選擇的是Path
canvas.drawPath(path, paint);
第五步: 提交給AI處理, 展示處理后的圖片
res = await axios.post(url, form, {
headers: {
"Content-Type": "multipart/form-data",
Authorization: key,
},
});
AI 返回的是url, 直接給imgView設(shè)置src即可
<img id='content' w='*' h='*' scaleType='fitCenter'></img>
this.content.attr("src", url);
第六步: 重置, 撤銷, 恢復(fù) 怎么做?
在用戶觸摸canvasView的時(shí)候, 記錄下用戶每次的觸摸操作, 然后給這次的操作設(shè)置一個(gè)編號(hào),
然后通過(guò)編號(hào)來(lái)實(shí)現(xiàn)這幾個(gè)功能
這基本上就是在操作數(shù)組, 在操作數(shù)組的時(shí)候, 我會(huì)在腦子里想兩個(gè)長(zhǎng)玻璃管道,
再把push想成, 給玻璃管道放球, pop想成玻璃管道射出一個(gè)球, 等類似的畫面,
效果很好, 你可以嘗試一下
試試app的畫板功能
環(huán)境
設(shè)備: 小米11pro
Android版本: 12
Autojs版本: 9.3.11
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文檔, autojs文檔, 最后才是群里問(wèn)問(wèn)
聲明部分內(nèi)容來(lái)自網(wǎng)絡(luò) 本教程僅用于學(xué)習(xí), 禁止用于其他用途
以上就是autojs寫一個(gè)畫板實(shí)現(xiàn)AI換頭狗頭蛇的詳細(xì)內(nèi)容,更多關(guān)于autojs畫板AI換頭狗頭蛇的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序中使用Promise進(jìn)行異步流程處理的實(shí)例詳解
這篇文章主要介紹了微信小程序中使用Promise進(jìn)行異步流程處理的實(shí)例詳解的相關(guān)資料,這里詳細(xì)說(shuō)明該如何使用Promise 來(lái)進(jìn)行異步流程的處理,提供具體實(shí)現(xiàn)步驟,需要的朋友可以參考下2017-08-08
微信小程序?qū)崿F(xiàn)錨點(diǎn)定位樓層跳躍的實(shí)例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)錨點(diǎn)定位樓層跳躍的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05
JavaScript實(shí)現(xiàn)棧結(jié)構(gòu)詳細(xì)過(guò)程
這篇文章主要介紹了JavaScript實(shí)現(xiàn)棧結(jié)構(gòu)詳細(xì)過(guò)程,棧即stack它是一種受限的線性表,后進(jìn)先出LIFO,更多具體的內(nèi)容,需要的小伙伴參考下面文章的詳細(xì)內(nèi)容2021-12-12
Proxy的不可變數(shù)據(jù)優(yōu)點(diǎn)及使用詳解
這篇文章主要為大家介紹了Proxy的不可變數(shù)據(jù)優(yōu)點(diǎn)及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
JavaScript設(shè)計(jì)模式之命令模式和狀態(tài)模式詳解
這篇文章主要為大家介紹了JavaScript設(shè)計(jì)模式之命令模式和狀態(tài)模式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

