div(class="mt-[60px] grid grid-cols-1 lg:grid-cols-4 xl:grid-cols-5 text-white bg-[#05020E] h-[calc(100vh-62px)] border-t border-white/10 2xl:border-t-0 mx-auto 2xl:border-x")
// 左侧信息
aside.p-4(class="flex flex-col divide-y divide-white/10 pt-6 space-y-6 lg:overflow-y-auto scrollbar-hide")
div
p.font-bold 风格滤镜
p.text-gray-400 尝试可以应用于您的图像的不同风格样式
div.flex.flex-wrap.gap-2.items-center.pt-2
div.cursor-pointer.select-none(v-for="(item, index) in filters" :key="item.name" class="w-5/16 h-20 bg-gray-500 rounded-lg")
div.flex.justify-center.items-center.h-full(v-if="!item.name" @click="ModelsShow(index, item)")
img.w-6.h-6(:src="IconPlusCircle" alt="PlusCircle")
div.flex.items-end.h-full.border-purple-700.rounded-md(
v-else
:style="`background-image: url(${item.image}); background-size: cover; background-position: center;`"
:class="{'border-2': new_task.model === item.name}"
@click="ModelsChange(item)"
)
p(class="p-1") {{item.name}}
// 风格滤镜列表(弹出/悬浮)
div(v-show="imageCreate.models_show" class="absolute w-screen lg:w-[400px] bottom-2 flex flex-col" style="max-height: 80vh; left: 394px; top: 6vh;")
div(class="overflow-auto scrollbar-hide transition-[transform,opacity] duration-[50ms] z-50 pai-border rounded-lg bg-gray-900 shadow-2xl opacity-100")
div(class="space-y-2 items-center absolute overflow-hidden w-[calc(100%-2px)] px-4 pb-2 pt-4 lg:pt-2 z-50 bg-inherit rounded-t-lg border-b border-low border-white border-opacity-10")
div(class="flex justify-between")
h3(class="text-white font-bold") Filter
button(class="text-gray-600 pb-1 lg:hidden")
div(class="relative")
input(type="text" placeholder="Search" class="input pai-border bg-gray-900 rounded-md mb-2 outline-none w-full p-2 pl-8" value="")
span(class="absolute left-2 top-2.5 text-gray-500")
div(class="h-32 lg:h-28")
div(class="grid grid-cols-3 sm:grid-cols-4 lg:grid-cols-3 gap-2 p-2 pt-0")
template(v-for="item in models" :key="item.name")
button.h-24(
class="transition-[transform,opacity] origin-center filter-button relative aspect-[6/5] duration-200 border-2 rounded-lg overflow-hidden active:border-blue-300/50 border-transparent hover:border-high"
aria-label="Select filter style: Colorpop"
style="transition-delay: 10ms;"
@click="ModelsSelect(imageCreate.filter_ctive, item)"
)
span( style="box-sizing: border-box; display: block; overflow: hidden; width: initial; height: initial; background: none; opacity: 1; border: 0px; margin: 0px; padding: 0px; position: absolute; inset: 0px;")
img( alt="Colorpop" :src="item.image" decoding="async" data-nimg="fill" style="position: absolute; inset: 0px; box-sizing: border-box; padding: 0px; border: none; margin: auto; display: block; width: 0px; height: 0px; min-width: 100%; max-width: 100%; min-height: 100%; max-height: 100%; object-fit: cover;" sizes="100vw" srcset="https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 640w, https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 750w, https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 828w, https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 1080w, https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 1200w, https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 1920w, https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 2048w, https://storage.googleapis.com/pai-marketing/filters/elizaport_style.png 3840w")
div( class="absolute inset-0 bg-gradient-to-t from-black/90 via-black/40 flex flex-col justify-end text-gray-100 text-left text-sm p-1") {{ item.name }}
div
p.font-bold 提示词
p.text-gray-400 描述您期望出现在图像中的细节, 例如颜色, 物体或是风景
textarea.mt-4.rounded-lg.h-32.w-full.px-4.py-2.bg-gray-500.bg-opacity-5.border.border-gray-500.border-opacity-20.text-gray-500(
v-model="new_task.prompt" type="text" class="focus:outline-none"
)
div
div.flex.items-center.justify-between
span.font-bold 排除特征
label.switch
input(type="checkbox" :checked="imageCreate.exclude_on" @change="imageCreate.exclude_on=!imageCreate.exclude_on")
div.slider.round
div(v-show="imageCreate.exclude_on")
textarea.mt-4.rounded-lg.h-32.w-full.px-4.py-2.bg-gray-500.bg-opacity-5.border.border-gray-500.border-opacity-20.text-gray-400(
v-model="new_task.exclude" type="text" class="focus:outline-none"
)
p.pt-2.text-gray-400 描述您不希望出现在图像中的细节, 例如颜色, 物体或是风景
div.opacity-20
p.font-bold 通过图像生成图像
p.text-gray-400 上传或绘制图像以用作灵感
input.mt-4.rounded-lg.h-9.w-full.px-4.py-2.bg-gray-500.bg-opacity-5.border.border-gray-500.border-opacity-20.text-gray-500(value="Search" type="text" class="focus:outline-none")
div.overflow-hidden.flex.gap-2.items-center
img.relative.right-6.w-4(:src="IconEdit" style="filter: drop-shadow(#ffffff 24px 0);")
span 画点什么
div
button.mt-4.rounded-lg.h-9.w-full.bg-gray-500.bg-opacity-5.border.border-gray-500.border-opacity-20.text-gray-500.transition-all.duration-250(
class="focus:outline-none hover:border-indigo-600 hover:bg-indigo-600 hover:bg-opacity-20 hover:text-indigo-300"
@click="TaskSubmit()"
) 开始绘制
// 中间输出
main(class="xl:col-span-3 lg:col-span-2 lg:overflow-y-auto lg:overflow-x-hidden border-x border-white/10 relative scrollbar-hide")
div.flex.gap-2.pb-8
button.rounded-full.w-14.h-14.flex.justify-center.items-center(
:class="{ 'bg-gray-800': views.cardMode }"
@click="views.cardMode = !views.cardMode"
)
img(:src="IconGrid")
button.rounded-full.w-14.h-14.flex.justify-center.items-center(
:class="{ 'bg-gray-800': !views.cardMode }"
@click="views.cardMode = !views.cardMode"
)
img(:src="IconStack")
// 卡片模式
div.flex.gap-6.justify-center.items-center(:class="{'flex-col':!views.cardMode, 'flex-wrap':views.cardMode}")
template(v-for="task in tasks" :key="task.id")
div.relative.bg-green-900.rounded-md.overflow-hidden.w-512px.h-512px.min-w-512px
div.object-contain(v-if="task.data")
img(loading="lazy" :src="img" alt="task" v-for="img in task.data" :key="img")
div.absolute.left-2.right-2.bottom-2.bg-green-600.rounded-full.overflow-hidden.text-green-900.text-xs.transition-all.duration-750.ease-linear(
:class="{'h-8': task.progress<=0.9, 'h-2': task.progress>0.9, 'opacity-90': task.status!='done', 'opacity-10': task.status=='done'}"
)
div.flex.items-center.text-center.h-full.px-2.bg-green-400.rounded-r-full.transition-all.duration-8000.ease-linear(
:style="`width:${task.progress*100}%;`"
) {{ task.status }} {{ task.progress*100 }}%
div.absolute.inset-0.flex.items-end.justify-center.p-6.transition-opacity.bg-gradient-to-t.to-transparent.opacity-0(class="hover:cursor-pointer hover:opacity-100 from-black/90")
pre {{ task.prompt }}
pre {{ new_task }}
// 右侧参数
aside(class="lg:overflow-y-auto relative z-20 transition-all scrollbar-hide")
div(class="px-6 divide-y divide-white/10")
div(class="flex flex-col gap-y-8 py-8")
// 选择生成尺寸
fieldset(class="create-fieldset")
label 图像尺寸
p 完成图像的宽度×高度.
div(class="flex flex-row flex-wrap gap-x-2 gap-y-2")
div(class="flex flex-row flex-wrap" v-for="item in sizes" :key="item.id")
button.border-2.rounded-md.px-2(
:class="{'border-purple-600': item.width==new_task.w && new_task.h==item.height}"
@click="new_task.w=item.width;new_task.h=item.height"
) {{ item.width }} x {{ item.height }}
div(class="text-sm grey-100 mt-1")
p Buy a paid plan for any width or height up to 1536px
fieldset(class="create-fieldset")
label 提示词权重(Prompt Guidance)
p 更高的指导将使您的图像更接近您的提示.
input(type="text" class="w-12 rounded-full bg-gray-900 text-xs text-center py-1 text-gray-200" v-model="new_task.prompt_guidance")
fieldset(class="create-fieldset")
label 质量和细节(Quality & Details)
p 更多的步数能使细节更充分, 但也更为耗时.
div(id="slider-undefined" class="flex items-center gap-x-4 slider-container")
div(tabindex="-1" style="position: relative; touch-action: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); user-select: none; outline: 0px; padding-top: 8px; padding-bottom: 8px;" class="chakra-slider css-1t1xvy7")
div(id="slider-track-:R9onqmqulm:" style="position:absolute;top:50%;transform:translateY(-50%);width:100%" class="chakra-slider__track css-8v2r68")
div(class="css-11z5obk")
div(aria-valuenow="50" class="chakra-slider__filled-track css-19vmo6h" style="position: absolute; top: 50%; transform: translateY(-50%); width: 28.5714%; left: 0%;")
div(role="slider" tabindex="0" id="slider-thumb-:R9onqmqulm:" aria-valuemin="10" aria-valuemax="150" aria-valuenow="25" aria-orientation="horizontal" style="position: absolute; user-select: none; touch-action: none; left: calc(28.5714% - 8px);" class="chakra-slider__thumb css-12qisgv")
input(type="hidden" v-model="new_task.quality_details")
input(type="text" class="w-12 rounded-full bg-gray-900 text-xs text-center py-1 text-gray-200" v-model="new_task.quality_details")
div(class="flex flex-col gap-y-4 py-8")
fieldset(class="create-fieldset")
label(for="seed-input") 随机数种子(Seed)
p 不同的数字会导致图像产生新变体
input.bg-light-50.bg-opacity-20.px-2(v-model="new_task.seed" class="text-input" type="number")
div(class="flex flex-col gap-y-4" style="border-color:transparent")
fieldset(class="create-fieldset")
div(class="advanced-options-container transition-all overflow-hidden opacity-100 max-h-[99rem] pb-8")
label 采样(Sampler)
p 扩散采样方法.
div(class="select")
select.bg-light-100.bg-opacity-10.px-2(name="advanced-options" id="advanced-options")
option.bg-dark-200(value="1" selected="") pndm (plms)
option.bg-dark-200(value="0") ddim
option.bg-dark-200(value="2") k_euler
option.bg-dark-200(value="3") k_euler_ancestral
option.bg-dark-200(value="4") k_heun
option.bg-dark-200(value="5") k_dpm_2
option.bg-dark-200(value="6") k_dpm_2_ancestral
option.bg-dark-200(value="7") k_lms
div(class="flex flex-col gap-y-4 py-8 opacity-20")
fieldset(class="create-fieldset")
只有在您共享图像之后,别人才能看到这些图像 Buy a paid plan to persist this setting across sessions.