...
 
Commits (44)
    https://gitcode.net/ylwdev/ai_draw/-/commit/4f39fc678dd38c48b5f65bcf2319bdbb6f956f9e Auto commit 2023-04-12T08:55:01+00:00 64104061f23fda247c679fa8 64104061f23fda247c679fa8@devide https://gitcode.net/ylwdev/ai_draw/-/commit/a5450115ca2125ccc7f11302462f13e4869ea67e Auto Commit 2023-05-22T11:25:38+00:00 64104061f23fda247c679fa8 64104061f23fda247c679fa8@devide https://gitcode.net/ylwdev/ai_draw/-/commit/da767572fd553631cc50ed9e2d6144c63b5ac332 Tue Jun 27 04:08:00 UTC 2023 inscode 2023-06-27T04:08:00+00:00 64104061f23fda247c679fa8 64104061f23fda247c679fa8@devide https://gitcode.net/ylwdev/ai_draw/-/commit/7a093d7e10e535b9f84a81c9c1a4a7bccde37c4d Tue Jun 27 08:18:00 UTC 2023 inscode 2023-06-27T08:18:00+00:00 64104061f23fda247c679fa8 64104061f23fda247c679fa8@devide https://gitcode.net/ylwdev/ai_draw/-/commit/e64ad6c00c1f1493432524e2badd6a35805bb669 Mon Jul 3 07:05:00 UTC 2023 inscode 2023-07-03T07:05:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/d7b9e4cf2f8093d15fd7aaf84f7e2e2fabb9fed0 Mon Jul 3 08:25:00 UTC 2023 inscode 2023-07-03T08:25:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/3075ba9064d1ab07a7e62327083464c44bdad27b Mon Jul 3 09:01:00 UTC 2023 inscode 2023-07-03T09:01:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/029c5f27ad1de77c5d570de189345b93b7eb4fb8 Mon Jul 3 09:22:00 UTC 2023 inscode 2023-07-03T09:22:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/8f0300df9ae3d40d8002b3f18c9d0391492716aa Mon Jul 3 10:06:00 UTC 2023 inscode 2023-07-03T10:06:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/1d7f460a8d367ab31f538fb9654b2f0e408ff87c Mon Jul 3 10:36:00 UTC 2023 inscode 2023-07-03T10:36:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/380032b4438fb31fe3ef6782acf726b94889d279 Mon Jul 3 11:38:00 UTC 2023 inscode 2023-07-03T11:38:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/5e150e061aa16f90a9b35d5708ccc231c4d0ca3a Tue Jul 4 02:32:00 UTC 2023 inscode 2023-07-04T02:32:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/aa407c09891f1048e49189f7ebd062fa74003e63 Tue Jul 4 02:57:00 UTC 2023 inscode 2023-07-04T02:57:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/0e99d0c7fa4eabbde10f6fb3d82f646b861f73c2 Tue Jul 4 03:07:00 UTC 2023 inscode 2023-07-04T03:07:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/ddd84422c6ecc97077422c58602956a8df62d3fb Tue Jul 4 03:47:00 UTC 2023 inscode 2023-07-04T03:47:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/d6d4ca573abfe3edfa62077f0fb40002c4974035 Wed Jul 5 07:23:00 UTC 2023 inscode 2023-07-05T07:23:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/0a8e0e342a2666b343f1073b194f792d68cd4ae3 Wed Jul 5 08:17:00 UTC 2023 inscode 2023-07-05T08:17:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/714e9e5a919b2a4e2d4e166be9d0e0e52d2ba74a Thu Jul 6 06:58:00 UTC 2023 inscode 2023-07-06T06:58:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/523fa757889527100fda9aac644f8819c33e0749 Thu Jul 6 08:14:00 UTC 2023 inscode 2023-07-06T08:14:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/648a2683d29dee66320abf801b444f3062a56ff0 Thu Jul 6 08:43:00 UTC 2023 inscode 2023-07-06T08:43:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/c64e1cdd1a292eb5221a639ca19b1163163fa322 Fri Jul 7 03:49:00 UTC 2023 inscode 2023-07-07T03:49:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/dfe5009e5d39c90586556376c2432f5e7ec2eb86 Fri Jul 7 08:01:01 UTC 2023 inscode 2023-07-07T08:01:01+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/2af380ebc630c66c7bd8e01a14aa9240185fa603 Auto Commit 2023-07-07T08:24:34+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/b9ef0b268cf89e6cffb682d314d8d4e231685161 Auto Commit 2023-07-07T09:45:48+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/b7f97ddc1f6cf16b2c4682ba05f25c8ceec98dd4 Auto Commit 2023-07-08T01:08:39+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/ec901863b57ef6e66304df81a57b0899c5140084 - 2023-07-08T01:12:03+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/6c1f52793b18ccef45032a5e3cc18928a5d6e779 Auto Commit 2023-07-08T01:17:36+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/aecb3d6640fbbd281653d36ddd125d85217b4dce Auto Commit 2023-07-08T01:18:57+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/004345236fbb712bcfdbc7cfcb91e245a7febb30 Mon Jul 10 02:04:00 UTC 2023 inscode 2023-07-10T02:04:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/479499ba8400c739d9a936e2c657abad0d334e78 Mon Jul 10 03:08:00 UTC 2023 inscode 2023-07-10T03:08:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/60e0d27ddb2cbd0a44255664d9e299dd4d4bb021 Mon Jul 10 03:14:00 UTC 2023 inscode 2023-07-10T03:14:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/2979de5c59bacc36e68594d7393fea0420bef0e7 Mon Jul 10 03:49:00 UTC 2023 inscode 2023-07-10T03:49:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/bb02fdc6ffe302f62a6d8a3cc4e27ea3af2fb781 Auto Commit 2023-07-10T06:51:30+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/7624abf2705e94f60699df22ea81c47c60da8357 Mon Jul 10 12:51:00 UTC 2023 inscode 2023-07-10T12:51:00+00:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/0b326481ff438f0534216d91bed83d73912ea09c Thu Jul 13 10:02:00 CST 2023 inscode 2023-07-13T10:02:00+08:00 622aa39c1f9b166ab1a38c05 622aa39c1f9b166ab1a38c05@devide https://gitcode.net/ylwdev/ai_draw/-/commit/866828a9494817c37ca9b723f8e864248c052342 Auto Commit 2023-07-28T16:05:23+08:00 weixin_44463441 weixin_44463441@devide https://gitcode.net/ylwdev/ai_draw/-/commit/17e846e7ad94e932d43a656642c665a022ac0514 Tue Dec 26 16:18:00 CST 2023 inscode 2023-12-26T16:18:00+08:00 weixin_44463441 weixin_44463441@devide https://gitcode.net/ylwdev/ai_draw/-/commit/92f151b2ce1a741343f0e8442f590604d1ee4e12 Thu Jan 11 10:17:00 CST 2024 inscode 2024-01-11T10:17:00+08:00 杨龙伟(20231024) 202301011023 https://gitcode.net/ylwdev/ai_draw/-/commit/5bccc37fd085dee67d75451b2d7be3eafe4a1149 Thu Jan 11 10:33:00 CST 2024 inscode 2024-01-11T10:33:00+08:00 杨龙伟(20231024) 202301011023 https://gitcode.net/ylwdev/ai_draw/-/commit/72b8ee87cb0ada35c0a6845db36a63004f6765fc Thu Jan 11 10:52:00 CST 2024 inscode 2024-01-11T10:52:00+08:00 杨龙伟(20231024) 202301011023 https://gitcode.net/ylwdev/ai_draw/-/commit/3b00b0e25742d63eb15104859a99f6192934c5ef Thu Jan 11 15:01:00 CST 2024 inscode 2024-01-11T15:01:00+08:00 杨龙伟(20231024) 202301011023 https://gitcode.net/ylwdev/ai_draw/-/commit/a950d7d150629ef28e067055e7c011b39a78f0b2 update 2024-01-12T11:23:55+08:00 杨龙伟 yanglw@csdn.net https://gitcode.net/ylwdev/ai_draw/-/commit/f3f103f6c6803d390cd8843d025d7f0915a5c33d update 2024-01-12T18:30:06+08:00 杨龙伟 yanglw@csdn.net https://gitcode.net/ylwdev/ai_draw/-/commit/aac60fea22bdf4642798f4130b0fa54cadf2f797 Merge remote-tracking branch 'origin/master' 2024-01-12T18:36:38+08:00 杨龙伟 yanglw@csdn.net # Conflicts: # src/App.vue # src/assets/main.css
......@@ -14,6 +14,8 @@ dist
dist-ssr
coverage
*.local
pnpm-lock.yaml
yarn.lock
/cypress/videos/
/cypress/screenshots/
......
......@@ -2,17 +2,20 @@
"name": "vuejs-with-vite",
"version": "0.0.0",
"scripts": {
"dev": "vite",
"dev": "vite --host loc-inscode.csdn.net --port 443",
"build": "vite build",
"preview": "vite preview --port 4173"
},
"dependencies": {
"@microsoft/fetch-event-source": "^2.0.1",
"axios": "^1.4.0",
"guess": "^1.0.2",
"view-ui-plus": "^1.3.9",
"vue": "3.2.37"
},
"devDependencies": {
"@vitejs/plugin-vue": "^3.0.1",
"vite": "^3.0.1"
"@vitejs/plugin-vue": "^5.0.3",
"vite": "^5.0.11",
"less": "^4.2.0"
}
}
<template>
<div class="ivu-p">
<Alert>
当前 Vue 版本为 {{ vueVersion }},View UI Plus 版本为 {{ version }}
</Alert>
<Input v-model="msg" />
<Button class="ivu-mt" type="primary" @click="handleClick">Click Me!</Button>
</div>
<Layout>
<!-- <Header class="layout-header">
<ai-header></ai-header>
</Header> -->
<Layout>
<Sider class="layout-sider" hide-trigger :width="320">
<ai-sider :loading-data="getSdData"></ai-sider>
</Sider>
<Content class="layout-content">
<div class="ai-generate-image-inner">
<img class="ai-generate-image-self" v-if="image" :src="image" />
</div>
</Content>
</Layout>
</Layout>
</template>
<script setup>
import { ref, version as vueVersion } from 'vue' // 从 Vue 中导入 ref 和 vueVersion
import { version, Message } from 'view-ui-plus' // 从 view-ui-plus 中导入 version 和 Message
const msg = ref('Hello View Design!') // 创建一个响应式的变量 msg,并将其初始值设置为 'Hello View Design!'
<script>
import { defineComponent, ref } from 'vue';
import aiHeader from './components/ai-header.vue';
import aiSider from './components/ai-sider.vue';
import request from '@/api/sd';
export default defineComponent({
name: 'App',
components: {
aiHeader,
aiSider
},
setup () {
const image = ref('')
const getSdData = (item)=> {
function handleClick() { // 定义一个名为 handleClick 的函数
Message.info('Welcome to InsCode') // 在页面上显示一个提示消息
}
request.gpt(item.prompt).then(res => {
return request.draw({}, item.prompt, item.negative_prompt).then(res => {
if (res) image.value = res;
return res;
})
}).catch((err)=>{
alert(err);
// console.error('gpt err:',err)
})
}
return {
getSdData,
image
}
}
})
</script>
<style></style>
\ No newline at end of file
<style lang="less">
.ivu-layout {
width: 100%;
height: 100%;
.ivu-layout-header,
.layout-sider{
background: #FFF;
}
.layout-content {
overflow-y: scroll;
width: 100%!important;
padding: 16px;
}
.ai-generate-image-inner {
width: 100%;
display: flex;
margin-top:36px;
justify-content: center;
}
.ai-generate-image-self {
max-width: 100%;
display: block;
}
}
</style>
export const apiKey = process.env.INSCODE_API_KEY;
export const apiUrl = 'https://inscode-api.csdn.net/api/v1/gpt/';
import axios from "axios";
import { fetchEventSource } from '@microsoft/fetch-event-source';
export const apiKey = process.env.INSCODE_API_KEY;
export const apiUrl = 'https://inscode-api.csdn.net/api/v1/gpt/';
export default {
draw (config, prompt, negative_prompt) {
return new Promise(function(resolve,rejcet){
const data = {
prompt: prompt,
steps: config?.steps??20,
negative_prompt: negative_prompt??'nsfw',
width: config?.width??512,
height: config?.height??512,
cfg_scale: config?.cfg_scale??6,
seed : config?.seed??-1,
sampler_name: config?.sampler_name??"DPM++ SDE Karras"
}
const headers = {
'content-type': 'application/json'
};
let api = 'https://gpu-pod659f8b38499a1c2067e69973-6006.node.inscode.run/sdapi/v1/txt2img'
axios.post(api, data, { headers }).then(response => {
if (response.status === 200 && response?.data?.images){
const image = response?.data?.images[0]
resolve('data:image/png;base64,' + image)
}
}).catch(err => {
rejcet(err)
});
})
},
gpt(prompt){
return new Promise(function(resolve,rejcet){
const data = {
'messages': [
{
'role': 'user',
'content': prompt
}],
'stream_token': false,
'apikey': apiKey
}
const headers = {
'content-type': 'application/json'
};
axios.post(apiUrl, data, { headers }).then(response => {
console.log('gpt:',response.data)
if(response.data.indexOf("免费对话次数已用完,请升级账号后继续使用")>-1){
rejcet("免费对话次数已用完,请升级账号后继续使用")
}else if(response.data.indexOf("敏感")>-1){
rejcet("抱歉,该问题含有敏感词信息,请换一个问题")
}else{
resolve(response.data)
}
}).catch(err => {
rejcet(err)
});
})
},
gpt2(prompt){
return new Promise(function(resolve,rejcet){
const body = {
messages: [
{
role: 'user',
content: prompt
}
],
apikey: apiKey
}
fetchEventSource(apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(body),
onopen: (response) => {
console.log('open',response)
},
onmessage: (msg) => {
if (msg.data === '[DONE]') {
// this.loading = false;
return;
};
const data = JSON.parse(msg.data);
const finish_reason = data.choices[0].finish_reason;
const finish = finish_reason === 'stop' || finish_reason === 'length';
const content = data.choices[0].delta.content;
if (finish) {
// this.loading = false;
} else if (content) {
console.log('gpt: response',content)
resolve(content)
}
},
onerror: (err) => {
rejcet(err)
console.log("error", err);
}
});
})
}
}
body,html,#app {
width: 100%;
height: 100%;
overflow: hidden;
}
\ No newline at end of file
<template>
<h1>AI绘图</h1>
</template>
<script>
import { defineComponent } from 'vue';
export default defineComponent({
name: 'aiHeader',
})
</script>
<template>
<Form class="ai-sider-form" label-position="top">
<FormItem>
<template #label>
<strong>推荐:</strong>
</template>
<Row :gutter="12">
<Col
class="ai-sider-image-item"
:class="{'current': item.label === state.active}"
:span="6"
v-for="item in state.tagList"
:key="item.image"
@click="handleSelectTag(item)"
>
<Image :src="item.image"></Image>
<div class="ivu-mt-6 ivu-text-center" v-line-clamp="1">{{ item.label }}</div>
</Col>
</Row>
</FormItem>
<FormItem>
<template #label>
<strong>提示词:</strong>
</template>
<Input type="textarea" :rows="4" v-model="state.prompt" placeholder="请输入提示词,回车键开始绘画..." />
</FormItem>
<FormItem>
<template #label>
<strong>反向提示词:</strong>
</template>
<Input type="textarea" :rows="4" v-model="state.negative_prompt" placeholder="请输入反向提示词,回车键开始绘画..." />
</FormItem>
<FormItem>
<Button size="large" long :loading="state.loading" type="primary" class="ai-sider-form-button" @click="handleSubmit">生成图片</Button>
</FormItem>
</Form>
</template>
<script>
import { defineComponent, onMounted, reactive } from 'vue';
import image0 from '@/assets/label/00.png';
import image1 from '@/assets/label/01.png';
import image2 from '@/assets/label/02.jpeg';
import image3 from '@/assets/label/03.png';
import image4 from '@/assets/label/04.png';
import image5 from '@/assets/label/05.png';
export default defineComponent({
name: 'aiSider',
emits: ['submit', 'error'],
props: {
loadingData: {
type: Function,
default: ()=> {}
}
},
setup (props, context) {
const state = reactive({
loading: false,
description: '',
active: '重置',
prompt: '',
negative_prompt: '',
tagList : [
{
'label':'重置',
'prompt':'',
'negative_prompt':'',
'image': image0
},
{
'lebel':'星空',
'prompt':'Surrealism in digital art, a collaboration between Beeple and Jeremias Ketner, featuring an exquisitely detailed digital illustration that captures the essence of both artists\' unique styles.',
'negative_prompt':'EasyNegative',
'image': image1
},
{
'label':'雀斑女孩',
'prompt':'beautiful lady, (freckles), big smile, ruby eyes, pigtails hair, dark makeup, hyperdetailed photography, soft light, head and shoulders portrait, cover',
'negative_prompt':'(worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed, grayscale, bw, bad photo, bad photography, bad art:1.4), (watermark, signature, text font, username, error, logo, words, letters, digits, autograph, trademark, name:1.2), (blur, blurry, grainy), morbid, ugly, asymmetrical, mutated malformed, mutilated, poorly lit, bad shadow, draft, cropped, out of frame, cut off, censored, jpeg artifacts, out of focus, glitch, duplicate, (airbrushed, cartoon, anime, semi-realistic, cgi, render, blender, digital art, manga, amateur:1.3), (3D ,3D Game, 3D Game Scene, 3D Character:1.1), (bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3)',
'image': image2
},
{
'label':'金属',
'prompt':'Metal armor, metallic texture, solo, 1boy, science fiction, male focus, power armor, humanoid robot, robot, blurry, blurry background, city, helmet',
'negative_prompt':'FastNegativeV2,(bad-artist:1),(worst quality, low quality:1.4),(bad_prompt_version2:0.8),bad-hands-5,lowres,bad anatomy,bad hands,((text)),(watermark),error,missing fingers,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,((username)),blurry,(extra limbs),bad-artist-anime,badhandv4,EasyNegative,ng_deepnegative_v1_75t,verybadimagenegative_v1.3,BadDream,(three hands:1.6),(three legs:1.2),(more than two hands:1.4),(more than two legs,:1.2),1abel,',
'image': image3
},
{
'label':'古装女侠',
'prompt':'1woman,handsome,high quality,long hair,dark hair,chinese clothes,photorealistic,realistic,photography,masterpiece,best quality,ultra-detailed,1man,looking at viewer,solo,handsome face,pony tail,hanfu,gufeng,black and white hanfu,bamboo,bamboo leaf on clothes,bamboo pattern hanfu,hanfu,(bamboo:1.2)',
'negative_prompt':'(worst quality, low quality:1.4),(depth of field, blurry:1.2),(greyscale, monochrome:1.1),3D face,cropped,lowres,text,(nsfw:1.3),(worst quality:2),(low quality:2),(normal quality:2),normal quality,((grayscale)),skin spots,acnes,skin blemishes,age spot,(ugly:1.331),(duplicate:1.331),(morbid:1.21),(mutilated:1.21),(tranny:1.331),mutated hands,(poorly drawn hands:1.5),blurry,(bad anatomy:1.21),(bad proportions:1.331),extra limbs,(disfigured:1.331),(missing arms:1.331),(extra legs:1.331),(fused fingers:1.61051),(too many fingers:1.61051),(unclear eyes:1.331),lowers,bad hands,missing fingers,extra digit,bad hands,missing fingers,(((extra arms and legs))),bad-artist,bad-artist-anime,bad-hands-5,bad-image-v2-39000,bad-picture-chill-75v,bad_prompt,bad_prompt_version2,badhandv4,ng_deepnegative_v1_75t,EasyNegative,2girls,3girls,lowres,bad anatomy,bad hands,text,error,missing fingers,extra digit,fewer digits,cropped,worst quality,low quality,normal quality,signature,watermark,username,blurry,badfeet,ugly,pregnant,duplicate,hermaphrodite,scar,green clothes,bad eyes,bad pupils,green hair,(duplicates),skin spots,acnes,skin blemishes,age spot,bad anatomy,(ugly:1.331),(duplicate:1.331),(morbid:1.21),(mutilated:1.21),mutated hands,(poorly drawn hands:1.331),blurry,(bad anatomy:1.21),(bad proportions:1.331),extra limbs,(disfigured:1.331),(missing arms:1.331),(extra legs:1.331),(fused fingers:1.61051),(too many fingers:1.61051),(unclear eyes:1.331),bad hands,missing fingers,extra digit,bad body,pubic hair,glans,refraction,diffusion,bad body,bad proportions,gross proportions,text,missing fingers,missing arms,missing legs,(((simple background))),fused fingers,too many fingers,missing arms,missing legs,extra arms,extra legs',
'image': image4
},
{
'label':'国风',
'prompt':'beautiful girl, chinese clothes',
'negative_prompt':'(worst quality, low quality, normal quality, lowres, low details, oversaturated, undersaturated, overexposed, underexposed, grayscale, bw, bad photo, bad photography, bad art:1.4), (watermark, signature, text font, username, error, logo, words, letters, digits, autograph, trademark, name:1.2), (blur, blurry, grainy), morbid, ugly, asymmetrical, mutated malformed, mutilated, poorly lit, bad shadow, draft, cropped, out of frame, cut off, censored, jpeg artifacts, out of focus, glitch, duplicate, (airbrushed, cartoon, anime, semi-realistic, cgi, render, blender, digital art, manga, amateur:1.3), (3D ,3D Game, 3D Game Scene, 3D Character:1.1), (bad hands, bad anatomy, bad body, bad face, bad teeth, bad arms, bad legs, deformities:1.3)',
'image': image5
}
]
})
const handleSelectTag = (item, isInit)=> {
const { label, prompt, negative_prompt } = item;
Object.assign(state, {
active: label,
prompt,
negative_prompt
})
}
const handleSubmit = async ()=> {
const { prompt, active, negative_prompt } = state;
if (state.loading) return;
state.loading = true;
try {
const params = { prompt, label: active, negative_prompt };
await props.loadingData(params)
context.emit('submit', params);
state.loading = false;
} catch (error) {
context.emit('error', { error });
state.loading = false;
}
}
onMounted(()=> {
handleSelectTag(state.tagList[0], true);
})
return {
state,
handleSelectTag,
handleSubmit
}
}
})
</script>
<style lang="less">
.ai-sider-form {
padding: 16px;
overflow-y: scroll;
height: 100%;
}
.ai-sider-image-item {
margin-bottom: 12px;
font-size: 12px;
cursor: pointer;
position: relative;
&:hover,&.current {
.ivu-text-center {
color: #2d8cf0;
}
}
&-bg {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
z-index: 1;
}
}
</style>
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
const fs = require('fs')
// https://vitejs.dev/config/
export default defineConfig({
server: {
host: true
host: true,
https:{
key: fs.readFileSync('./ssl/server.key'),
cert: fs.readFileSync('./ssl/server.crt')
}
},
plugins: [vue()]
plugins: [vue()],
resolve: {
alias: {
'@': '/src'
},
dedupe: ['vue']
}
})