Merge branch 'master' into on-image-saved-callback
This commit is contained in:
commit
16416e42b5
|
@ -29,3 +29,4 @@ notification.mp3
|
|||
/textual_inversion
|
||||
.vscode
|
||||
/extensions
|
||||
|
||||
|
|
12
README.md
12
README.md
|
@ -72,7 +72,7 @@ Check the [custom scripts](https://github.com/AUTOMATIC1111/stable-diffusion-web
|
|||
- No token limit for prompts (original stable diffusion lets you use up to 75 tokens)
|
||||
- DeepDanbooru integration, creates danbooru style tags for anime prompts (add --deepdanbooru to commandline args)
|
||||
- [xformers](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Xformers), major speed increase for select cards: (add --xformers to commandline args)
|
||||
- History tab: view, direct and delete images conveniently within the UI
|
||||
- via extension: [History tab](https://github.com/yfszzx/stable-diffusion-webui-images-browser): view, direct and delete images conveniently within the UI
|
||||
- Generate forever option
|
||||
- Training tab
|
||||
- hypernetworks and embeddings options
|
||||
|
@ -95,6 +95,16 @@ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-grad
|
|||
After running this command, make sure that you have `aesthetic-gradients` dir in webui's `extensions` directory and restart
|
||||
the UI. The interface for Aesthetic Gradients should appear exactly the same as it was.
|
||||
|
||||
## Where is History/Image browser?!?!
|
||||
Image browser is now an extension. You can install it using git:
|
||||
|
||||
```commandline
|
||||
git clone https://github.com/yfszzx/stable-diffusion-webui-images-browser extensions/images-browser
|
||||
```
|
||||
|
||||
After running this command, make sure that you have `images-browser` dir in webui's `extensions` directory and restart
|
||||
the UI. The interface for Image browser should appear exactly the same as it was.
|
||||
|
||||
## Installation and Running
|
||||
Make sure the required [dependencies](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Dependencies) are met and follow the instructions available for both [NVidia](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-NVidia-GPUs) (recommended) and [AMD](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs) GPUs.
|
||||
|
||||
|
|
|
@ -62,8 +62,8 @@ titles = {
|
|||
|
||||
"Interrogate": "Reconstruct prompt from existing image and put it into the prompt field.",
|
||||
|
||||
"Images filename pattern": "Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.",
|
||||
"Directory name pattern": "Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.",
|
||||
"Images filename pattern": "Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; leave empty for default.",
|
||||
"Directory name pattern": "Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; leave empty for default.",
|
||||
"Max prompt words": "Set the maximum number of words to be used in the [prompt_words] option; ATTENTION: If the words are too long, they may exceed the maximum length of the file path that the system can handle",
|
||||
|
||||
"Loopback": "Process an image, use it as an input, repeat.",
|
||||
|
|
|
@ -1,200 +0,0 @@
|
|||
var images_history_click_image = function(){
|
||||
if (!this.classList.contains("transform")){
|
||||
var gallery = images_history_get_parent_by_class(this, "images_history_cantainor");
|
||||
var buttons = gallery.querySelectorAll(".gallery-item");
|
||||
var i = 0;
|
||||
var hidden_list = [];
|
||||
buttons.forEach(function(e){
|
||||
if (e.style.display == "none"){
|
||||
hidden_list.push(i);
|
||||
}
|
||||
i += 1;
|
||||
})
|
||||
if (hidden_list.length > 0){
|
||||
setTimeout(images_history_hide_buttons, 10, hidden_list, gallery);
|
||||
}
|
||||
}
|
||||
images_history_set_image_info(this);
|
||||
}
|
||||
|
||||
function images_history_disabled_del(){
|
||||
gradioApp().querySelectorAll(".images_history_del_button").forEach(function(btn){
|
||||
btn.setAttribute('disabled','disabled');
|
||||
});
|
||||
}
|
||||
|
||||
function images_history_get_parent_by_class(item, class_name){
|
||||
var parent = item.parentElement;
|
||||
while(!parent.classList.contains(class_name)){
|
||||
parent = parent.parentElement;
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
|
||||
function images_history_get_parent_by_tagname(item, tagname){
|
||||
var parent = item.parentElement;
|
||||
tagname = tagname.toUpperCase()
|
||||
while(parent.tagName != tagname){
|
||||
parent = parent.parentElement;
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
|
||||
function images_history_hide_buttons(hidden_list, gallery){
|
||||
var buttons = gallery.querySelectorAll(".gallery-item");
|
||||
var num = 0;
|
||||
buttons.forEach(function(e){
|
||||
if (e.style.display == "none"){
|
||||
num += 1;
|
||||
}
|
||||
});
|
||||
if (num == hidden_list.length){
|
||||
setTimeout(images_history_hide_buttons, 10, hidden_list, gallery);
|
||||
}
|
||||
for( i in hidden_list){
|
||||
buttons[hidden_list[i]].style.display = "none";
|
||||
}
|
||||
}
|
||||
|
||||
function images_history_set_image_info(button){
|
||||
var buttons = images_history_get_parent_by_tagname(button, "DIV").querySelectorAll(".gallery-item");
|
||||
var index = -1;
|
||||
var i = 0;
|
||||
buttons.forEach(function(e){
|
||||
if(e == button){
|
||||
index = i;
|
||||
}
|
||||
if(e.style.display != "none"){
|
||||
i += 1;
|
||||
}
|
||||
});
|
||||
var gallery = images_history_get_parent_by_class(button, "images_history_cantainor");
|
||||
var set_btn = gallery.querySelector(".images_history_set_index");
|
||||
var curr_idx = set_btn.getAttribute("img_index", index);
|
||||
if (curr_idx != index) {
|
||||
set_btn.setAttribute("img_index", index);
|
||||
images_history_disabled_del();
|
||||
}
|
||||
set_btn.click();
|
||||
|
||||
}
|
||||
|
||||
function images_history_get_current_img(tabname, img_index, files){
|
||||
return [
|
||||
tabname,
|
||||
gradioApp().getElementById(tabname + '_images_history_set_index').getAttribute("img_index"),
|
||||
files
|
||||
];
|
||||
}
|
||||
|
||||
function images_history_delete(del_num, tabname, image_index){
|
||||
image_index = parseInt(image_index);
|
||||
var tab = gradioApp().getElementById(tabname + '_images_history');
|
||||
var set_btn = tab.querySelector(".images_history_set_index");
|
||||
var buttons = [];
|
||||
tab.querySelectorAll(".gallery-item").forEach(function(e){
|
||||
if (e.style.display != 'none'){
|
||||
buttons.push(e);
|
||||
}
|
||||
});
|
||||
var img_num = buttons.length / 2;
|
||||
del_num = Math.min(img_num - image_index, del_num)
|
||||
if (img_num <= del_num){
|
||||
setTimeout(function(tabname){
|
||||
gradioApp().getElementById(tabname + '_images_history_renew_page').click();
|
||||
}, 30, tabname);
|
||||
} else {
|
||||
var next_img
|
||||
for (var i = 0; i < del_num; i++){
|
||||
buttons[image_index + i].style.display = 'none';
|
||||
buttons[image_index + i + img_num].style.display = 'none';
|
||||
next_img = image_index + i + 1
|
||||
}
|
||||
var bnt;
|
||||
if (next_img >= img_num){
|
||||
btn = buttons[image_index - 1];
|
||||
} else {
|
||||
btn = buttons[next_img];
|
||||
}
|
||||
setTimeout(function(btn){btn.click()}, 30, btn);
|
||||
}
|
||||
images_history_disabled_del();
|
||||
|
||||
}
|
||||
|
||||
function images_history_turnpage(tabname){
|
||||
gradioApp().getElementById(tabname + '_images_history_del_button').setAttribute('disabled','disabled');
|
||||
var buttons = gradioApp().getElementById(tabname + '_images_history').querySelectorAll(".gallery-item");
|
||||
buttons.forEach(function(elem) {
|
||||
elem.style.display = 'block';
|
||||
})
|
||||
}
|
||||
|
||||
function images_history_enable_del_buttons(){
|
||||
gradioApp().querySelectorAll(".images_history_del_button").forEach(function(btn){
|
||||
btn.removeAttribute('disabled');
|
||||
})
|
||||
}
|
||||
|
||||
function images_history_init(){
|
||||
var tabnames = gradioApp().getElementById("images_history_tabnames_list")
|
||||
if (tabnames){
|
||||
images_history_tab_list = tabnames.querySelector("textarea").value.split(",")
|
||||
for (var i in images_history_tab_list ){
|
||||
var tab = images_history_tab_list[i];
|
||||
gradioApp().getElementById(tab + '_images_history').classList.add("images_history_cantainor");
|
||||
gradioApp().getElementById(tab + '_images_history_set_index').classList.add("images_history_set_index");
|
||||
gradioApp().getElementById(tab + '_images_history_del_button').classList.add("images_history_del_button");
|
||||
gradioApp().getElementById(tab + '_images_history_gallery').classList.add("images_history_gallery");
|
||||
gradioApp().getElementById(tab + "_images_history_start").setAttribute("style","padding:20px;font-size:25px");
|
||||
}
|
||||
|
||||
//preload
|
||||
if (gradioApp().getElementById("images_history_preload").querySelector("input").checked ){
|
||||
var tabs_box = gradioApp().getElementById("tab_images_history").querySelector("div").querySelector("div").querySelector("div");
|
||||
tabs_box.setAttribute("id", "images_history_tab");
|
||||
var tab_btns = tabs_box.querySelectorAll("button");
|
||||
for (var i in images_history_tab_list){
|
||||
var tabname = images_history_tab_list[i]
|
||||
tab_btns[i].setAttribute("tabname", tabname);
|
||||
tab_btns[i].addEventListener('click', function(){
|
||||
var tabs_box = gradioApp().getElementById("images_history_tab");
|
||||
if (!tabs_box.classList.contains(this.getAttribute("tabname"))) {
|
||||
gradioApp().getElementById(this.getAttribute("tabname") + "_images_history_start").click();
|
||||
tabs_box.classList.add(this.getAttribute("tabname"))
|
||||
}
|
||||
});
|
||||
}
|
||||
tab_btns[0].click()
|
||||
}
|
||||
} else {
|
||||
setTimeout(images_history_init, 500);
|
||||
}
|
||||
}
|
||||
|
||||
var images_history_tab_list = "";
|
||||
setTimeout(images_history_init, 500);
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
var mutationObserver = new MutationObserver(function(m){
|
||||
if (images_history_tab_list != ""){
|
||||
for (var i in images_history_tab_list ){
|
||||
let tabname = images_history_tab_list[i]
|
||||
var buttons = gradioApp().querySelectorAll('#' + tabname + '_images_history .gallery-item');
|
||||
buttons.forEach(function(bnt){
|
||||
bnt.addEventListener('click', images_history_click_image, true);
|
||||
});
|
||||
|
||||
var cls_btn = gradioApp().getElementById(tabname + '_images_history_gallery').querySelector("svg");
|
||||
if (cls_btn){
|
||||
cls_btn.addEventListener('click', function(){
|
||||
gradioApp().getElementById(tabname + '_images_history_renew_page').click();
|
||||
}, false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
mutationObserver.observe(gradioApp(), { childList:true, subtree:true });
|
||||
});
|
||||
|
||||
|
|
@ -108,6 +108,9 @@ function processNode(node){
|
|||
|
||||
function dumpTranslations(){
|
||||
dumped = {}
|
||||
if (localization.rtl) {
|
||||
dumped.rtl = true
|
||||
}
|
||||
|
||||
Object.keys(original_lines).forEach(function(text){
|
||||
if(dumped[text] !== undefined) return
|
||||
|
@ -129,6 +132,24 @@ onUiUpdate(function(m){
|
|||
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
processNode(gradioApp())
|
||||
|
||||
if (localization.rtl) { // if the language is from right to left,
|
||||
(new MutationObserver((mutations, observer) => { // wait for the style to load
|
||||
mutations.forEach(mutation => {
|
||||
mutation.addedNodes.forEach(node => {
|
||||
if (node.tagName === 'STYLE') {
|
||||
observer.disconnect();
|
||||
|
||||
for (const x of node.sheet.rules) { // find all rtl media rules
|
||||
if (Array.from(x.media || []).includes('rtl')) {
|
||||
x.media.appendMedium('all'); // enable them
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
})).observe(gradioApp(), { childList: true });
|
||||
}
|
||||
})
|
||||
|
||||
function download_localization() {
|
||||
|
|
|
@ -0,0 +1,456 @@
|
|||
{
|
||||
"rtl": true,
|
||||
"⤡": "⤡",
|
||||
"⊞": "⊞",
|
||||
"×": "×",
|
||||
"❮": "❮",
|
||||
"❯": "❯",
|
||||
"Loading...": "جار التحميل...",
|
||||
"view": "معاينة",
|
||||
"api": "api",
|
||||
"•": "•",
|
||||
"built with gradio": "مبني باستخدام Gradio",
|
||||
"Stable Diffusion checkpoint": "نماذج الانتشار المستقر",
|
||||
"txt2img": "نص لصورة",
|
||||
"img2img": "صورة لصورة",
|
||||
"Extras": "الإضافات",
|
||||
"PNG Info": "معلومات PNG",
|
||||
"Checkpoint Merger": "دمج النماذج",
|
||||
"Train": "التدريب",
|
||||
"Create aesthetic embedding": "Create aesthetic embedding",
|
||||
"Image Browser": "مستعرض الصور",
|
||||
"Settings": "الإعدادات",
|
||||
"Prompt": "الموجه",
|
||||
"Negative prompt": "الموجه السلبي",
|
||||
"Run": "تشغيل",
|
||||
"Skip": "تخطي",
|
||||
"Interrupt": "إيقاف",
|
||||
"Generate": "إنشاء",
|
||||
"Style 1": "نمط 1",
|
||||
"Style 2": "نمط 2",
|
||||
"Label": "الوسم",
|
||||
"File": "ملف",
|
||||
"Drop File Here": "اسحب الملف هنا",
|
||||
"-": "-",
|
||||
"or": "أو",
|
||||
"Click to Upload": "انقر للتحميل",
|
||||
"Image": "صورة",
|
||||
"Check progress": "تحقق من التقدم",
|
||||
"Check progress (first)": "تحقق من التقدم (الأول)",
|
||||
"Sampling Steps": "خطوات أخذ العينة",
|
||||
"Sampling method": "نظام أخذ العينات",
|
||||
"Euler a": "Euler a",
|
||||
"Euler": "Euler",
|
||||
"LMS": "LMS",
|
||||
"Heun": "Heun",
|
||||
"DPM2": "DPM2",
|
||||
"DPM2 a": "DPM2 a",
|
||||
"DPM fast": "DPM fast",
|
||||
"DPM adaptive": "DPM adaptive",
|
||||
"LMS Karras": "LMS Karras",
|
||||
"DPM2 Karras": "DPM2 Karras",
|
||||
"DPM2 a Karras": "DPM2 a Karras",
|
||||
"DDIM": "DDIM",
|
||||
"PLMS": "PLMS",
|
||||
"Width": "العرض",
|
||||
"Height": "الارتفاع",
|
||||
"Restore faces": "ترميم الوجوه",
|
||||
"Tiling": "تبليط",
|
||||
"Highres. fix": "إصلاح الصور عالية الدقة",
|
||||
"Firstpass width": "عرض المرور الأول",
|
||||
"Firstpass height": "ارتفاع المرور الأول",
|
||||
"Denoising strength": "قوة تقليل الضوضاء",
|
||||
"Batch count": "عدد الدُفعات",
|
||||
"Batch size": "حجم الدفعة",
|
||||
"CFG Scale": "مقياس التقارب من الموجه (CFG)",
|
||||
"Seed": "البذرة",
|
||||
"Extra": "إضافي",
|
||||
"Variation seed": "تباين البذرة",
|
||||
"Variation strength": "قوة التباين",
|
||||
"Resize seed from width": "تغيير حجم البذرة من العرض",
|
||||
"Resize seed from height": "تغيير حجم البذرة من الارتفاع",
|
||||
"Open for Clip Aesthetic!": "Open for Clip Aesthetic!",
|
||||
"▼": "▼",
|
||||
"Aesthetic weight": "Aesthetic weight",
|
||||
"Aesthetic steps": "Aesthetic steps",
|
||||
"Aesthetic learning rate": "Aesthetic learning rate",
|
||||
"Slerp interpolation": "Slerp interpolation",
|
||||
"Aesthetic imgs embedding": "Aesthetic imgs embedding",
|
||||
"None": "لايوجد",
|
||||
"Aesthetic text for imgs": "Aesthetic text for imgs",
|
||||
"Slerp angle": "Slerp angle",
|
||||
"Is negative text": "Is negative text",
|
||||
"Script": "سكريبت",
|
||||
"Prompt matrix": "مصفوفة الموجهات",
|
||||
"Prompts from file or textbox": "موجهات من ملف أو مربع النص",
|
||||
"X/Y plot": "الرسم البياني X/Y",
|
||||
"Put variable parts at start of prompt": "ضع الأجزاء المتغيرة في بداية الموجه",
|
||||
"Show Textbox": "إظهار مربع النص",
|
||||
"File with inputs": "ملف يحتوي المدخلات",
|
||||
"Prompts": "الموجهات",
|
||||
"X type": "نوع X",
|
||||
"Nothing": "لا شئ",
|
||||
"Var. seed": "تغير البذرة",
|
||||
"Var. strength": "قوة التغيير",
|
||||
"Steps": "الخطوات",
|
||||
"Prompt S/R": "موجه S / R",
|
||||
"Prompt order": "ترتيب الموجهات",
|
||||
"Sampler": "نظام أخذ العينات",
|
||||
"Checkpoint name": "اسم النموذج",
|
||||
"Hypernetwork": "الشبكة الفائقة",
|
||||
"Hypernet str.": "قوة الشبكة الفائقة",
|
||||
"Sigma Churn": "دفع سيجما",
|
||||
"Sigma min": "أصغر سيجما",
|
||||
"Sigma max": "أكبر سيجما",
|
||||
"Sigma noise": "ضجة سيجما",
|
||||
"Eta": "الوقت المتوقع",
|
||||
"Clip skip": "تخطي Clip",
|
||||
"Denoising": "تقليل الضوضاء",
|
||||
"X values": "قيم X",
|
||||
"Y type": "نوع Y",
|
||||
"Y values": "قيم Y",
|
||||
"Draw legend": "ارسم مفتاح التوضيح",
|
||||
"Include Separate Images": "قم بتضمين الصور منفصلة",
|
||||
"Keep -1 for seeds": "احتفظ بـقيمة -1 للبذور",
|
||||
"Drop Image Here": "إسقاط الصورة هنا",
|
||||
"Save": "حفظ",
|
||||
"Send to img2img": "أرسل إلى صورة لصورة",
|
||||
"Send to inpaint": "أرسل إلى إعادة الرسم الجزئي",
|
||||
"Send to extras": "أرسل إلى الإضافات",
|
||||
"Make Zip when Save?": "إنشاء ملف مضغوط عند الحفظ؟",
|
||||
"Textbox": "مربع النص",
|
||||
"Interrogate\nCLIP": "استجواب\n CLIP",
|
||||
"Inpaint": "إعادة الرسم الجزئي",
|
||||
"Batch img2img": "دفعات صورة لصورة",
|
||||
"Image for img2img": "صورة (صورة لصورة)",
|
||||
"Image for inpainting with mask": "صورة (إعادة الرسم الجزئي)",
|
||||
"Mask": "القناع",
|
||||
"Mask blur": "ضبابية القناع",
|
||||
"Mask mode": "أسلوب القناع",
|
||||
"Draw mask": "رسم القناع",
|
||||
"Upload mask": "تحميل القناع",
|
||||
"Masking mode": "أسلوب التقنيع",
|
||||
"Inpaint masked": "إعادة الرسم الجزئي (المنطقة المقنعة)",
|
||||
"Inpaint not masked": "إعادة الرسم الجزئي (المنطقة الغير مقنعة)",
|
||||
"Masked content": "المحتوى المقنع",
|
||||
"fill": "الملأ",
|
||||
"original": "الأصلي",
|
||||
"latent noise": "الضوضاء الكامنة",
|
||||
"latent nothing": "لا شيء كامن",
|
||||
"Inpaint at full resolution": "إعادة الرسم الجزئي بدقة كاملة",
|
||||
"Inpaint at full resolution padding, pixels": "إعادة الرسم الجزئي بدقة كاملة, الحشو, بيكسل",
|
||||
"Process images in a directory on the same machine where the server is running.": "معالجة الصور في المجلد على نفس الجهاز حيث يتم تشغيل الخادم.",
|
||||
"Use an empty output directory to save pictures normally instead of writing to the output directory.": "استخدم مجلد إخراج فارغ لحفظ الصور بشكل طبيعي بدلاً من الكتابة إلى مجلد المخرجات.",
|
||||
"Input directory": "مجلد المدخلات",
|
||||
"Output directory": "مجلد المخرجات",
|
||||
"Resize mode": "وضعية تغيير الحجم",
|
||||
"Just resize": "تغييير الحجم فقط",
|
||||
"Crop and resize": "اقتصاص وتغيير الحجم",
|
||||
"Resize and fill": "تغيير الحجم والتعبئة",
|
||||
"img2img alternative test": "صورة لصورة البديلة",
|
||||
"Loopback": "الحلقة الراجعة",
|
||||
"Outpainting mk2": "الرسم الخارجي نسخة 2",
|
||||
"Poor man's outpainting": "الرسم الخارجي للفقراء",
|
||||
"SD upscale": "ترقية الانتشار المستقر",
|
||||
"should be 2 or lower.": "should be 2 or lower.",
|
||||
"Override `Sampling method` to Euler?(this method is built for it)": "Override `Sampling method` to Euler?(this method is built for it)",
|
||||
"Override `prompt` to the same value as `original prompt`?(and `negative prompt`)": "Override `prompt` to the same value as `original prompt`?(and `negative prompt`)",
|
||||
"Original prompt": "Original prompt",
|
||||
"Original negative prompt": "Original negative prompt",
|
||||
"Override `Sampling Steps` to the same value as `Decode steps`?": "Override `Sampling Steps` to the same value as `Decode steps`?",
|
||||
"Decode steps": "Decode steps",
|
||||
"Override `Denoising strength` to 1?": "Override `Denoising strength` to 1?",
|
||||
"Decode CFG scale": "Decode CFG scale",
|
||||
"Randomness": "Randomness",
|
||||
"Sigma adjustment for finding noise for image": "Sigma adjustment for finding noise for image",
|
||||
"Loops": "Loops",
|
||||
"Denoising strength change factor": "معامل قوة تقليل الضوضاء",
|
||||
"Recommended settings: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8": "الإعدادات الموصى بها: خطوات أخذ العينات: 80-100 ، طريقة أخذ العينات: Euler a ، تقليل الضوضاء: 0.8",
|
||||
"Pixels to expand": "عدد البكسل للتوسيع",
|
||||
"Outpainting direction": "إتجاه الرسم الخارجي",
|
||||
"left": "يسار",
|
||||
"right": "يمين",
|
||||
"up": "فوق",
|
||||
"down": "تحت",
|
||||
"Fall-off exponent (lower=higher detail)": "أس التناقص (الأدنى = تفاصيل أعلى)",
|
||||
"Color variation": "اختلاف اللون",
|
||||
"Will upscale the image to twice the dimensions; use width and height sliders to set tile size": "سيقوم بترقية الصورة إلى ضعف الأبعاد ؛ استخدم شريط تمرير العرض والارتفاع لضبط حجم التبليط",
|
||||
"Tile overlap": "تداخل التبليط",
|
||||
"Upscaler": "المرقي",
|
||||
"Lanczos": "Lanczos",
|
||||
"Single Image": "صورة واحدة",
|
||||
"Batch Process": "معالجة الدفعات",
|
||||
"Batch from Directory": "دفعة من المجلد",
|
||||
"Source": "مصدر",
|
||||
"Show result images": "إظهار نتائج الصور ",
|
||||
"Scale by": "رفع الحجم بمقدار",
|
||||
"Scale to": "رفع الحجم إلى",
|
||||
"Resize": "تغيير الحجم",
|
||||
"Crop to fit": "اقتصاص للتوافق",
|
||||
"Upscaler 2 visibility": "إظهار المرقي 2",
|
||||
"GFPGAN visibility": "إظهار GFPGAN",
|
||||
"CodeFormer visibility": "إظهار CodeFormer",
|
||||
"CodeFormer weight (0 = maximum effect, 1 = minimum effect)": "وزن CodeFormer (0 = أقصى تأثير ، 1 = تأثير أدنى)",
|
||||
"Open output directory": "افتح مجلد المخرجات",
|
||||
"Send to txt2img": "أرسل إلى كتابة لصورة",
|
||||
"A merger of the two checkpoints will be generated in your": "سيتم إنشاء نموذجمدمج من النموذجين في",
|
||||
"checkpoint": "النموذج",
|
||||
"directory.": "المجلد.",
|
||||
"Primary model (A)": "النموذج الأساسي (أ)",
|
||||
"Secondary model (B)": "النموذج الثانوي (ب)",
|
||||
"Tertiary model (C)": "النموذج الثالث (ج)",
|
||||
"Custom Name (Optional)": "اسم مخصص (اختياري)",
|
||||
"Multiplier (M) - set to 0 to get model A": "المضاعف (M) - اضبط على 0 للحصول على النموذج أ",
|
||||
"Interpolation Method": "طريقة الاستنباط",
|
||||
"Weighted sum": "المجموع الموزون",
|
||||
"Add difference": "أضافة الاختلاف",
|
||||
"Save as float16": "حفظ float16",
|
||||
"See": "شاهد",
|
||||
"wiki": "ويكي",
|
||||
"for detailed explanation.": "للحصول على شرح مفصل.",
|
||||
"Create embedding": "إنشاء التضمين",
|
||||
"Create hypernetwork": "إنشاء شبكة فائقة",
|
||||
"Preprocess images": "تجهيز الصور",
|
||||
"Name": "الاسم",
|
||||
"Initialization text": "نص التهيئة",
|
||||
"Number of vectors per token": "عدد المتجهات لكل رمز",
|
||||
"Overwrite Old Embedding": "الكتابة فوق التضمين القديم",
|
||||
"Modules": "الوحدات",
|
||||
"Enter hypernetwork layer structure": "أدخل بنية طبقة الشبكة الفائقة",
|
||||
"Select activation function of hypernetwork": "حدد وظيفة تنشيط الشبكة الفائقة",
|
||||
"linear": "خطي (Linear)",
|
||||
"relu": "الوحدة الخطية المعدلة (Relu)",
|
||||
"leakyrelu": "الوحدة الخطية المعدلة المسربة (Leakyrelu)",
|
||||
"elu": "الوحدة الأسية الخطية (Elu)",
|
||||
"swish": "Swish",
|
||||
"Add layer normalization": "أضف طبقة التسوية",
|
||||
"Use dropout": "استخدم الهبوط",
|
||||
"Overwrite Old Hypernetwork": "الكتابة فوق الشبكة الفائقة القديمة",
|
||||
"Source directory": "مجلد المصدر",
|
||||
"Destination directory": "مجلد النتائج",
|
||||
"Existing Caption txt Action": "الإجراء النصي للتعليق المتوفر",
|
||||
"ignore": "تجاهل",
|
||||
"copy": "نسخ",
|
||||
"prepend": "أضف قبل",
|
||||
"append": "ألحق",
|
||||
"Create flipped copies": "قم بإنشاء نسخ مقلوبة",
|
||||
"Split oversized images": "تقسيم الصور كبيرة الحجم",
|
||||
"Use BLIP for caption": "استخدم BLIP للتعليق",
|
||||
"Use deepbooru for caption": "استخدم deepbooru للتعليق",
|
||||
"Split image threshold": "حد تقسيم الصورة",
|
||||
"Split image overlap ratio": "نسبة تداخل الصورة المنقسمة",
|
||||
"Preprocess": "تجهيز الصور",
|
||||
"Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images": "تدريب التضمين أو الشبكة الفائقة ؛ يجب تحديد مجلد بمجموعة من الصور بنسبة أبعاد 1: 1",
|
||||
"[wiki]": "[ويكي]",
|
||||
"Embedding": "التضمين",
|
||||
"Embedding Learning rate": "معدل تعلم التضمين",
|
||||
"Hypernetwork Learning rate": "معدل تعلم الشبكة الفائقة",
|
||||
"Dataset directory": "مجلد مجموعة البيانات",
|
||||
"Log directory": "مجلد السجل",
|
||||
"Prompt template file": "ملف قالب الموجهات",
|
||||
"Max steps": "الخطوات القصوى",
|
||||
"Save an image to log directory every N steps, 0 to disable": "حفظ صورة في مجلد السجل كل N خطوات ، 0 للتعطيل",
|
||||
"Save a copy of embedding to log directory every N steps, 0 to disable": "حفظ نسخة من التضمين في مجلد السجل كل N خطوات ، 0 للتعطيل",
|
||||
"Save images with embedding in PNG chunks": "حفظ التضمين مع الصور في أجزاء PNG",
|
||||
"Read parameters (prompt, etc...) from txt2img tab when making previews": "قراءة المتغيرات (الموجه ، إلخ ...) من علامة تبويب نص لصورة عند إجراء المعاينات",
|
||||
"Train Hypernetwork": "تدريب الشبكة الفائقة",
|
||||
"Train Embedding": "تدريب التضمين",
|
||||
"Create an aesthetic embedding out of any number of images": "Create an aesthetic embedding out of any number of images",
|
||||
"Create images embedding": "Create images embedding",
|
||||
"extras": "إضافات",
|
||||
"favorites": "المفضلة",
|
||||
"custom fold": "custom fold",
|
||||
"Load": "تحميل",
|
||||
"Images directory": "مجلد الصور",
|
||||
"Prev batch": "الدفعة السابقة",
|
||||
"Next batch": "الدفعة التالية",
|
||||
"First Page": "الصفحة الأولى",
|
||||
"Prev Page": "الصفحة السابقة",
|
||||
"Page Index": "فهرس الصفحات",
|
||||
"Next Page": "الصفحة التالية",
|
||||
"End Page": "صفحة النهاية",
|
||||
"number of images to delete consecutively next": "عدد الصور المطلوب حذفها على التوالي بعد ذلك",
|
||||
"Delete": "حذف",
|
||||
"Generate Info": "معلومات الإنشاء",
|
||||
"File Name": "اسم الملف",
|
||||
"Collect": "جمع",
|
||||
"Refresh page": "إعادة تحميل الصفحة",
|
||||
"Date to": "التاريخ إلى",
|
||||
"Number": "الرقم",
|
||||
"set_index": "وضع الفهرس",
|
||||
"Checkbox": "صندوق اختيار",
|
||||
"Apply settings": "تطبيق الإعدادات",
|
||||
"Saving images/grids": "حفظ الصور / الإطار الشبكي",
|
||||
"Always save all generated images": "احفظ دائمًا جميع الصور التي تم إنشائها",
|
||||
"File format for images": "تنسيق ملفات الصور",
|
||||
"Images filename pattern": "نمط اسم ملفات الصور",
|
||||
"Add number to filename when saving": "Add number to filename when saving",
|
||||
"Always save all generated image grids": "احفظ دائمًا جميع الإطارات الشبكية للصور التي تم إنشاؤها",
|
||||
"File format for grids": "تنسيق ملفات الإطارات الشبكية",
|
||||
"Add extended info (seed, prompt) to filename when saving grid": "أضف معلومات إضافية (البذرة ، الموجه) إلى اسم الملف عند حفظ الإطار الشبكي",
|
||||
"Do not save grids consisting of one picture": "لا تحفظ الإطارات الشبكية التي تتكون من صورة واحدة",
|
||||
"Prevent empty spots in grid (when set to autodetect)": "منع المناطق الفارغة في الإطار الشبكي (عند الضبط على الاكتشاف التلقائي)",
|
||||
"Grid row count; use -1 for autodetect and 0 for it to be same as batch size": "عدد صفوف الإطار الشبكي استخدم -1 للاكتشاف التلقائي و 0 ليكون نفس حجم الدُفعة",
|
||||
"Save text information about generation parameters as chunks to png files": "احفظ معلومات نصية حول متغيرات الإنشاء كمقاطع في ملفات png",
|
||||
"Create a text file next to every image with generation parameters.": "قم بإنشاء ملف نصي بجوار كل صورة باستخدام متغيرات الإنشاء.",
|
||||
"Save a copy of image before doing face restoration.": "احفظ نسخة من الصورة قبل القيام بترميم الوجوه.",
|
||||
"Quality for saved jpeg images": "جودة الصور المحفوظة بتنسيق jpeg",
|
||||
"If PNG image is larger than 4MB or any dimension is larger than 4000, downscale and save copy as JPG": "إذا كانت صورة PNG أكبر من 4 ميجابايت أو كان أي بُعد أكبر من 4000 ، قم بتقليل حجم الصورة وحفظها بتنسيق JPG",
|
||||
"Use original name for output filename during batch process in extras tab": "استخدم الاسم الأصلي لاسم ملف الإخراج أثناء عملية الدُفعات في علامة تبويب الإضافات",
|
||||
"When using 'Save' button, only save a single selected image": "عند استخدام زر 'حفظ' ، احفظ فقط صورة واحدة محددة",
|
||||
"Do not add watermark to images": "لا تقم بإضافة العلامة المائية للصور",
|
||||
"Paths for saving": "مسارات الحفظ",
|
||||
"Output directory for images; if empty, defaults to three directories below": "مجلد المخرجات للصور ؛ إذا كان فارغا ، يتم تعيينه افتراضيًا إلى المجلدات الثلاثة أدناه",
|
||||
"Output directory for txt2img images": "مجلد المخرجات لصور نص لصورة",
|
||||
"Output directory for img2img images": "مجلد المخرجات لصور صورة لصورة",
|
||||
"Output directory for images from extras tab": "مجلد المخرجات لصور علامة تبويب الإضافات",
|
||||
"Output directory for grids; if empty, defaults to two directories below": "مجلد المخرجات للإطارات الشبكية ؛ إذا كان فارغا ، يتم تعيينه افتراضيًا إلى المجلدين أدناه",
|
||||
"Output directory for txt2img grids": "مجلد المخرجات للإطارات الشبكية نص لصورة",
|
||||
"Output directory for img2img grids": "مجلد المخرجات للإطارات الشبكية صورة لصورة",
|
||||
"Directory for saving images using the Save button": "مجلد لحفظ الصور باستخدام زر حفظ",
|
||||
"Saving to a directory": "يتم الحفظ إلى المجلد..",
|
||||
"Save images to a subdirectory": "حفظ الصور في مجلد فرعي",
|
||||
"Save grids to a subdirectory": "حفظ الإطارات الشبكية في مجلد فرعي",
|
||||
"When using \"Save\" button, save images to a subdirectory": "احفظ الصور في مجلد فرعي عند الضغط على زر الحفظ",
|
||||
"Directory name pattern": "نمط اسم المجلد",
|
||||
"Max prompt words for [prompt_words] pattern": "أقصى عدد لكلمات التوجيه لنمط [كلمات_التوجيه]",
|
||||
"Upscaling": "الارتقاء",
|
||||
"Tile size for ESRGAN upscalers. 0 = no tiling.": "حجم التبليط لترقيات ESRGAN, القيمة 0= لا يوجد تبليط.",
|
||||
"Tile overlap, in pixels for ESRGAN upscalers. Low values = visible seam.": "تداخل المربعات ، بالبكسل لمرقي ESRGAN. القيم المنخفضة = تداخل مرئي.",
|
||||
"Tile size for all SwinIR.": "حجم التليط لجميع عمليات SwinIR.",
|
||||
"Tile overlap, in pixels for SwinIR. Low values = visible seam.": "تداخل المربعات بالبكسل لـ SwinIR. القيم المنخفضة = تداخل مرئي.",
|
||||
"LDSR processing steps. Lower = faster": "خطوات معالجة LDSR. أقل = أسرع",
|
||||
"Upscaler for img2img": "المرقي لصورة لصورة",
|
||||
"Upscale latent space image when doing hires. fix": "ترقية صورة الفضاء الكامن عند التعيينات. تصليح",
|
||||
"Face restoration": "ترميم الوجوه",
|
||||
"CodeFormer weight parameter; 0 = maximum effect; 1 = minimum effect": "متغيرات وزن CodeFormer ؛ 0 = أقصى تأثير ؛ 1 = الحد الأدنى من التأثير",
|
||||
"Move face restoration model from VRAM into RAM after processing": "انقل نموذج استعادة الوجوه من VRAM إلى RAM بعد المعالجة",
|
||||
"System": "نظام",
|
||||
"VRAM usage polls per second during generation. Set to 0 to disable.": "استطلاعات استخدام VRAM في الثانية أثناء الإنشاء. اضبط على 0 للتعطيل.",
|
||||
"Always print all generation info to standard output": "قم دائمًا بطباعة جميع معلومات الإنشاء إلى المخرج القياسي",
|
||||
"Add a second progress bar to the console that shows progress for an entire job.": "أضف شريط تقدم آخر إلى وحدة التحكم يُظهر التدقم الكلي للمهمة.",
|
||||
"Training": "التدريب",
|
||||
"Move VAE and CLIP to RAM when training hypernetwork. Saves VRAM.": "تفريغ VAE و CLIP من VRAM عند التدريب",
|
||||
"Filename word regex": "اسم ملف كلمات regex",
|
||||
"Filename join string": "سلسلة أحرف دمج أسماء الملفات",
|
||||
"Number of repeats for a single input image per epoch; used only for displaying epoch number": "عدد التكرارات لصورة إدخال واحدة لكل حقبة ؛ تستخدم فقط لعرض رقم الحقبة",
|
||||
"Save an csv containing the loss to log directory every N steps, 0 to disable": "حفظ ملف csv يحتوي على الخسارة إلى مجلد السجل كل N خطوات ، 0 للتعطيل",
|
||||
"Stable Diffusion": "انتشار مستقر",
|
||||
"Checkpoints to cache in RAM": "التخزين المؤقت للنماذج في RAM",
|
||||
"Hypernetwork strength": "قوة الشبكة الفائقة",
|
||||
"Apply color correction to img2img results to match original colors.": "قم بتطبيق تصحيح الألوان على نتائج صورة لصورة لمطابقة الألوان الأصلية.",
|
||||
"Save a copy of image before applying color correction to img2img results": "احفظ نسخة من الصورة قبل تطبيق تصحيح الألوان على نتائج صورة لصورة",
|
||||
"With img2img, do exactly the amount of steps the slider specifies (normally you'd do less with less denoising).": "باستخدام صورة لصورة ، قم بالضبط بعدد الخطوات التي يحددها شريط التمرير (عادةً ما سيكون أقل مع تقليل التشويش).",
|
||||
"Enable quantization in K samplers for sharper and cleaner results. This may change existing seeds. Requires restart to apply.": "تمكين تكميم عينات K للحصول على نتائج أوضح وأنظف. هذا قد يغير البذرة المستخدمة. يتطلب إعادة التشغيل للتطبيق.",
|
||||
"Emphasis: use (text) to make model pay more attention to text and [text] to make it pay less attention": "التأكيد: استخدم (النص) لجعل النموذج يولي مزيدًا من الاهتمام للنص و استخدم [النص] لجعل النموذج يولي اهتمامًا أقل للنص",
|
||||
"Use old emphasis implementation. Can be useful to reproduce old seeds.": "استخدم طريقة التأكيد القديمة. يمكن أن يكون مفيدًا لإعادة إنتاج البذور القديمة.",
|
||||
"Make K-diffusion samplers produce same images in a batch as when making a single image": "اجعل انظمة أخذ عينات الانتشار K تنتج نفس الصور في الدفعات كما هو الحال عند إنشاء صورة واحدة",
|
||||
"Increase coherency by padding from the last comma within n tokens when using more than 75 tokens": "زيادة التناسق عن طريق المساحة المتروكة من الفاصلة الأخيرة ضمن عدد n من الرموز المميزة عند استخدام أكثر من 75 رمزًا مميزًا",
|
||||
"Filter NSFW content": "تصفية المحتوى الإباحي",
|
||||
"Stop At last layers of CLIP model": "توقف عند آخر طبقات نموذج CLIP",
|
||||
"Interrogate Options": "خيارات الاستجواب",
|
||||
"Interrogate: keep models in VRAM": "الاستجواب: احتفظ بالنماذج في VRAM",
|
||||
"Interrogate: use artists from artists.csv": "الاستجواب: استخدم قائمة الفنانين من ملف artists.csv",
|
||||
"Interrogate: include ranks of model tags matches in results (Has no effect on caption-based interrogators).": "الاستجواب: قم بتضمين رتب علامات النموذج في النتائج (ليس له تأثير على الاستجواب المستند إلى التعليقات).",
|
||||
"Interrogate: num_beams for BLIP": "الاستجواب: عدد الحزم لـ BLIP",
|
||||
"Interrogate: minimum description length (excluding artists, etc..)": "الاستجواب: الحد الأدنى لطول الوصف (باستثناء الفنانين ،إلخ..)",
|
||||
"Interrogate: maximum description length": "الاستجواب: الحد الأقصى لطول الوصف",
|
||||
"CLIP: maximum number of lines in text file (0 = No limit)": "CLIP: أقصى عدد من الأسطر في الملف النصي (0 = بلا حدود)",
|
||||
"Interrogate: deepbooru score threshold": "الاستجواب: عتبة درجات deepbooru",
|
||||
"Interrogate: deepbooru sort alphabetically": "الاستجواب: الترتيب الأبجدي لـ deepbooru",
|
||||
"use spaces for tags in deepbooru": "استخدام مسافات للعلامات في deepbooru",
|
||||
"escape (\\) brackets in deepbooru (so they are used as literal brackets and not for emphasis)": "تجاهل الأقواس عند استخدام deepbooru (كي لا تعامل كأقواس التشديد)",
|
||||
"User interface": "واجهة المستخدم",
|
||||
"Show progressbar": "إظهار شريط التقدم",
|
||||
"Show image creation progress every N sampling steps. Set 0 to disable.": "إظهار تقدم إنشاء الصورة لكل N خطوة من خطوات أخذ العينات. قم بتعيين 0 للتعطيل.",
|
||||
"Show previews of all images generated in a batch as a grid": "إظهار معاينة لجميع الصور التي يتم إنشائها في الدفعة كإطار شبكي",
|
||||
"Show grid in results for web": "إظهار الإطار الشبكي في نتائج الويب",
|
||||
"Do not show any images in results for web": "لا تظهر أي صور في نتائج الويب",
|
||||
"Add model hash to generation information": "أضف معلومات الهاش للنموذج إلى معلومات الإنشاء",
|
||||
"Add model name to generation information": "أضف اسم النموذج إلى معلومات الإنشاء",
|
||||
"When reading generation parameters from text into UI (from PNG info or pasted text), do not change the selected model/checkpoint.": "عند قراءة متغيرات الإنشاء من النص إلى واجهة المستخدم (من معلومات PNG أو النص الملصق) ، لا تقم بتغيير النموذج",
|
||||
"Font for image grids that have text": "الخط المستخدم للإطارات الشبكية للصور التي تحتوي على نص",
|
||||
"Enable full page image viewer": "تفعيل عارض الصور ذو الصفحة الكاملة",
|
||||
"Show images zoomed in by default in full page image viewer": "إظهار الصور التي تم تكبيرها بشكل افتراضي في عارض الصور ذو الصفحة الكاملة",
|
||||
"Show generation progress in window title.": "إظهار تقدم الإنشاء في عنوان الشاشة.",
|
||||
"Quicksettings list": "قائمة الإعدادات السريعة",
|
||||
"Localization (requires restart)": "الترجمة (يتطلب إعادة التشغيل)",
|
||||
"Sampler parameters": "متغيرات أنظمة اخذ العينات",
|
||||
"Hide samplers in user interface (requires restart)": "إخفاء أنظمة أخذ العينات في واجهة المستخدم (يتطلب إعادة التشغيل)",
|
||||
"eta (noise multiplier) for DDIM": "الوقت المتبقي (مضاعف الضوضاء) لـ DDIM",
|
||||
"eta (noise multiplier) for ancestral samplers": "الوقت المتبقي (مضاعف الضوضاء) لأنظمة أخذ العينات التي تعتمد على الأجداد",
|
||||
"img2img DDIM discretize": "تفصل DDIM لصورة لصورة",
|
||||
"uniform": "التوحيد",
|
||||
"quad": "رباعية",
|
||||
"sigma churn": "دفع سيجما",
|
||||
"sigma tmin": "سيجما tmin",
|
||||
"sigma noise": "ضجيج سيجما",
|
||||
"Eta noise seed delta": "الوقت المتوقع لديلتا بذرة الضجيج ",
|
||||
"Images Browser": "مستعرض الصور",
|
||||
"Preload images at startup": "تحميل الصور مسبقًا عند بدء التشغيل",
|
||||
"Number of columns on the page": "Number of columns on the page",
|
||||
"Number of rows on the page": "Number of rows on the page",
|
||||
"Minimum number of pages per load": "الحد الأدنى لعدد الصفحات لكل تحميل",
|
||||
"Request browser notifications": "طلب إشعارات المتصفح",
|
||||
"Download localization template": "تنزيل نموذج الترجمة",
|
||||
"Reload custom script bodies (No ui updates, No restart)": "إعادة تحميل السكريبتات المخصصة (لا توجد تحديثات لواجهة المستخدم ، لا إعادة تشغيل)",
|
||||
"Restart Gradio and Refresh components (Custom Scripts, ui.py, js and css only)": "أعادة تشغيل Gradio و تحديث مكونات واجهة الاستخدام (السكريبتات و ui.py و js و css فقط)",
|
||||
"Prompt (press Ctrl+Enter or Alt+Enter to generate)": "الموجه (اضغط على Ctrl + Enter أو Alt + Enter للإنشاء)",
|
||||
"Negative prompt (press Ctrl+Enter or Alt+Enter to generate)": "الموجه السلبي (اضغط على Ctrl + Enter أو Alt + Enter للإنشاء)",
|
||||
"Add a random artist to the prompt.": "أضف فنانًا عشوائيًا إلى الموجه.",
|
||||
"Read generation parameters from prompt or last generation if prompt is empty into user interface.": "قراءة متغيرات الإنشاء من الموجه أو الإنشاء الأخير إذا كان الموجه فارغا في واجهة المستخدم.",
|
||||
"Save style": "حفظ النمط",
|
||||
"Apply selected styles to current prompt": "تطبيق الأنماط المحددة للموجه الحالي",
|
||||
"Stop processing current image and continue processing.": "توقف عن معالجة الصورة الحالية واستمر في المعالجة.",
|
||||
"Stop processing images and return any results accumulated so far.": "توقف عن معالجة الصور وقم بإرجاع أي نتائج متراكمة حتى الآن.",
|
||||
"Style to apply; styles have components for both positive and negative prompts and apply to both": "النمط المطلوب تطبيقه ؛ الأنماط لها مكونات لكل من الموجهات الإيجابية والسلبية وتنطبق على كليهما",
|
||||
"Do not do anything special": "لا تفعل أي شيء خاص",
|
||||
"Which algorithm to use to produce the image": "الخوارزمية التي يجب استخدامها لإنتاج الصورة",
|
||||
"Euler Ancestral - very creative, each can get a completely different picture depending on step count, setting steps to higher than 30-40 does not help": "Euler Ancestral - مبدع جدًا ، يمكن لكل منها الحصول على صورة مختلفة تمامًا اعتمادًا على عدد الخطوات ، تعيين الخطوات على أعلى من 30-40 لا يعطي نتيجة مفيدة",
|
||||
"Denoising Diffusion Implicit Models - best at inpainting": "نماذج تقليل التشويش الضمني - أفضل اسخدام في الرسم الجزئي",
|
||||
"Produce an image that can be tiled.": "أنتج صورة يمكن تبليطها.",
|
||||
"Use a two step process to partially create an image at smaller resolution, upscale, and then improve details in it without changing composition": "استخدم عملية من خطوتين لإنشاء صورة جزئيًا بدقة أقل ثم ترقيتها و تحسين تفاصيلها دون تغيير التكوين",
|
||||
"Determines how little respect the algorithm should have for image's content. At 0, nothing will change, and at 1 you'll get an unrelated image. With values below 1.0, processing will take less steps than the Sampling Steps slider specifies.": "يحدد مدى ضآلة احترام الخوارزمية لمحتوى الصورة. عند 0 ، لن يتغير شيء ، وعند 1 ستحصل على صورة لا صلة لها بالصورة الأصلية. مع وجود قيم أقل من 1.0 ، المعالجة ستأخذ خطوات أقل مما يحدده شريط تمرير خطوات المعالجة.",
|
||||
"How many batches of images to create": "كم عدد دفعات الصور التي يتم إنشائها",
|
||||
"How many image to create in a single batch": "كم صورة يتم إنشائها دفعة واحدة",
|
||||
"Classifier Free Guidance Scale - how strongly the image should conform to prompt - lower values produce more creative results": "مقياس التوجيه الحر للمصنف - إلى أي مدى يجب أن تتوافق الصورة مع الموجه - القيم المنخفضة تنتج نتائج أكثر إبداعًا",
|
||||
"A value that determines the output of random number generator - if you create an image with same parameters and seed as another image, you'll get the same result": "القيمة التي تحدد ناتج منشئ الأرقام العشوائية - إذا قمت بإنشاء صورة بنفس المتغيرات و بذرة الصورة ، فستحصل على نفس النتيجة",
|
||||
"Set seed to -1, which will cause a new random number to be used every time": "عيّن البذرة إلى -1 ، مما سيؤدي إلى استخدام رقم عشوائي جديد في كل مرة",
|
||||
"Reuse seed from last generation, mostly useful if it was randomed": "إعادة استخدام البذرة من الإنشاء الأخير ، وتكون مفيدة في الغالب إذا كانت عشوائية",
|
||||
"Seed of a different picture to be mixed into the generation.": "استخدام بذرة من صورة مختلفة ليتم مزجها في الإنشاء.",
|
||||
"How strong of a variation to produce. At 0, there will be no effect. At 1, you will get the complete picture with variation seed (except for ancestral samplers, where you will just get something).": "ما مدى قوة التباين عند الإنشاء. 0 ، لن يكون هناك أي تأثير. 1 ، ستحصل على الصورة الكاملة ببذور التباين (باستثناء أنظمة عينات الأسلاف ، حيث ستحصل على شيء ما فقط).",
|
||||
"Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution": "قم بمحاولة لإنتاج صورة مشابهة لما تم إنتاجه بنفس البذرة بناءا على دقة محددة",
|
||||
"This text is used to rotate the feature space of the imgs embs": "This text is used to rotate the feature space of the imgs embs",
|
||||
"Separate values for X axis using commas.": "افصل بين قيم المحور X باستخدام الفواصل.",
|
||||
"Separate values for Y axis using commas.": "افصل بين قيم المحور Y باستخدام الفواصل.",
|
||||
"Write image to a directory (default - log/images) and generation parameters into csv file.": "اكتب الصورة إلى مجلد (الافتراضي - log/images) وتوليد المتغيرات في ملف csv.",
|
||||
"Open images output directory": "افتح مجلد مخرجات الصور",
|
||||
"How much to blur the mask before processing, in pixels.": "كم يتم تضبيب القناع قبل المعالجة ، بالبكسل.",
|
||||
"What to put inside the masked area before processing it with Stable Diffusion.": "ما يجب وضعه داخل المنطقة المقنعة قبل معالجتها باستخدام الانتشار المستقر.",
|
||||
"fill it with colors of the image": "املأها بألوان الصورة",
|
||||
"keep whatever was there originally": "احتفظ بكل ما كان هناك في الأصل",
|
||||
"fill it with latent space noise": "املأه بضوضاء الفضاء الكامنة",
|
||||
"fill it with latent space zeroes": "املأه بأصفار الفضاء الكامنة",
|
||||
"Upscale masked region to target resolution, do inpainting, downscale back and paste into original image": "قم بترقية المنطقة المقنعة إلى الدقة المستهدفة و الرسم الجزئي ثم تقليص الحجم واللصق في الصورة الأصلية",
|
||||
"Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.": "تغيير حجم الصورة إلى الدقة المستهدفة. ما لم يتطابق الطول والعرض ، ستحصل على نسبة عرض إلى ارتفاع غير صحيحة.",
|
||||
"Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.": "قم بتغيير حجم الصورة بحيث يتم ملء الدقة المستهدفة بالكامل بالصورة. يتم قطع المناطق التي تبرز.",
|
||||
"Resize the image so that entirety of image is inside target resolution. Fill empty space with image's colors.": "قم بتغيير حجم الصورة بحيث تكون الصورة بأكملها داخل الدقة المستهدفة. املأ المساحة الفارغة بألوان الصورة.",
|
||||
"How many times to repeat processing an image and using it as input for the next iteration": "كم مرة يتم تكرار معالجة صورة واستخدامها كمدخل للتكرار التالي",
|
||||
"In loopback mode, on each loop the denoising strength is multiplied by this value. <1 means decreasing variety so your sequence will converge on a fixed picture. >1 means increasing variety so your sequence will become more and more chaotic.": "في وضع حلقة الاسترجاع ، يتم ضرب قوة تقليل الضوضاء بهذه القيمة في كل حلقة. يعني <1 تقليل التنوع بحيث يتقارب التسلسل الخاص بك على صورة ثابتة. > 1 يعني زيادة التنوع بحيث يصبح تسلسلك أكثر وأكثر فوضوية.",
|
||||
"For SD upscale, how much overlap in pixels should there be between tiles. Tiles overlap so that when they are merged back into one picture, there is no clearly visible seam.": "الترقية باستخدام الانتشار المستقر ، كم يجب أن يكون مقدار التداخل بالبكسل بين المربعات. تتداخل المربعات بحيث لا يكون هناك خط واضح للعيان عند دمجها مرة أخرى في صورة واحدة.",
|
||||
"A directory on the same machine where the server is running.": "مجلد على نفس الجهاز حيث يتم تشغيل الخادم.",
|
||||
"Leave blank to save images to the default path.": "اتركه فارغًا لحفظ الصور في المسار الافتراضي.",
|
||||
"Result = A * (1 - M) + B * M": "النتيجة = A * (1 - M) + B * M",
|
||||
"Result = A + (B - C) * M": "النتيجة = A + (B - C) * M",
|
||||
"1st and last digit must be 1. ex:'1, 2, 1'": "يجب أن يكون الرقم الأول والأخير 1. على سبيل المثال: '1 ، 2 ، 1'",
|
||||
"Path to directory with input images": "المسار إلى مجلد الصور المدخلة",
|
||||
"Path to directory where to write outputs": "المسار إلى مجلد كتابة النتائج",
|
||||
"Input images directory": "مجلد الصور المدخلة",
|
||||
"Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; leave empty for default.": "استخدم العلامات التالية لتعريف كيفية اختيار أسماء الملفات للصور: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp] ؛ اتركه فارغا للوضع الافتراضي.",
|
||||
"If this option is enabled, watermark will not be added to created images. Warning: if you do not add watermark, you may be behaving in an unethical manner.": "إذا تم تمكين هذا الخيار ، فلن تتم إضافة العلامة المائية إلى الصور التي تم إنشاؤها. تحذير: إذا لم تقم بإضافة علامة مائية ، فقد تكون تتصرف بطريقة غير أخلاقية.",
|
||||
"Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; leave empty for default.": "استخدم العلامات التالية لتحديد كيفية اختيار المجادت الفرعية للصور و الإطارات الشبكية : [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp] ؛ اتركه فارغا للوضع الافتراضي.",
|
||||
"This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is.": "سيتم استخدام هذا التعبير العادي لاستخراج الكلمات من اسم الملف ، وسيتم ضمها باستخدام الخيار أدناه في نص التسمية المستخدم للتدريب. اتركه فارغًا للاحتفاظ بنص اسم الملف كما هو.",
|
||||
"This string will be used to join split words into a single line if the option above is enabled.": "سيتم استخدام هذا النص لضم الكلمات المقسمة إلى سطر واحد إذا تم تمكين الخيار أعلاه.",
|
||||
"List of setting names, separated by commas, for settings that should go to the quick access bar at the top, rather than the usual setting tab. See modules/shared.py for setting names. Requires restarting to apply.": "قائمة أسماء الإعدادات ، مفصولة بفواصل ، للإعدادات التي يجب أن تنتقل إلى شريط الوصول السريع في الأعلى ، بدلاً من علامة تبويب الإعداد المعتادة. انظر modules / shared.py للتعرف على أسماء الإعدادات. يتطلب إعادة التشغيل للتطبيق.",
|
||||
"If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing.": "إذا كانت هذه القيم غير صفرية ، فستتم إضافتها إلى البذرة واستخدامها لتهيئة فوضى الضوضاء عند استخدام أنظمة أخذ العينات باستخدام الوقت المتبقي. يمكنك استخدام ذلك لإنتاج المزيد من التنوعات في الصور ، أو يمكنك استخدامه لمطابقة صور البرامج الأخرى إذا كنت تعرف ما تفعله."
|
||||
}
|
|
@ -0,0 +1,418 @@
|
|||
{
|
||||
"⤡": "⤡",
|
||||
"⊞": "⊞",
|
||||
"×": "×",
|
||||
"❮": "❮",
|
||||
"❯": "❯",
|
||||
"Loading...": "Cargando...",
|
||||
"view": "mostrar",
|
||||
"api": "api",
|
||||
"•": "•",
|
||||
"built with gradio": "Construido con Gradio",
|
||||
"Stable Diffusion checkpoint": "Stable Diffusion checkpoint",
|
||||
"txt2img": "txt2img",
|
||||
"img2img": "img2img",
|
||||
"Extras": "Extras",
|
||||
"PNG Info": "PNG Info",
|
||||
"Checkpoint Merger": "Checkpoint Merger",
|
||||
"Train": "Train",
|
||||
"Settings": "Ajustes",
|
||||
"Prompt": "Prompt",
|
||||
"Negative prompt": "Prompt negativo",
|
||||
"Run": "Ejecutar",
|
||||
"Skip": "Saltar",
|
||||
"Interrupt": "Interrumpir",
|
||||
"Generate": "Generar",
|
||||
"Style 1": "Estilo 1",
|
||||
"Style 2": "Estilo 2",
|
||||
"Label": "Etiqueta",
|
||||
"File": "Archivo",
|
||||
"Drop File Here": "Suelta el Archivo Aquí",
|
||||
"-": "-",
|
||||
"o": "o",
|
||||
"Click to Upload": "Click para Cargar",
|
||||
"Image": "Imagen",
|
||||
"Check progress": "Comprobar progreso",
|
||||
"Check progress (first)": "Comprobar progreso (inicial)",
|
||||
"Sampling Steps": "Sampling Steps",
|
||||
"Sampling method": "Sampling method",
|
||||
"Euler a": "Euler a",
|
||||
"Euler": "Euler",
|
||||
"LMS": "LMS",
|
||||
"Heun": "Heun",
|
||||
"DPM2": "DPM2",
|
||||
"DPM2 a": "DPM2 a",
|
||||
"DPM fast": "DPM fast",
|
||||
"DPM adaptive": "DPM adaptive",
|
||||
"LMS Karras": "LMS Karras",
|
||||
"DPM2 Karras": "DPM2 Karras",
|
||||
"DPM2 a Karras": "DPM2 a Karras",
|
||||
"DDIM": "DDIM",
|
||||
"PLMS": "PLMS",
|
||||
"Width": "Ancho",
|
||||
"Height": "Alto",
|
||||
"Restore faces": "Restaurar rostros",
|
||||
"Tiling": "Mosaico",
|
||||
"Highres. fix": "Highres. fix",
|
||||
"Firstpass width": "Ancho original",
|
||||
"Firstpass height": "Alto original",
|
||||
"Denoising strength": "Denoising strength",
|
||||
"Batch count": "Batch count",
|
||||
"Batch size": "Batch size",
|
||||
"CFG Scale": "CFG Scale",
|
||||
"Seed": "Seed",
|
||||
"Extra": "Extra",
|
||||
"Variation seed": "Variation seed",
|
||||
"Variation strength": "Variation strength",
|
||||
"Resize seed from width": "Redimensionar seed del ancho",
|
||||
"Resize seed from height": "Redimensionar seed del alto",
|
||||
"Script": "Script",
|
||||
"None": "Ninguno",
|
||||
"Prompt matrix": "Prompt matrix",
|
||||
"Prompts from file or textbox": "Prompts desde archivo o campo de texto",
|
||||
"X/Y plot": "X/Y plot",
|
||||
"Put variable parts at start of prompt": "Poner partes variables al inicio del prompt",
|
||||
"Show Textbox": "Mostrar Campo de texto",
|
||||
"File with inputs": "Archivo con inputs",
|
||||
"Prompts": "Prompts",
|
||||
"X type": "X type",
|
||||
"Nothing": "Nada",
|
||||
"Var. seed": "Var. seed",
|
||||
"Var. strength": "Var. strength",
|
||||
"Steps": "Steps",
|
||||
"Prompt S/R": "Prompt S/R",
|
||||
"Prompt order": "Prompt order",
|
||||
"Sampler": "Sampler",
|
||||
"Checkpoint name": "Checkpoint name",
|
||||
"Hypernetwork": "Hypernetwork",
|
||||
"Hypernet str.": "Hypernet str.",
|
||||
"Sigma Churn": "Sigma Churn",
|
||||
"Sigma min": "Sigma min",
|
||||
"Sigma max": "Sigma max",
|
||||
"Sigma noise": "Sigma noise",
|
||||
"Eta": "Eta",
|
||||
"Clip skip": "Clip skip",
|
||||
"Denoising": "Denoising",
|
||||
"X values": "X values",
|
||||
"Y type": "Y type",
|
||||
"Y values": "Y values",
|
||||
"Draw legend": "Agregar leyenda",
|
||||
"Include Separate Images": "Incluir Imágenes Separadas",
|
||||
"Keep -1 for seeds": "Mantener -1 para seeds",
|
||||
"Drop Image Here": "Suelta la Imagen Aquí",
|
||||
"Save": "Guardar",
|
||||
"Send to img2img": "Enviar a img2img",
|
||||
"Send to inpaint": "Enviar a inpaint",
|
||||
"Send to extras": "Enviar a extras",
|
||||
"Make Zip when Save?": "Crear Zip al Guardar?",
|
||||
"Textbox": "Campo de texto",
|
||||
"Interrogate\nCLIP": "Interrogar\nCLIP",
|
||||
"Inpaint": "Inpaint",
|
||||
"Batch img2img": "Batch img2img",
|
||||
"Image for img2img": "Imagen para img2img",
|
||||
"Image for inpainting with mask": "Imagen para inpainting con mask",
|
||||
"Mask": "Mask",
|
||||
"Mask blur": "Mask blur",
|
||||
"Mask mode": "Mask mode",
|
||||
"Draw mask": "Dibujar mask",
|
||||
"Upload mask": "Cargar mask",
|
||||
"Masking mode": "Masking mode",
|
||||
"Inpaint masked": "Inpaint masked",
|
||||
"Inpaint not masked": "Inpaint not masked",
|
||||
"Masked content": "Masked content",
|
||||
"fill": "fill",
|
||||
"original": "original",
|
||||
"latent noise": "latent noise",
|
||||
"latent nothing": "latent nothing",
|
||||
"Inpaint at full resolution": "Inpaint a resolución completa",
|
||||
"Inpaint at full resolution padding, pixels": "Inpaint a resolución completa padding, pixeles",
|
||||
"Process images in a directory on the same machine where the server is running.": "Procesa imágenes en un directorio en la misma máquina donde se ejecuta el servidor.",
|
||||
"Use an empty output directory to save pictures normally instead of writing to the output directory.": "Usa un directorio de salida vacío para guardar imágenes normalmente en lugar de escribir en el directorio de salida.",
|
||||
"Input directory": "Directorio de entrada",
|
||||
"Output directory": "Directorio de salida",
|
||||
"Resize mode": "Modo de cambio de tamaño",
|
||||
"Just resize": "Solo redimensionar",
|
||||
"Crop and resize": "Recortar y redimensionar",
|
||||
"Resize and fill": "Redimensionar y rellenar",
|
||||
"img2img alternative test": "img2img alternative test",
|
||||
"Loopback": "Loopback",
|
||||
"Outpainting mk2": "Outpainting mk2",
|
||||
"Poor man's outpainting": "Poor man's outpainting",
|
||||
"SD upscale": "SD upscale",
|
||||
"should be 2 or lower.": "debe ser 2 o menos.",
|
||||
"Override `Sampling method` to Euler?(this method is built for it)": "Anular `Sampling method` a Euler? (este método está diseñado para ello)",
|
||||
"Override `prompt` to the same value as `original prompt`?(and `negative prompt`)": "Anular `prompt` al mismo valor `prompt original`? (y `prompt negativo`)",
|
||||
"Original prompt": "Prompt original",
|
||||
"Original negative prompt": "Promp negativo original",
|
||||
"Override `Sampling Steps` to the same value as `Decode steps`?": "Anular `Sampling Steps` al mismo valor de `Decode steps`?",
|
||||
"Decode steps": "Decode steps",
|
||||
"Override `Denoising strength` to 1?": "Anular `Denoising strength` a 1?",
|
||||
"Decode CFG scale": "Decode CFG scale",
|
||||
"Randomness": "Aleatoriedad",
|
||||
"Sigma adjustment for finding noise for image": "Ajuste Sigma para encontrar ruido para la imagen.",
|
||||
"Loops": "Loops",
|
||||
"Denoising strength change factor": "Denoising strength change factor",
|
||||
"Recommended settings: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8": "Ajustes recomendados: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8",
|
||||
"Pixels to expand": "Píxeles para expandir",
|
||||
"Outpainting direction": "Dirección Outpainting",
|
||||
"left": "izquierda",
|
||||
"right": "derecha",
|
||||
"up": "arriba",
|
||||
"down": "abajo",
|
||||
"Fall-off exponent (lower=higher detail)": "Fall-off exponent (inferior=mayor detalle)",
|
||||
"Color variation": "Variación de color",
|
||||
"Will upscale the image to twice the dimensions; use width and height sliders to set tile size": "Mejorará la imagen al doble de las dimensiones; usa los controles deslizantes de ancho y alto para establecer el tamaño del mosaico",
|
||||
"Tile overlap": "Solapar mosaicos",
|
||||
"Upscaler": "Upscaler",
|
||||
"Lanczos": "Lanczos",
|
||||
"LDSR": "LDSR",
|
||||
"SwinIR 4x": "SwinIR 4x",
|
||||
"ScuNET GAN": "ScuNET GAN",
|
||||
"ScuNET PSNR": "ScuNET PSNR",
|
||||
"ESRGAN_4x": "ESRGAN_4x",
|
||||
"Single Image": "Imagen Única",
|
||||
"Batch Process": "Batch Process",
|
||||
"Batch from Directory": "Batch desde Directorio",
|
||||
"Source": "Origen",
|
||||
"Show result images": "Mostrar resultados de imágenes",
|
||||
"Scale by": "Escalar por",
|
||||
"Scale to": "Escalar a",
|
||||
"Resize": "Redimensionar",
|
||||
"Crop to fit": "Recortar para ajustar",
|
||||
"Upscaler 2 visibility": "Upscaler 2 visibilidad",
|
||||
"GFPGAN visibility": "GFPGAN visibilidad",
|
||||
"CodeFormer visibility": "CodeFormer visibilidad",
|
||||
"CodeFormer weight (0 = maximum effect, 1 = minimum effect)": "CodeFormer peso (0 = efecto máximo, 1 = efecto mínimo)",
|
||||
"Open output directory": "Abrir directorio de salida",
|
||||
"Send to txt2img": "Enviar a txt2img",
|
||||
"A merger of the two checkpoints will be generated in your": "Se generará una fusión de los dos checkpoints en su",
|
||||
"checkpoint": "checkpoint",
|
||||
"directory.": "directorio.",
|
||||
"Primary model (A)": "Modelo primario (A)",
|
||||
"Secondary model (B)": "Modelo secundario (B)",
|
||||
"Tertiary model (C)": "Modelo terciario (C)",
|
||||
"Custom Name (Optional)": "Nombre personalizado (Opcional)",
|
||||
"Multiplier (M) - set to 0 to get model A": "Multiplier (M) - establecer en 0 para obtener el modelo A",
|
||||
"Interpolation Method": "Método de interpolación",
|
||||
"Weighted sum": "Weighted sum",
|
||||
"Add difference": "Add difference",
|
||||
"Save as float16": "Guardar como float16",
|
||||
"See": "Ver ",
|
||||
"wiki": "wiki ",
|
||||
"for detailed explanation.": "para una explicación detallada.",
|
||||
"Create embedding": "Crear embedding",
|
||||
"Create hypernetwork": "Crear hypernetwork",
|
||||
"Preprocess images": "Preprocesar imágenes",
|
||||
"Name": "Nombre",
|
||||
"Initialization text": "Texto de inicialización",
|
||||
"Number of vectors per token": "Número de vectores por token",
|
||||
"Overwrite Old Embedding": "Sobrescribir Embedding Anterior",
|
||||
"Modules": "Módulos",
|
||||
"Enter hypernetwork layer structure": "Ingresa la estructura de capa del hypernetwork",
|
||||
"Select activation function of hypernetwork": "Selecciona la función de activación del hypernetwork",
|
||||
"linear": "linear",
|
||||
"relu": "relu",
|
||||
"leakyrelu": "leakyrelu",
|
||||
"elu": "elu",
|
||||
"swish": "swish",
|
||||
"Add layer normalization": "Agregar normalización de capa",
|
||||
"Use dropout": "Usar dropout",
|
||||
"Overwrite Old Hypernetwork": "Sobrescribir Hypernetwork Anterior",
|
||||
"Source directory": "Directorio de origen",
|
||||
"Destination directory": "Directorio de salida",
|
||||
"Existing Caption txt Action": "Existing Caption txt Action",
|
||||
"ignore": "ignorar",
|
||||
"copy": "copiar",
|
||||
"prepend": "anteponer",
|
||||
"append": "añadir",
|
||||
"Create flipped copies": "Crear copias volteadas",
|
||||
"Split oversized images": "Dividir imágenes grandes",
|
||||
"Use BLIP for caption": "Usar BLIP para subtítulo",
|
||||
"Use deepbooru for caption": "Usar deepbooru para subtítulo",
|
||||
"Split image threshold": "Threshold imagen dividida",
|
||||
"Split image overlap ratio": "Overlap ratio imagen dividida",
|
||||
"Preprocess": "Preproceso",
|
||||
"Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images": "Entrenar un embedding o Hypernetwork; debes especificar un directorio con un conjunto de imágenes con una proporción de 1:1 ",
|
||||
"[wiki]": "[wiki]",
|
||||
"Embedding": "Embedding",
|
||||
"Embedding Learning rate": "Embedding Learning rate",
|
||||
"Hypernetwork Learning rate": "Hypernetwork Learning rate",
|
||||
"Dataset directory": "Directorio dataset",
|
||||
"Log directory": "Directorio log",
|
||||
"Prompt template file": "Prompt archivos plantilla",
|
||||
"Max steps": "Max steps",
|
||||
"Save an image to log directory every N steps, 0 to disable": "Guarda una imagen en el directorio log cada N pasos, 0 para deshabilitar",
|
||||
"Save a copy of embedding to log directory every N steps, 0 to disable": "Guarda una copia de embedding en el directorio log cada N pasos, 0 para deshabilitar",
|
||||
"Save images with embedding in PNG chunks": "Guarda imágenes con embedding en fragmentos PNG",
|
||||
"Read parameters (prompt, etc...) from txt2img tab when making previews": "Leer parámetros (prompt, etc...) desde la pestaña txt2img al hacer vistas previas",
|
||||
"Train Hypernetwork": "Train Hypernetwork",
|
||||
"Train Embedding": "Train Embedding",
|
||||
"Apply settings": "Aplicar ajustes",
|
||||
"Saving images/grids": "Guardar imágenes/grids",
|
||||
"Always save all generated images": "Siempre guardar imágenes generadas",
|
||||
"File format for images": "Formato de archivo para imágenes",
|
||||
"Images filename pattern": "Patrón nombre archivo imágenes",
|
||||
"Add number to filename when saving": "Agregar número al nombre de archivo al guardar",
|
||||
"Always save all generated image grids": "Siempre guardar grids de imágenes generadas",
|
||||
"File format for grids": "Formato de archivo para grids",
|
||||
"Add extended info (seed, prompt) to filename when saving grid": "Agregar información extendida (seed, prompt) al nombre del archivo al guardar grid",
|
||||
"Do not save grids consisting of one picture": "No guardar grids que consisten en una imagen",
|
||||
"Prevent empty spots in grid (when set to autodetect)": "Evitar espacios vacíos en grids (cuando se establece detección automática)",
|
||||
"Grid row count; use -1 for autodetect and 0 for it to be same as batch size": "Recuento de filas de grids; usar -1 para la detección automática y 0 para que sea igual al batch size",
|
||||
"Save text information about generation parameters as chunks to png files": "Guardar información de texto sobre parámetros de generación como fragmentos en archivos png",
|
||||
"Create a text file next to every image with generation parameters.": "Crear un archivo de texto junto a cada imagen con parámetros de generación.",
|
||||
"Save a copy of image before doing face restoration.": "Guardar una copia de la imagen antes de restaurar rostro.",
|
||||
"Quality for saved jpeg images": "Calidad para imágenes jpeg guardadas",
|
||||
"If PNG image is larger than 4MB or any dimension is larger than 4000, downscale and save copy as JPG": "Si la imagen PNG es más grande de 4 MB o cualquier dimensión es más grande que 4000, reduce la escala y guarda la copia como JPG",
|
||||
"Use original name for output filename during batch process in extras tab": "Use el nombre original para el nombre del archivo de salida durante el batch process en la pestaña extras",
|
||||
"When using 'Save' button, only save a single selected image": "Al usar el botón 'Guardar', solo guarda una sola imagen seleccionada",
|
||||
"Do not add watermark to images": "No agregar watermark a las imágenes",
|
||||
"Paths for saving": "Directorios para guardar",
|
||||
"Output directory for images; if empty, defaults to three directories below": "Directorio de imágenes; si está vacío, se utilizan los siguientes 3 directorios",
|
||||
"Output directory for txt2img images": "Directorio para guardar imágenes de txt2img",
|
||||
"Output directory for img2img images": "Directorio para guardar imágenes de img2img",
|
||||
"Output directory for images from extras tab": "Directorio para guardar imágenes de extras",
|
||||
"Output directory for grids; if empty, defaults to two directories below": "Directorio de grids; si está vacío, se utilizan los siguientes 2 directorios",
|
||||
"Output directory for txt2img grids": "Directorio para guardar txt2img grids",
|
||||
"Output directory for img2img grids": "Directorio para guardar img2img grids",
|
||||
"Directory for saving images using the Save button": "Directorio para guardar imágenes usando el botón Guardar",
|
||||
"Saving to a directory": "Guardando a un directorio",
|
||||
"Save images to a subdirectory": "Guardar imágenes a un subdirectorio",
|
||||
"Save grids to a subdirectory": "Guardar grids a un subdirectorio",
|
||||
"When using \"Save\" button, save images to a subdirectory": "Al usar el botón \"Guardar\", guarda las imágenes en un subdirectorio",
|
||||
"Directory name pattern": "Patrón nombre directorio",
|
||||
"Max prompt words for [prompt_words] pattern": "Máximo de palabras en prompt [prompt_words] para patrón",
|
||||
"Upscaling": "Upscaling",
|
||||
"Tile size for ESRGAN upscalers. 0 = no tiling.": "Tamaño mosaico para ESRGAN upscalers. 0 = sin mosaico.",
|
||||
"Tile overlap, in pixels for ESRGAN upscalers. Low values = visible seam.": "Solapar mosaico, en pixeles para ESRGAN upscalers. Valores bajos = unión visible.",
|
||||
"Tile size for all SwinIR.": "Tamaño mosaico para SwinIR.",
|
||||
"Tile overlap, in pixels for SwinIR. Low values = visible seam.": "Solapar mosaico, en pixeles para SwinIR. Valores bajos = unión visible.",
|
||||
"LDSR processing steps. Lower = faster": "LDSR processing steps. Más bajo = rápido",
|
||||
"Upscaler for img2img": "Upscaler para img2img",
|
||||
"Upscale latent space image when doing hires. fix": "Upscale latent space al aplicar hires. fix",
|
||||
"Face restoration": "Restauración de rostro",
|
||||
"CodeFormer weight parameter; 0 = maximum effect; 1 = minimum effect": "CodeFormer parámetro peso; 0 = máximo efecto; 1 = mínimo efecto",
|
||||
"Move face restoration model from VRAM into RAM after processing": "Mover modelo de restauración de rostro del VRAM al RAM después de procesar",
|
||||
"System": "Sistema",
|
||||
"VRAM usage polls per second during generation. Set to 0 to disable.": "Sondeos de uso de VRAM por segundo durante la generación. Establecer en 0 para deshabilitar.",
|
||||
"Always print all generation info to standard output": "Imprime siempre toda la información de generación en la salida estándar",
|
||||
"Add a second progress bar to the console that shows progress for an entire job.": "Agrega una segunda barra de progreso a la consola que muestra el progreso de un trabajo completo.",
|
||||
"Training": "Entrenamiento",
|
||||
"Move VAE and CLIP to RAM when training hypernetwork. Saves VRAM.": "Mover VAE y CLIP al RAM al entrenar un hypernetwork. Ahorra VRAM.",
|
||||
"Filename word regex": "Filename word regex",
|
||||
"Filename join string": "Filename join string",
|
||||
"Number of repeats for a single input image per epoch; used only for displaying epoch number": "Número de repeticiones para una sola imagen de entrada por epoch; utilizado solo para mostrar el número epoch",
|
||||
"Save an csv containing the loss to log directory every N steps, 0 to disable": "Guarda un csv que contenga la pérdida en el directorio log cada N pasos, 0 para deshabilitar",
|
||||
"Stable Diffusion": "Stable Diffusion",
|
||||
"Checkpoints to cache in RAM": "Checkpoints al cache en RAM",
|
||||
"Hypernetwork strength": "Hypernetwork strength",
|
||||
"Apply color correction to img2img results to match original colors.": "Aplica la corrección de color a los resultados de img2img para que coincidan con los colores originales.",
|
||||
"Save a copy of image before applying color correction to img2img results": "Guarda una copia de la imagen antes de aplicar la corrección de color a los resultados de img2img",
|
||||
"With img2img, do exactly the amount of steps the slider specifies (normally you'd do less with less denoising).": "Con img2img, hace exactamente la cantidad de pasos que especifica el slider (normalmente haría menos con menos eliminación de ruido).",
|
||||
"Enable quantization in K samplers for sharper and cleaner results. This may change existing seeds. Requires restart to apply.": "Habilita la cuantificación en K samplers para obtener resultados más nítidos y limpios. Esto puede cambiar los seeds existentes. Requiere reiniciar para aplicar.",
|
||||
"Emphasis: use (text) to make model pay more attention to text and [text] to make it pay less attention": "Énfasis: utiliza (texto) para que el modelo preste más atención al texto y [texto] para que preste menos atención",
|
||||
"Use old emphasis implementation. Can be useful to reproduce old seeds.": "Utiliza la implementación de énfasis antiguo. Puede ser útil para reproducir seeds anteriores.",
|
||||
"Make K-diffusion samplers produce same images in a batch as when making a single image": "Hace que los K-diffusion samplers produzcan las mismas imágenes en un lote que cuando se crea una sola imagen",
|
||||
"Increase coherency by padding from the last comma within n tokens when using more than 75 tokens": "Aumenta la coherencia rellenando desde la última coma dentro de n tokens cuando se use más de 75 tokens",
|
||||
"Filter NSFW content": "Filtrar contenido NSFW",
|
||||
"Stop At last layers of CLIP model": "Detener en las últimas capas del modelo CLIP",
|
||||
"Interrogate Options": "Opciones de Interrogar",
|
||||
"Interrogate: keep models in VRAM": "Interrogar: mantener modelos en VRAM",
|
||||
"Interrogate: use artists from artists.csv": "Interrogar: utilizar artistas de artists.csv",
|
||||
"Interrogate: include ranks of model tags matches in results (Has no effect on caption-based interrogators).": "Interrogar: incluir rangos de coincidencias de etiquetas de modelos en los resultados (No tiene efecto en los interrogadores basados en subtítulos).",
|
||||
"Interrogate: num_beams for BLIP": "Interrogar: num_beams para BLIP",
|
||||
"Interrogate: minimum description length (excluding artists, etc..)": "Interrogar: longitud mínima de la descripción (excluyendo artistas, etc.)",
|
||||
"Interrogate: maximum description length": "Interrogar: longitud máxima de la descripción",
|
||||
"CLIP: maximum number of lines in text file (0 = No limit)": "CLIP: número máximo de líneas en el archivo de texto (0 = Sin límite)",
|
||||
"Interrogate: deepbooru score threshold": "Interrogar: deepbooru score threshold",
|
||||
"Interrogate: deepbooru sort alphabetically": "Interrogar: deepbooru ordenar alfabéticamente",
|
||||
"use spaces for tags in deepbooru": "usar espacios para etiquetas en deepbooru",
|
||||
"escape (\\) brackets in deepbooru (so they are used as literal brackets and not for emphasis)": "corchetes de escape (\\) en deepbooru (por lo que se usan como corchetes literales y no para enfatizar)",
|
||||
"User interface": "Interfaz de usuario",
|
||||
"Show progressbar": "Mostrar barra de progreso",
|
||||
"Show image creation progress every N sampling steps. Set 0 to disable.": "Muestra el progreso de creación de la imagen cada N sampling steps. Establecer 0 para deshabilitar.",
|
||||
"Show previews of all images generated in a batch as a grid": "Mostrar vistas previas de todas las imágenes generadas en un batch como un grid",
|
||||
"Show grid in results for web": "Mostrar grids en resultados para web",
|
||||
"Do not show any images in results for web": "No mostrar ninguna imagen en los resultados para web",
|
||||
"Add model hash to generation information": "Agregar hash de modelo a la información de generación",
|
||||
"Add model name to generation information": "Agregar nombre de modelo a la información de generación",
|
||||
"When reading generation parameters from text into UI (from PNG info or pasted text), do not change the selected model/checkpoint.": "Al leer los parámetros de generación del texto en la interfaz de usuario (desde PNG Info o texto pegado), no cambia el modelo/checkpoint seleccionado.",
|
||||
"Font for image grids that have text": "Tipografía para grids de imágenes que tienen texto",
|
||||
"Enable full page image viewer": "Habilitar visor de imágenes de página completa",
|
||||
"Show images zoomed in by default in full page image viewer": "Mostrar imágenes ampliadas de forma predeterminada en el visor de imágenes de página completa",
|
||||
"Show generation progress in window title.": "Muestra el progreso de la generación en el título de la ventana del navegador.",
|
||||
"Quicksettings list": "Lista de ajustes rápidos",
|
||||
"Localization (requires restart)": "Traducción (requiere reiniciar)",
|
||||
"Sampler parameters": "Parámetros sampler",
|
||||
"Hide samplers in user interface (requires restart)": "Ocultar samplers en interfaz de usuario (requiere reiniciar)",
|
||||
"eta (noise multiplier) for DDIM": "eta (noise multiplier) para DDIM",
|
||||
"eta (noise multiplier) for ancestral samplers": "eta (noise multiplier) para ancestral samplers",
|
||||
"img2img DDIM discretize": "img2img DDIM discretize",
|
||||
"uniform": "uniform",
|
||||
"quad": "quad",
|
||||
"sigma churn": "sigma churn",
|
||||
"sigma tmin": "sigma tmin",
|
||||
"sigma noise": "sigma noise",
|
||||
"Eta noise seed delta": "Eta noise seed delta",
|
||||
"Request browser notifications": "Solicitar notificaciones del navegador",
|
||||
"Download localization template": "Descargar plantilla de traducción",
|
||||
"Reload custom script bodies (No ui updates, No restart)": "Recargar custom script bodies (Sin actualizar UI, Sin reiniciar)",
|
||||
"Restart Gradio and Refresh components (Custom Scripts, ui.py, js and css only)": "Reiniciar Gradio y Refrescar componentes (Custom Scripts, ui.py, js y css)",
|
||||
"Prompt (press Ctrl+Enter or Alt+Enter to generate)": "Prompt (presiona Ctrl+Enter o Alt+Enter para generar)",
|
||||
"Negative prompt (press Ctrl+Enter or Alt+Enter to generate)": "Prompt negativo (presiona Ctrl+Enter o Alt+Enter para generar)",
|
||||
"Add a random artist to the prompt.": "Agregar un artista aleatorio al prompt.",
|
||||
"Read generation parameters from prompt or last generation if prompt is empty into user interface.": "Leer los parámetros de generación del prompt o de la última generación si el prompt está vacío en la interfaz de usuario.",
|
||||
"Save style": "Guardar estilo",
|
||||
"Apply selected styles to current prompt": "Aplicar estilos seleccionados al prompt",
|
||||
"Stop processing current image and continue processing.": "Dejar de procesar la imagen actual y continuar procesando.",
|
||||
"Stop processing images and return any results accumulated so far.": "Dejar de procesar imágenes y devuelva los resultados acumulados hasta el momento.",
|
||||
"Style to apply; styles have components for both positive and negative prompts and apply to both": "Estilo a aplicar; los estilos tienen componentes tanto para prompts positivos como negativos y se aplican a ambos",
|
||||
"Do not do anything special": "No hacer nada especial",
|
||||
"Which algorithm to use to produce the image": "Qué algoritmo usar para producir la imagen",
|
||||
"Euler Ancestral - very creative, each can get a completely different picture depending on step count, setting steps to higher than 30-40 does not help": "Euler Ancestral - muy creativo, cada uno puede obtener una imagen completamente diferente dependiendo del conteo de steps, configurar los steps a más de 30-40 no ayuda",
|
||||
"Denoising Diffusion Implicit Models - best at inpainting": "Denoising Diffusion Implicit Models - funcionan mejor para inpainting",
|
||||
"Produce an image that can be tiled.": "Produce una imagen que puede usarse como mosaico.",
|
||||
"Use a two step process to partially create an image at smaller resolution, upscale, and then improve details in it without changing composition": "Usa un proceso de dos pasos para crear parcialmente una imagen con una resolución más pequeña, mejora la escala y luego mejora los detalles sin cambiar la composición",
|
||||
"Determines how little respect the algorithm should have for image's content. At 0, nothing will change, and at 1 you'll get an unrelated image. With values below 1.0, processing will take less steps than the Sampling Steps slider specifies.": "Determina qué tan poco respeto debe tener el algoritmo por el contenido de la imagen. En 0, nada cambiará y en 1 obtendrá una imagen no relacionada. Con valores por debajo de 1.0, el procesamiento tomará menos steps de los que especifica el slider de Sampling Steps.",
|
||||
"How many batches of images to create": "Cuantos batches de imágenes para crear",
|
||||
"How many image to create in a single batch": "Cuantas imágenes para crear en un solo batch",
|
||||
"Classifier Free Guidance Scale - how strongly the image should conform to prompt - lower values produce more creative results": "Classifier Free Guidance Scale - con qué fuerza debe ajustarse la imagen al prompt: los valores más bajos producen resultados más creativos",
|
||||
"A value that determines the output of random number generator - if you create an image with same parameters and seed as another image, you'll get the same result": "Un valor que determina la salida del generador de números aleatorios: si creas una imagen con los mismos parámetros y el seed que otra imagen, obtendrás el mismo resultado",
|
||||
"Set seed to -1, which will cause a new random number to be used every time": "Establece el seed a -1, lo que hará que se use un nuevo número aleatorio cada vez",
|
||||
"Reuse seed from last generation, mostly useful if it was randomed": "Reutilice el seed de la última generación, muy útil si fue aleatoria",
|
||||
"Seed of a different picture to be mixed into the generation.": "Seed de una imagen diferente para ser mezclada en la generación.",
|
||||
"How strong of a variation to produce. At 0, there will be no effect. At 1, you will get the complete picture with variation seed (except for ancestral samplers, where you will just get something).": "Qué fuerte de una variación para producir. En 0, no habrá ningún efecto. En 1, obtendrá la imagen completa con variation seed (excepto para ancestral samplers, donde solo obtendrás algo).",
|
||||
"Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution": "Intenta producir una imagen similar a la que se habría producido con el mismo seed a la resolución especificada",
|
||||
"Separate values for X axis using commas.": "Separar valores para X usando comas.",
|
||||
"Separate values for Y axis using commas.": "Separar valores para Y usando comas.",
|
||||
"Write image to a directory (default - log/images) and generation parameters into csv file.": "Escribe la imagen en un directorio (predeterminado: log/images) y los parámetros de generación en el archivo csv.",
|
||||
"Open images output directory": "Abrir directorio de imágenes",
|
||||
"How much to blur the mask before processing, in pixels.": "Cuánto blur al mask antes de procesar, en píxeles.",
|
||||
"What to put inside the masked area before processing it with Stable Diffusion.": "Qué poner dentro del área con mask antes de procesarlo con Stable Diffusion.",
|
||||
"fill it with colors of the image": "rellenarlo con los colores de la imagen",
|
||||
"keep whatever was there originally": "mantener lo que estaba allí originalmente",
|
||||
"fill it with latent space noise": "rellenarlo con latent space noise",
|
||||
"fill it with latent space zeroes": "rellenarlo con latent space zeroes",
|
||||
"Upscale masked region to target resolution, do inpainting, downscale back and paste into original image": "Upscale la región con mask a la resolución objetivo, vuelve a pintar, reduce la escala hacia atrás y pégala en la imagen original",
|
||||
"Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.": "Cambia el tamaño de la imagen a la resolución destino. A menos que la altura y el ancho coincidan, obtendrás una relación de aspecto incorrecta.",
|
||||
"Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.": "Cambia el tamaño de la imagen para que la totalidad de la resolución destino se llene con la imagen. Recorta las partes que sobresalen.",
|
||||
"Resize the image so that entirety of image is inside target resolution. Fill empty space with image's colors.": "Cambia el tamaño de la imagen para que la totalidad de la imagen esté dentro de la resolución de destino. Rellena el espacio vacío con los colores de la imagen.",
|
||||
"How many times to repeat processing an image and using it as input for the next iteration": "Cuántas veces repetir el procesamiento de una imagen y usarla como entrada para la próxima iteración",
|
||||
"In loopback mode, on each loop the denoising strength is multiplied by this value. <1 means decreasing variety so your sequence will converge on a fixed picture. >1 means increasing variety so your sequence will become more and more chaotic.": "En modo loopback, en cada bucle, la fuerza de eliminación de ruido se multiplica por este valor. <1 significa variedad decreciente, por lo que su secuencia convergerá en una imagen fija. >1 significa aumentar la variedad, por lo que su secuencia se volverá cada vez más caótica.",
|
||||
"For SD upscale, how much overlap in pixels should there be between tiles. Tiles overlap so that when they are merged back into one picture, there is no clearly visible seam.": "Para SD upscale, cuánta superposición en píxeles debe haber entre mosaicos. Los mosaicos se superponen de modo que cuando se fusionan nuevamente en una imagen, no hay una unión claramente visible.",
|
||||
"A directory on the same machine where the server is running.": "Un directorio en la misma máquina donde se ejecuta el servidor.",
|
||||
"Leave blank to save images to the default path.": "Déjalo en blanco para guardar las imágenes en la ruta predeterminada.",
|
||||
"Result = A * (1 - M) + B * M": "Resultado = A * (1 - M) + B * M",
|
||||
"Result = A + (B - C) * M": "Resultado = A + (B - C) * M",
|
||||
"1st and last digit must be 1. ex:'1, 2, 1'": "Primer y último dígito debe ser 1. ej:'1, 2, 1'",
|
||||
"Path to directory with input images": "Ruta al directorio con imágenes de entrada",
|
||||
"Path to directory where to write outputs": "Ruta al directorio donde escribir salidas",
|
||||
"Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; leave empty for default.": "Usa las siguientes etiquetas para definir cómo se eligen los nombres de archivo para las imágenes: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; dejar vacío para utilizar predeterminados.",
|
||||
"If this option is enabled, watermark will not be added to created images. Warning: if you do not add watermark, you may be behaving in an unethical manner.": "Si esta opción está habilitada, el watermark no se agregará a las imágenes creadas. Advertencia: si no agregas un watermark, es posible que te estés comportando de manera poco ética.",
|
||||
"Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; leave empty for default.": "Usa las siguiente etiquetas para definir cómo los subdirectorios para imágenes y grids son seleccionados: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [datetime<Format>], [datetime<Format><Time Zone>], [job_timestamp]; dejar vacío para utilizar predeterminados.",
|
||||
"Restore low quality faces using GFPGAN neural network": "Restaurar rostros de baja calidad utilizando GFPGAN neural network",
|
||||
"This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is.": "Esta expresión regular se usará para extraer palabras del nombre de archivo y se unirán usando la opción a continuación en el texto de la etiqueta que se usa para el entrenamiento. Dejar vacío para mantener el texto del nombre de archivo tal como está.",
|
||||
"This string will be used to join split words into a single line if the option above is enabled.": "Esta cadena se usará para unir palabras divididas en una sola línea si la opción anterior está habilitada.",
|
||||
"List of setting names, separated by commas, for settings that should go to the quick access bar at the top, rather than the usual setting tab. See modules/shared.py for setting names. Requires restarting to apply.": "Lista de nombres de configuración, separados por comas, para configuraciones que deben ir a la barra de acceso rápido en la parte superior, en lugar de la pestaña de configuración habitual. Ver modules/shared.py para configurar los nombres. Requiere reiniciar para aplicar.",
|
||||
"If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing.": "Si este valor no es cero, se agregará al seed y se usará para inicializar RNG para ruidos cuando se usan samplers con Eta. Puedes usar esto para producir aún más variaciones de imágenes, o puedes usar esto para hacer coincidir imágenes de otro software si sabes lo que estás haciendo."
|
||||
}
|
|
@ -10,13 +10,15 @@
|
|||
"•": "•",
|
||||
"gradioで作ろう": "gradioで作ろう",
|
||||
"Stable Diffusion checkpoint": "Stable Diffusion checkpoint",
|
||||
"Stop At last layers of CLIP model": "最後から何層目でCLIPを止めるか",
|
||||
"txt2img": "txt2img",
|
||||
"img2img": "img2img",
|
||||
"Extras": "その他",
|
||||
"PNG Info": "PNG内の情報を表示",
|
||||
"History": "履歴",
|
||||
"Image Browser": "画像閲覧",
|
||||
"Checkpoint Merger": "Checkpointの統合",
|
||||
"Train": "学習",
|
||||
"Create aesthetic embedding": "aesthetic embeddingを作る",
|
||||
"Settings": "設定",
|
||||
"Prompt": "プロンプト",
|
||||
"Negative prompt": "ネガティブ プロンプト",
|
||||
|
@ -57,7 +59,7 @@
|
|||
"Highres. fix": "高解像度 fix(マウスオーバーで詳細)",
|
||||
"Firstpass width": "Firstpass width",
|
||||
"Firstpass height": "Firstpass height",
|
||||
"Denoising strength": "ノイズ除去 強度",
|
||||
"Denoising strength": "ノイズ除去強度",
|
||||
"Batch count": "バッチ生成回数",
|
||||
"Batch size": "バッチあたり生成枚数",
|
||||
"CFG Scale": "CFG Scale",
|
||||
|
@ -67,15 +69,27 @@
|
|||
"Variation strength": "Variation 強度",
|
||||
"Resize seed from width": "Resize seed from width",
|
||||
"Resize seed from height": "Resize seed from height",
|
||||
"Script": "スクリプト",
|
||||
"Open for Clip Aesthetic!": "Open for Clip Aesthetic!",
|
||||
"▼": "▼",
|
||||
"Aesthetic weight": "Aesthetic weight",
|
||||
"Aesthetic steps": "Aesthetic steps",
|
||||
"Aesthetic learning rate": "Aesthetic learning rate",
|
||||
"Slerp interpolation": "Slerp interpolation",
|
||||
"Aesthetic imgs embedding": "Aesthetic imgs embedding",
|
||||
"None": "なし",
|
||||
"Aesthetic text for imgs": "Aesthetic text for imgs",
|
||||
"Slerp angle": "Slerp angle",
|
||||
"Is negative text": "Is negative text",
|
||||
"Script": "スクリプト",
|
||||
"Prompt matrix": "Prompt matrix",
|
||||
"Prompts from file or textbox": "Prompts from file or textbox",
|
||||
"Save steps of the sampling process to files": "Save steps of the sampling process to files",
|
||||
"X/Y plot": "X/Y plot",
|
||||
"Put variable parts at start of prompt": "Put variable parts at start of prompt",
|
||||
"Show Textbox": "Show Textbox",
|
||||
"File with inputs": "File with inputs",
|
||||
"Prompts": "プロンプト",
|
||||
"Save images to path": "Save images to path",
|
||||
"X type": "X軸の種類",
|
||||
"Nothing": "なし",
|
||||
"Var. seed": "Var. seed",
|
||||
|
@ -86,7 +100,7 @@
|
|||
"Sampler": "サンプラー",
|
||||
"Checkpoint name": "Checkpoint名",
|
||||
"Hypernetwork": "Hypernetwork",
|
||||
"Hypernet str.": "Hypernet強度",
|
||||
"Hypernet str.": "Hypernetの強度",
|
||||
"Sigma Churn": "Sigma Churn",
|
||||
"Sigma min": "Sigma min",
|
||||
"Sigma max": "Sigma max",
|
||||
|
@ -113,23 +127,23 @@
|
|||
"Batch img2img": "Batch img2img",
|
||||
"Image for img2img": "Image for img2img",
|
||||
"Image for inpainting with mask": "Image for inpainting with mask",
|
||||
"Mask": "Mask",
|
||||
"Mask blur": "Mask blur",
|
||||
"Mask mode": "Mask mode",
|
||||
"Draw mask": "Draw mask",
|
||||
"Upload mask": "Upload mask",
|
||||
"Masking mode": "Masking mode",
|
||||
"Inpaint masked": "Inpaint masked",
|
||||
"Inpaint not masked": "Inpaint not masked",
|
||||
"Masked content": "Masked content",
|
||||
"fill": "fill",
|
||||
"Mask": "マスク",
|
||||
"Mask blur": "マスクぼかし",
|
||||
"Mask mode": "マスクモード",
|
||||
"Draw mask": "マスクをかける",
|
||||
"Upload mask": "マスクをアップロードする",
|
||||
"Masking mode": "マスキング方法",
|
||||
"Inpaint masked": "マスクされた場所を描き直す",
|
||||
"Inpaint not masked": "マスクされていない場所を描き直す",
|
||||
"Masked content": "マスクされたコンテンツ",
|
||||
"fill": "埋める",
|
||||
"original": "オリジナル",
|
||||
"latent noise": "latent noise",
|
||||
"latent nothing": "latent nothing",
|
||||
"Inpaint at full resolution": "Inpaint at full resolution",
|
||||
"Inpaint at full resolution padding, pixels": "Inpaint at full resolution padding, pixels",
|
||||
"Process images in a directory on the same machine where the server is running.": "Process images in a directory on the same machine where the server is running.",
|
||||
"Use an empty output directory to save pictures normally instead of writing to the output directory.": "Use an empty output directory to save pictures normally instead of writing to the output directory.",
|
||||
"latent noise": "潜在空間でのノイズ",
|
||||
"latent nothing": "潜在空間での無",
|
||||
"Inpaint at full resolution": "フル解像度で描き直す",
|
||||
"Inpaint at full resolution padding, pixels": "フル解像度で描き直す際のパディング数。px単位。",
|
||||
"Process images in a directory on the same machine where the server is running.": "サーバーが稼働しているマシンと同じフォルダにある画像を処理します",
|
||||
"Use an empty output directory to save pictures normally instead of writing to the output directory.": "\"出力フォルダ\"を空にすると、通常の画像と同様に保存されます。",
|
||||
"Input directory": "入力フォルダ",
|
||||
"Output directory": "出力フォルダ",
|
||||
"Resize mode": "リサイズモード",
|
||||
|
@ -141,20 +155,21 @@
|
|||
"Outpainting mk2": "Outpainting mk2",
|
||||
"Poor man's outpainting": "Poor man's outpainting",
|
||||
"SD upscale": "SD アップスケール",
|
||||
"[C] Video to video": "[C] Video to video",
|
||||
"should be 2 or lower.": "2以下にすること",
|
||||
"Override `Sampling method` to Euler?(this method is built for it)": "サンプリングアルゴリズムをEulerに上書きする(そうすることを前提に設計されています)",
|
||||
"Override `prompt` to the same value as `original prompt`?(and `negative prompt`)": "Override `prompt` to the same value as `original prompt`?(and `negative prompt`)",
|
||||
"Original prompt": "Original prompt",
|
||||
"Original negative prompt": "Original negative prompt",
|
||||
"Override `Sampling Steps` to the same value as `Decode steps`?": "Override `Sampling Steps` to the same value as `Decode steps`?",
|
||||
"Decode steps": "Decode steps",
|
||||
"Override `Denoising strength` to 1?": "Override `Denoising strength` to 1?",
|
||||
"Override `prompt` to the same value as `original prompt`?(and `negative prompt`)": "プロンプトをオリジナルプロンプトと同じ値に上書きする(ネガティブプロンプトも同様)",
|
||||
"Original prompt": "オリジナルのプロンプト",
|
||||
"Original negative prompt": "オリジナルのネガティブプロンプト",
|
||||
"Override `Sampling Steps` to the same value as `Decode steps`?": "サンプリング数をデコードステップ数と同じ値に上書きする",
|
||||
"Decode steps": "デコードステップ数",
|
||||
"Override `Denoising strength` to 1?": "ノイズ除去強度を1に上書きする",
|
||||
"Decode CFG scale": "Decode CFG scale",
|
||||
"Randomness": "Randomness",
|
||||
"Randomness": "ランダム性",
|
||||
"Sigma adjustment for finding noise for image": "Sigma adjustment for finding noise for image",
|
||||
"Loops": "Loops",
|
||||
"Loops": "ループ数",
|
||||
"Denoising strength change factor": "Denoising strength change factor",
|
||||
"Recommended settings: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8": "Recommended settings: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8",
|
||||
"Recommended settings: Sampling Steps: 80-100, Sampler: Euler a, Denoising strength: 0.8": "推奨設定: サンプリング回数: 80-100, サンプリングアルゴリズム: Euler a, ノイズ除去強度: 0.8",
|
||||
"Pixels to expand": "Pixels to expand",
|
||||
"Outpainting direction": "Outpainting direction",
|
||||
"left": "左",
|
||||
|
@ -168,11 +183,23 @@
|
|||
"Upscaler": "アップスケーラー",
|
||||
"Lanczos": "Lanczos",
|
||||
"LDSR": "LDSR",
|
||||
"BSRGAN 4x": "BSRGAN 4x",
|
||||
"ESRGAN_4x": "ESRGAN_4x",
|
||||
"R-ESRGAN General 4xV3": "R-ESRGAN General 4xV3",
|
||||
"R-ESRGAN General WDN 4xV3": "R-ESRGAN General WDN 4xV3",
|
||||
"R-ESRGAN AnimeVideo": "R-ESRGAN AnimeVideo",
|
||||
"R-ESRGAN 4x+": "R-ESRGAN 4x+",
|
||||
"R-ESRGAN 4x+ Anime6B": "R-ESRGAN 4x+ Anime6B",
|
||||
"R-ESRGAN 2x+": "R-ESRGAN 2x+",
|
||||
"ScuNET GAN": "ScuNET GAN",
|
||||
"ScuNET PSNR": "ScuNET PSNR",
|
||||
"SwinIR 4x": "SwinIR 4x",
|
||||
"Input file path": "Input file path",
|
||||
"CRF (quality, less is better, x264 param)": "CRF (quality, less is better, x264 param)",
|
||||
"FPS": "FPS",
|
||||
"Seed step size": "Seed step size",
|
||||
"Seed max distance": "Seed max distance",
|
||||
"Start time": "Start time",
|
||||
"End time": "End time",
|
||||
"Single Image": "単一画像",
|
||||
"Batch Process": "バッチ処理",
|
||||
"Batch from Directory": "フォルダからバッチ処理",
|
||||
|
@ -182,27 +209,33 @@
|
|||
"Scale to": "解像度指定",
|
||||
"Resize": "倍率",
|
||||
"Crop to fit": "合うように切り抜き",
|
||||
"Upscaler 2": "アップスケーラー 2",
|
||||
"Upscaler 2 visibility": "Upscaler 2 visibility",
|
||||
"GFPGAN visibility": "GFPGAN visibility",
|
||||
"CodeFormer visibility": "CodeFormer visibility",
|
||||
"CodeFormer weight (0 = maximum effect, 1 = minimum effect)": "CodeFormer weight (0 = maximum effect, 1 = minimum effect)",
|
||||
"CodeFormer weight (0 = maximum effect, 1 = minimum effect)": "CodeFormerの重み (注:0で最大、1で最小)",
|
||||
"Open output directory": "出力フォルダを開く",
|
||||
"Send to txt2img": "txt2imgに送る",
|
||||
"txt2img history": "txt2imgの履歴",
|
||||
"img2img history": "img2imgの履歴",
|
||||
"extras history": "その他タブの履歴",
|
||||
"Renew Page": "更新",
|
||||
"extras": "その他タブ",
|
||||
"favorites": "お気に入り",
|
||||
"Load": "読み込み",
|
||||
"Images directory": "フォルダ",
|
||||
"Prev batch": "前の batch",
|
||||
"Next batch": "次の batch",
|
||||
"First Page": "最初のぺージへ",
|
||||
"Prev Page": "前ページへ",
|
||||
"Page Index": "ページ番号",
|
||||
"Next Page": "次ページへ",
|
||||
"End Page": "最後のページへ",
|
||||
"number of images to delete consecutively next": "number of images to delete consecutively next",
|
||||
"number of images to delete consecutively next": "次の削除で一度に削除する画像数",
|
||||
"Delete": "削除",
|
||||
"Generate Info": "生成情報",
|
||||
"File Name": "ファイル名",
|
||||
"Collect": "保存(お気に入り)",
|
||||
"Refresh page": "ページを更新",
|
||||
"Date to": "Date to",
|
||||
"Number": "Number",
|
||||
"set_index": "set_index",
|
||||
"Checkbox": "Checkbox",
|
||||
"A merger of the two checkpoints will be generated in your": "統合されたチェックポイントはあなたの",
|
||||
"checkpoint": "checkpoint",
|
||||
"directory.": "フォルダに保存されます.",
|
||||
|
@ -221,31 +254,53 @@
|
|||
"Create embedding": "Embeddingを作る",
|
||||
"Create hypernetwork": "Hypernetworkを作る",
|
||||
"Preprocess images": "画像の前処理",
|
||||
"Name": "ファイル名",
|
||||
"Name": "名称",
|
||||
"Initialization text": "Initialization text",
|
||||
"Number of vectors per token": "Number of vectors per token",
|
||||
"Modules": "Modules",
|
||||
"Overwrite Old Embedding": "古いEmbeddingを上書き",
|
||||
"Modules": "モジュール",
|
||||
"Enter hypernetwork layer structure": "Hypernetworkのレイヤー構造を入力",
|
||||
"Select activation function of hypernetwork": "Hypernetworkの活性化関数",
|
||||
"linear": "linear",
|
||||
"relu": "relu",
|
||||
"leakyrelu": "leakyrelu",
|
||||
"elu": "elu",
|
||||
"swish": "swish",
|
||||
"Add layer normalization": "Add layer normalization",
|
||||
"Use dropout": "Use dropout",
|
||||
"Overwrite Old Hypernetwork": "古いHypernetworkを上書きする",
|
||||
"Source directory": "入力フォルダ",
|
||||
"Destination directory": "出力フォルダ",
|
||||
"Existing Caption txt Action": "既存のキャプションの取り扱い",
|
||||
"ignore": "無視する",
|
||||
"copy": "コピーする",
|
||||
"prepend": "先頭に加える",
|
||||
"append": "末尾に加える",
|
||||
"Create flipped copies": "反転画像を生成する",
|
||||
"Split oversized images into two": "大きすぎる画像を2分割する",
|
||||
"Split oversized images": "大きすぎる画像を分割する",
|
||||
"Use BLIP for caption": "BLIPで説明をつける",
|
||||
"Use deepbooru for caption": "deepbooruで説明をつける",
|
||||
"Split image threshold": "分割する大きさの閾値",
|
||||
"Split image overlap ratio": "Split image overlap ratio",
|
||||
"Preprocess": "前処理開始",
|
||||
"Train an embedding; must specify a directory with a set of 1:1 ratio images": "embeddingの学習をします;データセット内の画像は正方形でなければなりません。",
|
||||
"Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images": "EmbeddingまたはHypernetworkを学習します。1:1の比率の画像セットを含むフォルダを指定する必要があります。",
|
||||
"[wiki]": "[wiki]",
|
||||
"Embedding": "Embedding",
|
||||
"Learning rate": "学習率",
|
||||
"Embedding Learning rate": "Embeddingの学習率(Learning rate)",
|
||||
"Hypernetwork Learning rate": "Hypernetworkの学習率(Learning rate)",
|
||||
"Dataset directory": "データセットフォルダ",
|
||||
"Log directory": "ログフォルダ",
|
||||
"Prompt template file": "Prompt template file",
|
||||
"Prompt template file": "プロンプトのテンプレートファイル",
|
||||
"Max steps": "最大ステップ数",
|
||||
"Save an image to log directory every N steps, 0 to disable": "指定したステップ数ごとに画像を生成し、ログに保存する。0で無効化。",
|
||||
"Save a copy of embedding to log directory every N steps, 0 to disable": "指定したステップ数ごとにEmbeddingのコピーをログに保存する。0で無効化。",
|
||||
"Save images with embedding in PNG chunks": "保存する画像にembeddingを埋め込む",
|
||||
"Read parameters (prompt, etc...) from txt2img tab when making previews": "Read parameters (prompt, etc...) from txt2img tab when making previews",
|
||||
"Read parameters (prompt, etc...) from txt2img tab when making previews": "プレビューの作成にtxt2imgタブから読み込んだパラメータ(プロンプトなど)を使う",
|
||||
"Train Hypernetwork": "Hypernetworkの学習を開始",
|
||||
"Train Embedding": "Embeddingの学習を開始",
|
||||
"Apply settings": "Apply settings",
|
||||
"Create an aesthetic embedding out of any number of images": "Create an aesthetic embedding out of any number of images",
|
||||
"Create images embedding": "Create images embedding",
|
||||
"Apply settings": "設定を適用",
|
||||
"Saving images/grids": "画像/グリッドの保存",
|
||||
"Always save all generated images": "生成された画像をすべて保存する",
|
||||
"File format for images": "画像ファイルの保存形式",
|
||||
|
@ -256,15 +311,15 @@
|
|||
"Do not save grids consisting of one picture": "1画像からなるグリッド画像は保存しない",
|
||||
"Prevent empty spots in grid (when set to autodetect)": "(自動設定のとき)グリッドに空隙が生じるのを防ぐ",
|
||||
"Grid row count; use -1 for autodetect and 0 for it to be same as batch size": "グリッドの列数; -1で自動設定、0でバッチ生成回数と同じにする",
|
||||
"Save text information about generation parameters as chunks to png files": "生成に関するパラメーターをpng画像に含める",
|
||||
"Save text information about generation parameters as chunks to png files": "生成に関するパラメーターをPNG画像に含める",
|
||||
"Create a text file next to every image with generation parameters.": "保存する画像とともに生成パラメータをテキストファイルで保存する",
|
||||
"Save a copy of image before doing face restoration.": "顔修復を行う前にコピーを保存しておく。",
|
||||
"Quality for saved jpeg images": "JPG保存時の画質",
|
||||
"If PNG image is larger than 4MB or any dimension is larger than 4000, downscale and save copy as JPG": "PNG画像が4MBを超えるか、どちらか1辺の長さが4000を超えたなら、ダウンスケールしてコピーを別にJPGで保存する",
|
||||
"Use original name for output filename during batch process in extras tab": "Use original name for output filename during batch process in extras tab",
|
||||
"When using 'Save' button, only save a single selected image": "When using 'Save' button, only save a single selected image",
|
||||
"Use original name for output filename during batch process in extras tab": "その他タブでバッチ処理をする際、元のファイル名を出力ファイル名に使う",
|
||||
"When using 'Save' button, only save a single selected image": "\"保存\"ボタンを使うとき、単一の選択された画像のみを保存する",
|
||||
"Do not add watermark to images": "電子透かしを画像に追加しない",
|
||||
"Paths for saving": "Paths for saving",
|
||||
"Paths for saving": "保存する場所",
|
||||
"Output directory for images; if empty, defaults to three directories below": "画像の保存先フォルダ(下項目のデフォルト値になります)",
|
||||
"Output directory for txt2img images": "txt2imgで作った画像の保存先フォルダ",
|
||||
"Output directory for img2img images": "img2imgで作った画像の保存先フォルダ",
|
||||
|
@ -291,13 +346,13 @@
|
|||
"CodeFormer weight parameter; 0 = maximum effect; 1 = minimum effect": "CodeFormerの重みパラメーター;0が最大で1が最小",
|
||||
"Move face restoration model from VRAM into RAM after processing": "処理終了後、顔修復モデルをVRAMからRAMへと移動する",
|
||||
"System": "システム設定",
|
||||
"VRAM usage polls per second during generation. Set to 0 to disable.": "VRAM usage polls per second during generation. Set to 0 to disable.",
|
||||
"VRAM usage polls per second during generation. Set to 0 to disable.": "生成中のVRAM使用率の取得間隔。0にすると取得しない。",
|
||||
"Always print all generation info to standard output": "常にすべての生成に関する情報を標準出力(stdout)に出力する",
|
||||
"Add a second progress bar to the console that shows progress for an entire job.": "Add a second progress bar to the console that shows progress for an entire job.",
|
||||
"Add a second progress bar to the console that shows progress for an entire job.": "ジョブ全体の進捗をコンソールに表示する2つ目のプログレスバーを追加する",
|
||||
"Training": "学習",
|
||||
"Unload VAE and CLIP from VRAM when training": "学習を行う際、VAEとCLIPをVRAMから削除する",
|
||||
"Filename word regex": "Filename word regex",
|
||||
"Filename join string": "Filename join string",
|
||||
"Move VAE and CLIP to RAM when training hypernetwork. Saves VRAM.": "hypernetworkの学習をするとき、VAEとCLIPをRAMへ退避する。VRAMが節約できます。",
|
||||
"Filename word regex": "ファイル名の正規表現(学習用)",
|
||||
"Filename join string": "ファイル名の結合子",
|
||||
"Number of repeats for a single input image per epoch; used only for displaying epoch number": "Number of repeats for a single input image per epoch; used only for displaying epoch number",
|
||||
"Save an csv containing the loss to log directory every N steps, 0 to disable": "Save an csv containing the loss to log directory every N steps, 0 to disable",
|
||||
"Stable Diffusion": "Stable Diffusion",
|
||||
|
@ -306,13 +361,12 @@
|
|||
"Apply color correction to img2img results to match original colors.": "元画像に合わせてimg2imgの結果を色補正する",
|
||||
"Save a copy of image before applying color correction to img2img results": "色補正をする前の画像も保存する",
|
||||
"With img2img, do exactly the amount of steps the slider specifies (normally you'd do less with less denoising).": "img2imgでスライダーで指定されたステップ数を正確に実行する(通常は、ノイズ除去を少なくするためにより少ないステップ数で実行します)。",
|
||||
"Enable quantization in K samplers for sharper and cleaner results. This may change existing seeds. Requires restart to apply.": "Enable quantization in K samplers for sharper and cleaner results. This may change existing seeds. Requires restart to apply.",
|
||||
"Enable quantization in K samplers for sharper and cleaner results. This may change existing seeds. Requires restart to apply.": "より良い結果を得るために、Kサンプラーで量子化を有効にします。これにより既存のシードが変更される可能性があります。適用するには再起動が必要です。",
|
||||
"Emphasis: use (text) to make model pay more attention to text and [text] to make it pay less attention": "強調: (text)とするとモデルはtextをより強く扱い、[text]とするとモデルはtextをより弱く扱います。",
|
||||
"Use old emphasis implementation. Can be useful to reproduce old seeds.": "古い強調の実装を使う。古い生成物を再現するのに使えます。",
|
||||
"Make K-diffusion samplers produce same images in a batch as when making a single image": "Make K-diffusion samplers produce same images in a batch as when making a single image",
|
||||
"Increase coherency by padding from the last comma within n tokens when using more than 75 tokens": "Increase coherency by padding from the last comma within n tokens when using more than 75 tokens",
|
||||
"Make K-diffusion samplers produce same images in a batch as when making a single image": "K-diffusionサンプラーによるバッチ生成時に、単一画像生成時と同じ画像を生成する",
|
||||
"Increase coherency by padding from the last comma within n tokens when using more than 75 tokens": "75トークン以上を使用する場合、nトークン内の最後のカンマからパディングして一貫性を高める",
|
||||
"Filter NSFW content": "NSFW(≒R-18)なコンテンツを検閲する",
|
||||
"Stop At last layers of CLIP model": "最後から何層目でCLIPを止めるか(stop…layers of CLIP model)",
|
||||
"Interrogate Options": "Interrogate 設定",
|
||||
"Interrogate: keep models in VRAM": "Interrogate: モデルをVRAMに保持する",
|
||||
"Interrogate: use artists from artists.csv": "Interrogate: artists.csvにある芸術家などの名称を利用する",
|
||||
|
@ -328,17 +382,20 @@
|
|||
"User interface": "UI設定",
|
||||
"Show progressbar": "プログレスバーを表示",
|
||||
"Show image creation progress every N sampling steps. Set 0 to disable.": "指定したステップ数ごとに画像の生成過程を表示する。0で無効化。",
|
||||
"Show previews of all images generated in a batch as a grid": "Show previews of all images generated in a batch as a grid",
|
||||
"Show grid in results for web": "WebUI上でグリッド表示",
|
||||
"Do not show any images in results for web": "WebUI上で一切画像を表示しない",
|
||||
"Add model hash to generation information": "モデルのハッシュ値を生成情報に追加",
|
||||
"Add model name to generation information": "モデルの名称を生成情報に追加",
|
||||
"When reading generation parameters from text into UI (from PNG info or pasted text), do not change the selected model/checkpoint.": "テキストからUIに生成パラメータを読み込む場合(PNG情報または貼り付けられたテキストから)、選択されたモデル/チェックポイントは変更しない。",
|
||||
"Font for image grids that have text": "画像グリッド内のテキストフォント",
|
||||
"Enable full page image viewer": "フルページの画像ビューワーを有効化",
|
||||
"Show images zoomed in by default in full page image viewer": "フルページ画像ビューアでデフォルトで画像を拡大して表示する",
|
||||
"Show generation progress in window title.": "ウィンドウのタイトルで生成の進捗を表示",
|
||||
"Quicksettings list": "Quicksettings list",
|
||||
"Quicksettings list": "クイック設定",
|
||||
"Localization (requires restart)": "言語 (プログラムの再起動が必要)",
|
||||
"ja_JP": "ja_JP",
|
||||
"ru_RU": "ru_RU",
|
||||
"Sampler parameters": "サンプラー parameters",
|
||||
"Hide samplers in user interface (requires restart)": "使わないサンプリングアルゴリズムを隠す (再起動が必要)",
|
||||
"eta (noise multiplier) for DDIM": "DDIMで用いるeta (noise multiplier)",
|
||||
|
@ -350,64 +407,76 @@
|
|||
"sigma tmin": "sigma tmin",
|
||||
"sigma noise": "sigma noise",
|
||||
"Eta noise seed delta": "Eta noise seed delta",
|
||||
"Images Browser": "画像閲覧",
|
||||
"Preload images at startup": "起動時に画像を読み込んでおく",
|
||||
"Number of pictures displayed on each page": "各ページに表示される画像の枚数",
|
||||
"Minimum number of pages per load": "Minimum number of pages per load",
|
||||
"Number of grids in each row": "Number of grids in each row",
|
||||
"Request browser notifications": "ブラウザ通知の許可を要求する",
|
||||
"Download localization template": "ローカライゼーション用のテンプレートをダウンロードする",
|
||||
"Reload custom script bodies (No ui updates, No restart)": "カスタムスクリプトを再読み込み (UIは変更されず、再起動もしません。)",
|
||||
"Restart Gradio and Refresh components (Custom Scripts, ui.py, js and css only)": "Gradioを再起動してコンポーネントをリフレッシュする (Custom Scripts, ui.py, js, cssのみ影響を受ける)",
|
||||
"Audio": "音声",
|
||||
"Prompt (press Ctrl+Enter or Alt+Enter to generate)": "プロンプト (Ctrl+Enter か Alt+Enter を押して生成)",
|
||||
"Negative prompt (press Ctrl+Enter or Alt+Enter to generate)": "ネガティブ プロンプト (Ctrl+Enter か Alt+Enter を押して生成)",
|
||||
"Add a random artist to the prompt.": "芸術家などの名称をプロンプトに追加",
|
||||
"Read generation parameters from prompt or last generation if prompt is empty into user interface.": "Read generation parameters from prompt or last generation if prompt is empty into user interface.",
|
||||
"Read generation parameters from prompt or last generation if prompt is empty into user interface.": "プロンプトから生成パラメータを読み込むか、プロンプトが空の場合は最後の生成パラメータをユーザーインターフェースに読み込む。",
|
||||
"Save style": "スタイルを保存する",
|
||||
"Apply selected styles to current prompt": "現在のプロンプトに選択したスタイルを適用する",
|
||||
"Stop processing current image and continue processing.": "現在の処理を中断し、その後の処理は続ける",
|
||||
"Stop processing images and return any results accumulated so far.": "処理を中断し、それまでに出来た結果を表示する",
|
||||
"Style to apply; styles have components for both positive and negative prompts and apply to both": "Style to apply; styles have components for both positive and negative prompts and apply to both",
|
||||
"Style to apply; styles have components for both positive and negative prompts and apply to both": "適用するスタイル。スタイルは、ポジティブプロンプトとネガティブプロンプトの両方のコンポーネントを持ち、両方に適用される。",
|
||||
"Do not do anything special": "特別なことをなにもしない",
|
||||
"Which algorithm to use to produce the image": "どのアルゴリズムを使って生成するか",
|
||||
"Euler Ancestral - very creative, each can get a completely different picture depending on step count, setting steps to higher than 30-40 does not help": "Euler Ancestral - 非常に独創的で、ステップ数によって全く異なる画像が得られる、ステップ数を30~40より高く設定しても効果がない。",
|
||||
"Denoising Diffusion Implicit Models - best at inpainting": "Denoising Diffusion Implicit Models - 描き直しには最適",
|
||||
"Produce an image that can be tiled.": "Produce an image that can be tiled.",
|
||||
"Produce an image that can be tiled.": "タイルとして扱える画像を生成する",
|
||||
"Use a two step process to partially create an image at smaller resolution, upscale, and then improve details in it without changing composition": "2ステップで、まず部分的に小さい解像度で画像を作成し、その後アップスケールすることで、構図を変えずにディテールが改善されます。",
|
||||
"Determines how little respect the algorithm should have for image's content. At 0, nothing will change, and at 1 you'll get an unrelated image. With values below 1.0, processing will take less steps than the Sampling Steps slider specifies.": "Determines how little respect the algorithm should have for image's content. At 0, nothing will change, and at 1 you'll get an unrelated image. With values below 1.0, processing will take less steps than the Sampling Steps slider specifies.",
|
||||
"Determines how little respect the algorithm should have for image's content. At 0, nothing will change, and at 1 you'll get an unrelated image. With values below 1.0, processing will take less steps than the Sampling Steps slider specifies.": "アルゴリズムが画像の内容をどの程度参考にするかを決定します。0 にすると何も変わりませんし、 1 にすると全く無関係な画像になります。1.0未満の値ではスライダーで指定したサンプリングステップ数よりも少ないステップ数で処理が行われます。",
|
||||
"How many batches of images to create": "バッチ処理を何回行うか",
|
||||
"How many image to create in a single batch": "1回のバッチ処理で何枚の画像を生成するか",
|
||||
"Classifier Free Guidance Scale - how strongly the image should conform to prompt - lower values produce more creative results": "Classifier Free Guidance Scale - how strongly the image should conform to prompt - lower values produce more creative results",
|
||||
"A value that determines the output of random number generator - if you create an image with same parameters and seed as another image, you'll get the same result": "A value that determines the output of random number generator - if you create an image with same parameters and seed as another image, you'll get the same result",
|
||||
"Set seed to -1, which will cause a new random number to be used every time": "シード値を -1 に設定するとランダムに生成します。",
|
||||
"Classifier Free Guidance Scale - how strongly the image should conform to prompt - lower values produce more creative results": "Classifier Free Guidance Scale - 生成する画像がどの程度プロンプトに沿ったものになるか。 - 低い値の方がよりクリエイティブな結果を生み出します。",
|
||||
"A value that determines the output of random number generator - if you create an image with same parameters and seed as another image, you'll get the same result": "乱数発生器の出力を決定する値。同じパラメータとシードで画像を作成すれば、同じ結果が得られます。",
|
||||
"Set seed to -1, which will cause a new random number to be used every time": "シード値を-1に設定。つまり、毎回ランダムに生成します。",
|
||||
"Reuse seed from last generation, mostly useful if it was randomed": "前回生成時のシード値を読み出す。(ランダム生成時に便利)",
|
||||
"Seed of a different picture to be mixed into the generation.": "Seed of a different picture to be mixed into the generation.",
|
||||
"How strong of a variation to produce. At 0, there will be no effect. At 1, you will get the complete picture with variation seed (except for ancestral samplers, where you will just get something).": "How strong of a variation to produce. At 0, there will be no effect. At 1, you will get the complete picture with variation seed (except for ancestral samplers, where you will just get something).",
|
||||
"Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution": "Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution",
|
||||
"Seed of a different picture to be mixed into the generation.": "生成時に混合されることになる画像のシード値",
|
||||
"How strong of a variation to produce. At 0, there will be no effect. At 1, you will get the complete picture with variation seed (except for ancestral samplers, where you will just get something).": "Variationの強度。0の場合、何の効果もありません。1では、バリエーションシードで完全な画像を得ることができます(Ancestalなアルゴリズム以外では、何か(?)を得るだけです)。",
|
||||
"Make an attempt to produce a picture similar to what would have been produced with same seed at specified resolution": "同じシードで指定された解像度の似た画像を生成することを試みる。",
|
||||
"This text is used to rotate the feature space of the imgs embs": "This text is used to rotate the feature space of the imgs embs",
|
||||
"Separate values for X axis using commas.": "X軸に用いる値をカンマ(,)で区切って入力してください。",
|
||||
"Separate values for Y axis using commas.": "Y軸に用いる値をカンマ(,)で区切って入力してください。",
|
||||
"Write image to a directory (default - log/images) and generation parameters into csv file.": "Write image to a directory (default - log/images) and generation parameters into csv file.",
|
||||
"Write image to a directory (default - log/images) and generation parameters into csv file.": "画像はフォルダ(デフォルト:log/images)に、生成パラメータはcsvファイルに書き出します。",
|
||||
"Open images output directory": "画像の出力フォルダを開く",
|
||||
"How much to blur the mask before processing, in pixels.": "How much to blur the mask before processing, in pixels.",
|
||||
"What to put inside the masked area before processing it with Stable Diffusion.": "What to put inside the masked area before processing it with Stable Diffusion.",
|
||||
"fill it with colors of the image": "fill it with colors of the image",
|
||||
"keep whatever was there originally": "keep whatever was there originally",
|
||||
"fill it with latent space noise": "fill it with latent space noise",
|
||||
"fill it with latent space zeroes": "fill it with latent space zeroes",
|
||||
"Upscale masked region to target resolution, do inpainting, downscale back and paste into original image": "Upscale masked region to target resolution, do inpainting, downscale back and paste into original image",
|
||||
"Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.": "Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.",
|
||||
"Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.": "Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.",
|
||||
"Resize the image so that entirety of image is inside target resolution. Fill empty space with image's colors.": "Resize the image so that entirety of image is inside target resolution. Fill empty space with image's colors.",
|
||||
"How many times to repeat processing an image and using it as input for the next iteration": "How many times to repeat processing an image and using it as input for the next iteration",
|
||||
"In loopback mode, on each loop the denoising strength is multiplied by this value. <1 means decreasing variety so your sequence will converge on a fixed picture. >1 means increasing variety so your sequence will become more and more chaotic.": "In loopback mode, on each loop the denoising strength is multiplied by this value. <1 means decreasing variety so your sequence will converge on a fixed picture. >1 means increasing variety so your sequence will become more and more chaotic.",
|
||||
"For SD upscale, how much overlap in pixels should there be between tiles. Tiles overlap so that when they are merged back into one picture, there is no clearly visible seam.": "For SD upscale, how much overlap in pixels should there be between tiles. Tiles overlap so that when they are merged back into one picture, there is no clearly visible seam.",
|
||||
"A directory on the same machine where the server is running.": "A directory on the same machine where the server is running.",
|
||||
"How much to blur the mask before processing, in pixels.": "処理前にどれだけマスクをぼかすか。px単位。",
|
||||
"What to put inside the masked area before processing it with Stable Diffusion.": "Stable Diffusionにわたす前にマスクされたエリアに何を書き込むか",
|
||||
"fill it with colors of the image": "元画像の色で埋める",
|
||||
"keep whatever was there originally": "もともとあったものをそのままにする",
|
||||
"fill it with latent space noise": "潜在空間(latent space)におけるノイズで埋める",
|
||||
"fill it with latent space zeroes": "潜在空間(latent space)における0で埋める",
|
||||
"Upscale masked region to target resolution, do inpainting, downscale back and paste into original image": "マスクされた領域をターゲット解像度にアップスケールし、インペイントを行い、元の解像度にダウンスケールして元の画像に貼り付けます。",
|
||||
"Resize image to target resolution. Unless height and width match, you will get incorrect aspect ratio.": "画像をターゲット解像度にリサイズします。高さと幅が一致しない場合、アスペクト比が正しくなくなります。",
|
||||
"Resize the image so that entirety of target resolution is filled with the image. Crop parts that stick out.": "対象の解像度に画像をフィットさせます。はみ出た部分は切り取られます。",
|
||||
"Resize the image so that entirety of image is inside target resolution. Fill empty space with image's colors.": "画像をリサイズして、ターゲット解像度の中に収まるようにします。空白部分は画像の色で埋めます。",
|
||||
"How many times to repeat processing an image and using it as input for the next iteration": "何回画像処理を繰り返し、次の反復処理の入力として使用するか",
|
||||
"In loopback mode, on each loop the denoising strength is multiplied by this value. <1 means decreasing variety so your sequence will converge on a fixed picture. >1 means increasing variety so your sequence will become more and more chaotic.": "ループバックモードにおいて、各ループでのノイズ除去の強度はこの値によって乗算されます。1より小さければ変化が小さくなっていって、生成される画像は1つの画像に収束します。1より大きいとどんどん変化が大きくなるので、生成される画像はよりカオスになります。",
|
||||
"For SD upscale, how much overlap in pixels should there be between tiles. Tiles overlap so that when they are merged back into one picture, there is no clearly visible seam.": "SDアップスケールで、どれだけタイル間の重なりを確保するか(px単位)。タイルの一部を重複させることで、1枚の画像にした時明らかな継ぎ目がなくなります。",
|
||||
"A directory on the same machine where the server is running.": "サーバーが稼働しているのと同じマシンのあるフォルダ",
|
||||
"Leave blank to save images to the default path.": "空欄でデフォルトの場所へ画像を保存",
|
||||
"Result = A * (1 - M) + B * M": "結果モデル = A * (1 - M) + B * M",
|
||||
"Result = A + (B - C) * M": "結果モデル = A + (B - C) * M",
|
||||
"Path to directory with input images": "Path to directory with input images",
|
||||
"Path to directory where to write outputs": "Path to directory where to write outputs",
|
||||
"Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.": "Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.",
|
||||
"Input images directory": "Input images directory",
|
||||
"Result = A * (1 - M) + B * M": "出力されるモデル = A * (1 - M) + B * M",
|
||||
"Result = A + (B - C) * M": "出力されるモデル = A + (B - C) * M",
|
||||
"1st and last digit must be 1. ex:'1, 2, 1'": "最初と最後の数字は1でなければなりません。 例:'1, 2, 1'",
|
||||
"Path to directory with input images": "入力ファイルのあるフォルダの場所",
|
||||
"Path to directory where to write outputs": "出力を書き込むフォルダの場所",
|
||||
"Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.": "以下のタグを用いてファイル名パターンを決められます: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; 空白でデフォルト設定。",
|
||||
"If this option is enabled, watermark will not be added to created images. Warning: if you do not add watermark, you may be behaving in an unethical manner.": "このオプションを有効にすると、作成された画像にウォーターマークが追加されなくなります。警告:ウォーターマークを追加しない場合、非倫理的な行動とみなされる場合があります。",
|
||||
"Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.": "Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.",
|
||||
"Restore low quality faces using GFPGAN neural network": "GFPGANを用いて低クオリティーの画像を修復",
|
||||
"This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is.": "This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is.",
|
||||
"This string will be used to join split words into a single line if the option above is enabled.": "This string will be used to join split words into a single line if the option above is enabled.",
|
||||
"List of setting names, separated by commas, for settings that should go to the quick access bar at the top, rather than the usual setting tab. See modules/shared.py for setting names. Requires restarting to apply.": "List of setting names, separated by commas, for settings that should go to the quick access bar at the top, rather than the usual setting tab. See modules/shared.py for setting names. Requires restarting to apply.",
|
||||
"If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing.": "If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing."
|
||||
"Use following tags to define how subdirectories for images and grids are chosen: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; leave empty for default.": "以下のタグを用いてサブフォルダのフォルダ名パターンを決められます: [steps], [cfg], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [prompt_words], [date], [datetime], [job_timestamp]; 空白でデフォルト設定",
|
||||
"Restore low quality faces using GFPGAN neural network": "GFPGANを用いて低クオリティーな顔画像を修復",
|
||||
"This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is.": "この正規表現を使ってファイル名から単語を抽出し、以下のオプションで結合して学習用のラベルテキストにします。ファイル名のテキストをそのまま使用する場合は、空白にしてください。",
|
||||
"This string will be used to join split words into a single line if the option above is enabled.": "この文字列は、上記のオプションが有効な場合に、分割された単語を1行に結合するために使用されます。",
|
||||
"List of setting names, separated by commas, for settings that should go to the quick access bar at the top, rather than the usual setting tab. See modules/shared.py for setting names. Requires restarting to apply.": "上部のクイックアクセスバーに置く設定の設定名をカンマで区切って入力。設定名については modules/shared.py を参照してください。適用するには再起動が必要です。",
|
||||
"If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing.": "この値が0以外の場合、シードに追加され、Etaでサンプラーを使用する際のノイズ用の乱数生成器を初期化するのに使用されます。これを利用して、さらにバリエーション豊かな画像を作成したり、他のソフトの画像に合わせたりすることができます。",
|
||||
"NAIConvert": "NAIから変換",
|
||||
"History": "履歴",
|
||||
"Enable Autocomplete": "自動補完を有効化"
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
from modules.api.processing import StableDiffusionTxt2ImgProcessingAPI, StableDiffusionImg2ImgProcessingAPI
|
||||
from modules.api.models import StableDiffusionTxt2ImgProcessingAPI, StableDiffusionImg2ImgProcessingAPI
|
||||
from modules.processing import StableDiffusionProcessingTxt2Img, StableDiffusionProcessingImg2Img, process_images
|
||||
from modules.sd_samplers import all_samplers
|
||||
from modules.extras import run_pnginfo
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
import datetime
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
import pytz
|
||||
import io
|
||||
import math
|
||||
import os
|
||||
|
@ -273,10 +277,15 @@ invalid_filename_chars = '<>:"/\\|?*\n'
|
|||
invalid_filename_prefix = ' '
|
||||
invalid_filename_postfix = ' .'
|
||||
re_nonletters = re.compile(r'[\s' + string.punctuation + ']+')
|
||||
re_pattern = re.compile(r"([^\[\]]+|\[([^]]+)]|[\[\]]*)")
|
||||
re_pattern_arg = re.compile(r"(.*)<([^>]*)>$")
|
||||
max_filename_part_length = 128
|
||||
|
||||
|
||||
def sanitize_filename_part(text, replace_spaces=True):
|
||||
if text is None:
|
||||
return None
|
||||
|
||||
if replace_spaces:
|
||||
text = text.replace(' ', '_')
|
||||
|
||||
|
@ -286,49 +295,106 @@ def sanitize_filename_part(text, replace_spaces=True):
|
|||
return text
|
||||
|
||||
|
||||
def apply_filename_pattern(x, p, seed, prompt):
|
||||
max_prompt_words = opts.directories_max_prompt_words
|
||||
class FilenameGenerator:
|
||||
replacements = {
|
||||
'seed': lambda self: self.seed if self.seed is not None else '',
|
||||
'steps': lambda self: self.p and self.p.steps,
|
||||
'cfg': lambda self: self.p and self.p.cfg_scale,
|
||||
'width': lambda self: self.p and self.p.width,
|
||||
'height': lambda self: self.p and self.p.height,
|
||||
'styles': lambda self: self.p and sanitize_filename_part(", ".join([style for style in self.p.styles if not style == "None"]) or "None", replace_spaces=False),
|
||||
'sampler': lambda self: self.p and sanitize_filename_part(sd_samplers.samplers[self.p.sampler_index].name, replace_spaces=False),
|
||||
'model_hash': lambda self: getattr(self.p, "sd_model_hash", shared.sd_model.sd_model_hash),
|
||||
'date': lambda self: datetime.datetime.now().strftime('%Y-%m-%d'),
|
||||
'datetime': lambda self, *args: self.datetime(*args), # accepts formats: [datetime], [datetime<Format>], [datetime<Format><Time Zone>]
|
||||
'job_timestamp': lambda self: getattr(self.p, "job_timestamp", shared.state.job_timestamp),
|
||||
'prompt': lambda self: sanitize_filename_part(self.prompt),
|
||||
'prompt_no_styles': lambda self: self.prompt_no_style(),
|
||||
'prompt_spaces': lambda self: sanitize_filename_part(self.prompt, replace_spaces=False),
|
||||
'prompt_words': lambda self: self.prompt_words(),
|
||||
}
|
||||
default_time_format = '%Y%m%d%H%M%S'
|
||||
|
||||
if seed is not None:
|
||||
x = x.replace("[seed]", str(seed))
|
||||
def __init__(self, p, seed, prompt):
|
||||
self.p = p
|
||||
self.seed = seed
|
||||
self.prompt = prompt
|
||||
|
||||
if p is not None:
|
||||
x = x.replace("[steps]", str(p.steps))
|
||||
x = x.replace("[cfg]", str(p.cfg_scale))
|
||||
x = x.replace("[width]", str(p.width))
|
||||
x = x.replace("[height]", str(p.height))
|
||||
x = x.replace("[styles]", sanitize_filename_part(", ".join([x for x in p.styles if not x == "None"]) or "None", replace_spaces=False))
|
||||
x = x.replace("[sampler]", sanitize_filename_part(sd_samplers.samplers[p.sampler_index].name, replace_spaces=False))
|
||||
def prompt_no_style(self):
|
||||
if self.p is None or self.prompt is None:
|
||||
return None
|
||||
|
||||
x = x.replace("[model_hash]", getattr(p, "sd_model_hash", shared.sd_model.sd_model_hash))
|
||||
x = x.replace("[date]", datetime.date.today().isoformat())
|
||||
x = x.replace("[datetime]", datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
|
||||
x = x.replace("[job_timestamp]", getattr(p, "job_timestamp", shared.state.job_timestamp))
|
||||
prompt_no_style = self.prompt
|
||||
for style in shared.prompt_styles.get_style_prompts(self.p.styles):
|
||||
if len(style) > 0:
|
||||
for part in style.split("{prompt}"):
|
||||
prompt_no_style = prompt_no_style.replace(part, "").replace(", ,", ",").strip().strip(',')
|
||||
|
||||
# Apply [prompt] at last. Because it may contain any replacement word.^M
|
||||
if prompt is not None:
|
||||
x = x.replace("[prompt]", sanitize_filename_part(prompt))
|
||||
if "[prompt_no_styles]" in x:
|
||||
prompt_no_style = prompt
|
||||
for style in shared.prompt_styles.get_style_prompts(p.styles):
|
||||
if len(style) > 0:
|
||||
style_parts = [y for y in style.split("{prompt}")]
|
||||
for part in style_parts:
|
||||
prompt_no_style = prompt_no_style.replace(part, "").replace(", ,", ",").strip().strip(',')
|
||||
prompt_no_style = prompt_no_style.replace(style, "").strip().strip(',').strip()
|
||||
x = x.replace("[prompt_no_styles]", sanitize_filename_part(prompt_no_style, replace_spaces=False))
|
||||
prompt_no_style = prompt_no_style.replace(style, "").strip().strip(',').strip()
|
||||
|
||||
x = x.replace("[prompt_spaces]", sanitize_filename_part(prompt, replace_spaces=False))
|
||||
if "[prompt_words]" in x:
|
||||
words = [x for x in re_nonletters.split(prompt or "") if len(x) > 0]
|
||||
if len(words) == 0:
|
||||
words = ["empty"]
|
||||
x = x.replace("[prompt_words]", sanitize_filename_part(" ".join(words[0:max_prompt_words]), replace_spaces=False))
|
||||
return sanitize_filename_part(prompt_no_style, replace_spaces=False)
|
||||
|
||||
if cmd_opts.hide_ui_dir_config:
|
||||
x = re.sub(r'^[\\/]+|\.{2,}[\\/]+|[\\/]+\.{2,}', '', x)
|
||||
def prompt_words(self):
|
||||
words = [x for x in re_nonletters.split(self.prompt or "") if len(x) > 0]
|
||||
if len(words) == 0:
|
||||
words = ["empty"]
|
||||
return sanitize_filename_part(" ".join(words[0:opts.directories_max_prompt_words]), replace_spaces=False)
|
||||
|
||||
return x
|
||||
def datetime(self, *args):
|
||||
time_datetime = datetime.datetime.now()
|
||||
|
||||
time_format = args[0] if len(args) > 0 else self.default_time_format
|
||||
try:
|
||||
time_zone = pytz.timezone(args[1]) if len(args) > 1 else None
|
||||
except pytz.exceptions.UnknownTimeZoneError as _:
|
||||
time_zone = None
|
||||
|
||||
time_zone_time = time_datetime.astimezone(time_zone)
|
||||
try:
|
||||
formatted_time = time_zone_time.strftime(time_format)
|
||||
except (ValueError, TypeError) as _:
|
||||
formatted_time = time_zone_time.strftime(self.default_time_format)
|
||||
|
||||
return sanitize_filename_part(formatted_time, replace_spaces=False)
|
||||
|
||||
def apply(self, x):
|
||||
res = ''
|
||||
|
||||
for m in re_pattern.finditer(x):
|
||||
text, pattern = m.groups()
|
||||
|
||||
if pattern is None:
|
||||
res += text
|
||||
continue
|
||||
|
||||
pattern_args = []
|
||||
while True:
|
||||
m = re_pattern_arg.match(pattern)
|
||||
if m is None:
|
||||
break
|
||||
|
||||
pattern, arg = m.groups()
|
||||
pattern_args.insert(0, arg)
|
||||
|
||||
fun = self.replacements.get(pattern.lower())
|
||||
if fun is not None:
|
||||
try:
|
||||
replacement = fun(self, *pattern_args)
|
||||
except Exception:
|
||||
replacement = None
|
||||
print(f"Error adding [{pattern}] to filename", file=sys.stderr)
|
||||
print(traceback.format_exc(), file=sys.stderr)
|
||||
|
||||
if replacement is None:
|
||||
res += f'[{pattern}]'
|
||||
else:
|
||||
res += str(replacement)
|
||||
|
||||
continue
|
||||
|
||||
res += f'[{pattern}]'
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def get_next_sequence_number(path, basename):
|
||||
|
@ -354,7 +420,7 @@ def get_next_sequence_number(path, basename):
|
|||
|
||||
|
||||
def save_image(image, path, basename, seed=None, prompt=None, extension='png', info=None, short_filename=False, no_prompt=False, grid=False, pnginfo_section_name='parameters', p=None, existing_info=None, forced_filename=None, suffix="", save_to_dirs=None):
|
||||
'''Save an image.
|
||||
"""Save an image.
|
||||
|
||||
Args:
|
||||
image (`PIL.Image`):
|
||||
|
@ -385,18 +451,8 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i
|
|||
The full path of the saved imaged.
|
||||
txt_fullfn (`str` or None):
|
||||
If a text file is saved for this image, this will be its full path. Otherwise None.
|
||||
'''
|
||||
if short_filename or prompt is None or seed is None:
|
||||
file_decoration = ""
|
||||
elif opts.save_to_dirs:
|
||||
file_decoration = opts.samples_filename_pattern or "[seed]"
|
||||
else:
|
||||
file_decoration = opts.samples_filename_pattern or "[seed]-[prompt_spaces]"
|
||||
|
||||
if file_decoration != "":
|
||||
file_decoration = "-" + file_decoration.lower()
|
||||
|
||||
file_decoration = apply_filename_pattern(file_decoration, p, seed, prompt) + suffix
|
||||
"""
|
||||
namegen = FilenameGenerator(p, seed, prompt)
|
||||
|
||||
if extension == 'png' and opts.enable_pnginfo and info is not None:
|
||||
pnginfo = PngImagePlugin.PngInfo()
|
||||
|
@ -413,21 +469,37 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i
|
|||
save_to_dirs = (grid and opts.grid_save_to_dirs) or (not grid and opts.save_to_dirs and not no_prompt)
|
||||
|
||||
if save_to_dirs:
|
||||
dirname = apply_filename_pattern(opts.directories_filename_pattern or "[prompt_words]", p, seed, prompt).strip('\\ /')
|
||||
dirname = namegen.apply(opts.directories_filename_pattern or "[prompt_words]").lstrip(' ').rstrip('\\ /')
|
||||
path = os.path.join(path, dirname)
|
||||
|
||||
os.makedirs(path, exist_ok=True)
|
||||
|
||||
if forced_filename is None:
|
||||
basecount = get_next_sequence_number(path, basename)
|
||||
fullfn = "a.png"
|
||||
fullfn_without_extension = "a"
|
||||
for i in range(500):
|
||||
fn = f"{basecount + i:05}" if basename == '' else f"{basename}-{basecount + i:04}"
|
||||
fullfn = os.path.join(path, f"{fn}{file_decoration}.{extension}")
|
||||
fullfn_without_extension = os.path.join(path, f"{fn}{file_decoration}")
|
||||
if not os.path.exists(fullfn):
|
||||
break
|
||||
if short_filename or seed is None:
|
||||
file_decoration = ""
|
||||
else:
|
||||
file_decoration = opts.samples_filename_pattern or "[seed]"
|
||||
|
||||
add_number = opts.save_images_add_number or file_decoration == ''
|
||||
|
||||
if file_decoration != "" and add_number:
|
||||
file_decoration = "-" + file_decoration
|
||||
|
||||
file_decoration = namegen.apply(file_decoration) + suffix
|
||||
|
||||
if add_number:
|
||||
basecount = get_next_sequence_number(path, basename)
|
||||
fullfn = None
|
||||
fullfn_without_extension = None
|
||||
for i in range(500):
|
||||
fn = f"{basecount + i:05}" if basename == '' else f"{basename}-{basecount + i:04}"
|
||||
fullfn = os.path.join(path, f"{fn}{file_decoration}.{extension}")
|
||||
fullfn_without_extension = os.path.join(path, f"{fn}{file_decoration}")
|
||||
if not os.path.exists(fullfn):
|
||||
break
|
||||
else:
|
||||
fullfn = os.path.join(path, f"{file_decoration}.{extension}")
|
||||
fullfn_without_extension = os.path.join(path, file_decoration)
|
||||
else:
|
||||
fullfn = os.path.join(path, f"{forced_filename}.{extension}")
|
||||
fullfn_without_extension = os.path.join(path, forced_filename)
|
||||
|
|
|
@ -1,424 +0,0 @@
|
|||
import os
|
||||
import shutil
|
||||
import time
|
||||
import hashlib
|
||||
import gradio
|
||||
system_bak_path = "webui_log_and_bak"
|
||||
custom_tab_name = "custom fold"
|
||||
faverate_tab_name = "favorites"
|
||||
tabs_list = ["txt2img", "img2img", "extras", faverate_tab_name]
|
||||
def is_valid_date(date):
|
||||
try:
|
||||
time.strptime(date, "%Y%m%d")
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
def reduplicative_file_move(src, dst):
|
||||
def same_name_file(basename, path):
|
||||
name, ext = os.path.splitext(basename)
|
||||
f_list = os.listdir(path)
|
||||
max_num = 0
|
||||
for f in f_list:
|
||||
if len(f) <= len(basename):
|
||||
continue
|
||||
f_ext = f[-len(ext):] if len(ext) > 0 else ""
|
||||
if f[:len(name)] == name and f_ext == ext:
|
||||
if f[len(name)] == "(" and f[-len(ext)-1] == ")":
|
||||
number = f[len(name)+1:-len(ext)-1]
|
||||
if number.isdigit():
|
||||
if int(number) > max_num:
|
||||
max_num = int(number)
|
||||
return f"{name}({max_num + 1}){ext}"
|
||||
name = os.path.basename(src)
|
||||
save_name = os.path.join(dst, name)
|
||||
if not os.path.exists(save_name):
|
||||
shutil.move(src, dst)
|
||||
else:
|
||||
name = same_name_file(name, dst)
|
||||
shutil.move(src, os.path.join(dst, name))
|
||||
|
||||
def traverse_all_files(curr_path, image_list, all_type=False):
|
||||
try:
|
||||
f_list = os.listdir(curr_path)
|
||||
except:
|
||||
if all_type or (curr_path[-10:].rfind(".") > 0 and curr_path[-4:] != ".txt" and curr_path[-4:] != ".csv"):
|
||||
image_list.append(curr_path)
|
||||
return image_list
|
||||
for file in f_list:
|
||||
file = os.path.join(curr_path, file)
|
||||
if (not all_type) and (file[-4:] == ".txt" or file[-4:] == ".csv"):
|
||||
pass
|
||||
elif os.path.isfile(file) and file[-10:].rfind(".") > 0:
|
||||
image_list.append(file)
|
||||
else:
|
||||
image_list = traverse_all_files(file, image_list)
|
||||
return image_list
|
||||
|
||||
def auto_sorting(dir_name):
|
||||
bak_path = os.path.join(dir_name, system_bak_path)
|
||||
if not os.path.exists(bak_path):
|
||||
os.mkdir(bak_path)
|
||||
log_file = None
|
||||
files_list = []
|
||||
f_list = os.listdir(dir_name)
|
||||
for file in f_list:
|
||||
if file == system_bak_path:
|
||||
continue
|
||||
file_path = os.path.join(dir_name, file)
|
||||
if not is_valid_date(file):
|
||||
if file[-10:].rfind(".") > 0:
|
||||
files_list.append(file_path)
|
||||
else:
|
||||
files_list = traverse_all_files(file_path, files_list, all_type=True)
|
||||
|
||||
for file in files_list:
|
||||
date_str = time.strftime("%Y%m%d",time.localtime(os.path.getmtime(file)))
|
||||
file_path = os.path.dirname(file)
|
||||
hash_path = hashlib.md5(file_path.encode()).hexdigest()
|
||||
path = os.path.join(dir_name, date_str, hash_path)
|
||||
if not os.path.exists(path):
|
||||
os.makedirs(path)
|
||||
if log_file is None:
|
||||
log_file = open(os.path.join(bak_path,"path_mapping.csv"),"a")
|
||||
log_file.write(f"{hash_path},{file_path}\n")
|
||||
reduplicative_file_move(file, path)
|
||||
|
||||
date_list = []
|
||||
f_list = os.listdir(dir_name)
|
||||
for f in f_list:
|
||||
if is_valid_date(f):
|
||||
date_list.append(f)
|
||||
elif f == system_bak_path:
|
||||
continue
|
||||
else:
|
||||
try:
|
||||
reduplicative_file_move(os.path.join(dir_name, f), bak_path)
|
||||
except:
|
||||
pass
|
||||
|
||||
today = time.strftime("%Y%m%d",time.localtime(time.time()))
|
||||
if today not in date_list:
|
||||
date_list.append(today)
|
||||
return sorted(date_list, reverse=True)
|
||||
|
||||
def archive_images(dir_name, date_to):
|
||||
filenames = []
|
||||
batch_size =int(opts.images_history_num_per_page * opts.images_history_pages_num)
|
||||
if batch_size <= 0:
|
||||
batch_size = opts.images_history_num_per_page * 6
|
||||
today = time.strftime("%Y%m%d",time.localtime(time.time()))
|
||||
date_to = today if date_to is None or date_to == "" else date_to
|
||||
date_to_bak = date_to
|
||||
if False: #opts.images_history_reconstruct_directory:
|
||||
date_list = auto_sorting(dir_name)
|
||||
for date in date_list:
|
||||
if date <= date_to:
|
||||
path = os.path.join(dir_name, date)
|
||||
if date == today and not os.path.exists(path):
|
||||
continue
|
||||
filenames = traverse_all_files(path, filenames)
|
||||
if len(filenames) > batch_size:
|
||||
break
|
||||
filenames = sorted(filenames, key=lambda file: -os.path.getmtime(file))
|
||||
else:
|
||||
filenames = traverse_all_files(dir_name, filenames)
|
||||
total_num = len(filenames)
|
||||
tmparray = [(os.path.getmtime(file), file) for file in filenames ]
|
||||
date_stamp = time.mktime(time.strptime(date_to, "%Y%m%d")) + 86400
|
||||
filenames = []
|
||||
date_list = {date_to:None}
|
||||
date = time.strftime("%Y%m%d",time.localtime(time.time()))
|
||||
for t, f in tmparray:
|
||||
date = time.strftime("%Y%m%d",time.localtime(t))
|
||||
date_list[date] = None
|
||||
if t <= date_stamp:
|
||||
filenames.append((t, f ,date))
|
||||
date_list = sorted(list(date_list.keys()), reverse=True)
|
||||
sort_array = sorted(filenames, key=lambda x:-x[0])
|
||||
if len(sort_array) > batch_size:
|
||||
date = sort_array[batch_size][2]
|
||||
filenames = [x[1] for x in sort_array]
|
||||
else:
|
||||
date = date_to if len(sort_array) == 0 else sort_array[-1][2]
|
||||
filenames = [x[1] for x in sort_array]
|
||||
filenames = [x[1] for x in sort_array if x[2]>= date]
|
||||
num = len(filenames)
|
||||
last_date_from = date_to_bak if num == 0 else time.strftime("%Y%m%d", time.localtime(time.mktime(time.strptime(date, "%Y%m%d")) - 1000))
|
||||
date = date[:4] + "/" + date[4:6] + "/" + date[6:8]
|
||||
date_to_bak = date_to_bak[:4] + "/" + date_to_bak[4:6] + "/" + date_to_bak[6:8]
|
||||
load_info = "<div style='color:#999' align='center'>"
|
||||
load_info += f"{total_num} images in this directory. Loaded {num} images during {date} - {date_to_bak}, divided into {int((num + 1) // opts.images_history_num_per_page + 1)} pages"
|
||||
load_info += "</div>"
|
||||
_, image_list, _, _, visible_num = get_recent_images(1, 0, filenames)
|
||||
return (
|
||||
date_to,
|
||||
load_info,
|
||||
filenames,
|
||||
1,
|
||||
image_list,
|
||||
"",
|
||||
"",
|
||||
visible_num,
|
||||
last_date_from,
|
||||
gradio.update(visible=total_num > num)
|
||||
)
|
||||
|
||||
def delete_image(delete_num, name, filenames, image_index, visible_num):
|
||||
if name == "":
|
||||
return filenames, delete_num
|
||||
else:
|
||||
delete_num = int(delete_num)
|
||||
visible_num = int(visible_num)
|
||||
image_index = int(image_index)
|
||||
index = list(filenames).index(name)
|
||||
i = 0
|
||||
new_file_list = []
|
||||
for name in filenames:
|
||||
if i >= index and i < index + delete_num:
|
||||
if os.path.exists(name):
|
||||
if visible_num == image_index:
|
||||
new_file_list.append(name)
|
||||
i += 1
|
||||
continue
|
||||
print(f"Delete file {name}")
|
||||
os.remove(name)
|
||||
visible_num -= 1
|
||||
txt_file = os.path.splitext(name)[0] + ".txt"
|
||||
if os.path.exists(txt_file):
|
||||
os.remove(txt_file)
|
||||
else:
|
||||
print(f"Not exists file {name}")
|
||||
else:
|
||||
new_file_list.append(name)
|
||||
i += 1
|
||||
return new_file_list, 1, visible_num
|
||||
|
||||
def save_image(file_name):
|
||||
if file_name is not None and os.path.exists(file_name):
|
||||
shutil.copy(file_name, opts.outdir_save)
|
||||
|
||||
def get_recent_images(page_index, step, filenames):
|
||||
page_index = int(page_index)
|
||||
num_of_imgs_per_page = int(opts.images_history_num_per_page)
|
||||
max_page_index = len(filenames) // num_of_imgs_per_page + 1
|
||||
page_index = max_page_index if page_index == -1 else page_index + step
|
||||
page_index = 1 if page_index < 1 else page_index
|
||||
page_index = max_page_index if page_index > max_page_index else page_index
|
||||
idx_frm = (page_index - 1) * num_of_imgs_per_page
|
||||
image_list = filenames[idx_frm:idx_frm + num_of_imgs_per_page]
|
||||
length = len(filenames)
|
||||
visible_num = num_of_imgs_per_page if idx_frm + num_of_imgs_per_page <= length else length % num_of_imgs_per_page
|
||||
visible_num = num_of_imgs_per_page if visible_num == 0 else visible_num
|
||||
return page_index, image_list, "", "", visible_num
|
||||
|
||||
def loac_batch_click(date_to):
|
||||
if date_to is None:
|
||||
return time.strftime("%Y%m%d",time.localtime(time.time())), []
|
||||
else:
|
||||
return None, []
|
||||
def forward_click(last_date_from, date_to_recorder):
|
||||
if len(date_to_recorder) == 0:
|
||||
return None, []
|
||||
if last_date_from == date_to_recorder[-1]:
|
||||
date_to_recorder = date_to_recorder[:-1]
|
||||
if len(date_to_recorder) == 0:
|
||||
return None, []
|
||||
return date_to_recorder[-1], date_to_recorder[:-1]
|
||||
|
||||
def backward_click(last_date_from, date_to_recorder):
|
||||
if last_date_from is None or last_date_from == "":
|
||||
return time.strftime("%Y%m%d",time.localtime(time.time())), []
|
||||
if len(date_to_recorder) == 0 or last_date_from != date_to_recorder[-1]:
|
||||
date_to_recorder.append(last_date_from)
|
||||
return last_date_from, date_to_recorder
|
||||
|
||||
|
||||
def first_page_click(page_index, filenames):
|
||||
return get_recent_images(1, 0, filenames)
|
||||
|
||||
def end_page_click(page_index, filenames):
|
||||
return get_recent_images(-1, 0, filenames)
|
||||
|
||||
def prev_page_click(page_index, filenames):
|
||||
return get_recent_images(page_index, -1, filenames)
|
||||
|
||||
def next_page_click(page_index, filenames):
|
||||
return get_recent_images(page_index, 1, filenames)
|
||||
|
||||
def page_index_change(page_index, filenames):
|
||||
return get_recent_images(page_index, 0, filenames)
|
||||
|
||||
def show_image_info(tabname_box, num, page_index, filenames):
|
||||
file = filenames[int(num) + int((page_index - 1) * int(opts.images_history_num_per_page))]
|
||||
tm = "<div style='color:#999' align='right'>" + time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(os.path.getmtime(file))) + "</div>"
|
||||
return file, tm, num, file
|
||||
|
||||
def enable_page_buttons():
|
||||
return gradio.update(visible=True)
|
||||
|
||||
def change_dir(img_dir, date_to):
|
||||
warning = None
|
||||
try:
|
||||
if os.path.exists(img_dir):
|
||||
try:
|
||||
f = os.listdir(img_dir)
|
||||
except:
|
||||
warning = f"'{img_dir} is not a directory"
|
||||
else:
|
||||
warning = "The directory is not exist"
|
||||
except:
|
||||
warning = "The format of the directory is incorrect"
|
||||
if warning is None:
|
||||
today = time.strftime("%Y%m%d",time.localtime(time.time()))
|
||||
return gradio.update(visible=False), gradio.update(visible=True), None, None if date_to != today else today, gradio.update(visible=True), gradio.update(visible=True)
|
||||
else:
|
||||
return gradio.update(visible=True), gradio.update(visible=False), warning, date_to, gradio.update(visible=False), gradio.update(visible=False)
|
||||
|
||||
def show_images_history(gr, opts, tabname, run_pnginfo, switch_dict):
|
||||
custom_dir = False
|
||||
if tabname == "txt2img":
|
||||
dir_name = opts.outdir_txt2img_samples
|
||||
elif tabname == "img2img":
|
||||
dir_name = opts.outdir_img2img_samples
|
||||
elif tabname == "extras":
|
||||
dir_name = opts.outdir_extras_samples
|
||||
elif tabname == faverate_tab_name:
|
||||
dir_name = opts.outdir_save
|
||||
else:
|
||||
custom_dir = True
|
||||
dir_name = None
|
||||
|
||||
if not custom_dir:
|
||||
d = dir_name.split("/")
|
||||
dir_name = d[0]
|
||||
for p in d[1:]:
|
||||
dir_name = os.path.join(dir_name, p)
|
||||
if not os.path.exists(dir_name):
|
||||
os.makedirs(dir_name)
|
||||
|
||||
with gr.Column() as page_panel:
|
||||
with gr.Row():
|
||||
with gr.Column(scale=1, visible=not custom_dir) as load_batch_box:
|
||||
load_batch = gr.Button('Load', elem_id=tabname + "_images_history_start", full_width=True)
|
||||
with gr.Column(scale=4):
|
||||
with gr.Row():
|
||||
img_path = gr.Textbox(dir_name, label="Images directory", placeholder="Input images directory", interactive=custom_dir)
|
||||
with gr.Row():
|
||||
with gr.Column(visible=False, scale=1) as batch_panel:
|
||||
with gr.Row():
|
||||
forward = gr.Button('Prev batch')
|
||||
backward = gr.Button('Next batch')
|
||||
with gr.Column(scale=3):
|
||||
load_info = gr.HTML(visible=not custom_dir)
|
||||
with gr.Row(visible=False) as warning:
|
||||
warning_box = gr.Textbox("Message", interactive=False)
|
||||
|
||||
with gr.Row(visible=not custom_dir, elem_id=tabname + "_images_history") as main_panel:
|
||||
with gr.Column(scale=2):
|
||||
with gr.Row(visible=True) as turn_page_buttons:
|
||||
#date_to = gr.Dropdown(label="Date to")
|
||||
first_page = gr.Button('First Page')
|
||||
prev_page = gr.Button('Prev Page')
|
||||
page_index = gr.Number(value=1, label="Page Index")
|
||||
next_page = gr.Button('Next Page')
|
||||
end_page = gr.Button('End Page')
|
||||
|
||||
history_gallery = gr.Gallery(show_label=False, elem_id=tabname + "_images_history_gallery").style(grid=opts.images_history_grid_num)
|
||||
with gr.Row():
|
||||
delete_num = gr.Number(value=1, interactive=True, label="number of images to delete consecutively next")
|
||||
delete = gr.Button('Delete', elem_id=tabname + "_images_history_del_button")
|
||||
|
||||
with gr.Column():
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
img_file_info = gr.Textbox(label="Generate Info", interactive=False, lines=6)
|
||||
gr.HTML("<hr>")
|
||||
img_file_name = gr.Textbox(value="", label="File Name", interactive=False)
|
||||
img_file_time= gr.HTML()
|
||||
with gr.Row():
|
||||
if tabname != faverate_tab_name:
|
||||
save_btn = gr.Button('Collect')
|
||||
pnginfo_send_to_txt2img = gr.Button('Send to txt2img')
|
||||
pnginfo_send_to_img2img = gr.Button('Send to img2img')
|
||||
|
||||
|
||||
# hiden items
|
||||
with gr.Row(visible=False):
|
||||
renew_page = gr.Button('Refresh page', elem_id=tabname + "_images_history_renew_page")
|
||||
batch_date_to = gr.Textbox(label="Date to")
|
||||
visible_img_num = gr.Number()
|
||||
date_to_recorder = gr.State([])
|
||||
last_date_from = gr.Textbox()
|
||||
tabname_box = gr.Textbox(tabname)
|
||||
image_index = gr.Textbox(value=-1)
|
||||
set_index = gr.Button('set_index', elem_id=tabname + "_images_history_set_index")
|
||||
filenames = gr.State()
|
||||
all_images_list = gr.State()
|
||||
hidden = gr.Image(type="pil")
|
||||
info1 = gr.Textbox()
|
||||
info2 = gr.Textbox()
|
||||
|
||||
img_path.submit(change_dir, inputs=[img_path, batch_date_to], outputs=[warning, main_panel, warning_box, batch_date_to, load_batch_box, load_info])
|
||||
|
||||
#change batch
|
||||
change_date_output = [batch_date_to, load_info, filenames, page_index, history_gallery, img_file_name, img_file_time, visible_img_num, last_date_from, batch_panel]
|
||||
|
||||
batch_date_to.change(archive_images, inputs=[img_path, batch_date_to], outputs=change_date_output)
|
||||
batch_date_to.change(enable_page_buttons, inputs=None, outputs=[turn_page_buttons])
|
||||
batch_date_to.change(fn=None, inputs=[tabname_box], outputs=None, _js="images_history_turnpage")
|
||||
|
||||
load_batch.click(loac_batch_click, inputs=[batch_date_to], outputs=[batch_date_to, date_to_recorder])
|
||||
forward.click(forward_click, inputs=[last_date_from, date_to_recorder], outputs=[batch_date_to, date_to_recorder])
|
||||
backward.click(backward_click, inputs=[last_date_from, date_to_recorder], outputs=[batch_date_to, date_to_recorder])
|
||||
|
||||
|
||||
#delete
|
||||
delete.click(delete_image, inputs=[delete_num, img_file_name, filenames, image_index, visible_img_num], outputs=[filenames, delete_num, visible_img_num])
|
||||
delete.click(fn=None, _js="images_history_delete", inputs=[delete_num, tabname_box, image_index], outputs=None)
|
||||
if tabname != faverate_tab_name:
|
||||
save_btn.click(save_image, inputs=[img_file_name], outputs=None)
|
||||
|
||||
#turn page
|
||||
gallery_inputs = [page_index, filenames]
|
||||
gallery_outputs = [page_index, history_gallery, img_file_name, img_file_time, visible_img_num]
|
||||
first_page.click(first_page_click, inputs=gallery_inputs, outputs=gallery_outputs)
|
||||
next_page.click(next_page_click, inputs=gallery_inputs, outputs=gallery_outputs)
|
||||
prev_page.click(prev_page_click, inputs=gallery_inputs, outputs=gallery_outputs)
|
||||
end_page.click(end_page_click, inputs=gallery_inputs, outputs=gallery_outputs)
|
||||
page_index.submit(page_index_change, inputs=gallery_inputs, outputs=gallery_outputs)
|
||||
renew_page.click(page_index_change, inputs=gallery_inputs, outputs=gallery_outputs)
|
||||
|
||||
first_page.click(fn=None, inputs=[tabname_box], outputs=None, _js="images_history_turnpage")
|
||||
next_page.click(fn=None, inputs=[tabname_box], outputs=None, _js="images_history_turnpage")
|
||||
prev_page.click(fn=None, inputs=[tabname_box], outputs=None, _js="images_history_turnpage")
|
||||
end_page.click(fn=None, inputs=[tabname_box], outputs=None, _js="images_history_turnpage")
|
||||
page_index.submit(fn=None, inputs=[tabname_box], outputs=None, _js="images_history_turnpage")
|
||||
renew_page.click(fn=None, inputs=[tabname_box], outputs=None, _js="images_history_turnpage")
|
||||
|
||||
# other funcitons
|
||||
set_index.click(show_image_info, _js="images_history_get_current_img", inputs=[tabname_box, image_index, page_index, filenames], outputs=[img_file_name, img_file_time, image_index, hidden])
|
||||
img_file_name.change(fn=None, _js="images_history_enable_del_buttons", inputs=None, outputs=None)
|
||||
hidden.change(fn=run_pnginfo, inputs=[hidden], outputs=[info1, img_file_info, info2])
|
||||
switch_dict["fn"](pnginfo_send_to_txt2img, switch_dict["t2i"], img_file_info, 'switch_to_txt2img')
|
||||
switch_dict["fn"](pnginfo_send_to_img2img, switch_dict["i2i"], img_file_info, 'switch_to_img2img_img2img')
|
||||
|
||||
|
||||
|
||||
def create_history_tabs(gr, sys_opts, cmp_ops, run_pnginfo, switch_dict):
|
||||
global opts;
|
||||
opts = sys_opts
|
||||
loads_files_num = int(opts.images_history_num_per_page)
|
||||
num_of_imgs_per_page = int(opts.images_history_num_per_page * opts.images_history_pages_num)
|
||||
if cmp_ops.browse_all_images:
|
||||
tabs_list.append(custom_tab_name)
|
||||
with gr.Blocks(analytics_enabled=False) as images_history:
|
||||
with gr.Tabs() as tabs:
|
||||
for tab in tabs_list:
|
||||
with gr.Tab(tab):
|
||||
with gr.Blocks(analytics_enabled=False) :
|
||||
show_images_history(gr, opts, tab, run_pnginfo, switch_dict)
|
||||
gradio.Checkbox(opts.images_history_preload, elem_id="images_history_preload", visible=False)
|
||||
gradio.Textbox(",".join(tabs_list), elem_id="images_history_tabnames_list", visible=False)
|
||||
|
||||
return images_history
|
|
@ -46,18 +46,23 @@ def apply_color_correction(correction, image):
|
|||
|
||||
return image
|
||||
|
||||
def apply_overlay(overlay_exists, overlay, paste_loc, image):
|
||||
if overlay_exists:
|
||||
if paste_loc is not None:
|
||||
x, y, w, h = paste_loc
|
||||
base_image = Image.new('RGBA', (overlay.width, overlay.height))
|
||||
image = images.resize_image(1, image, w, h)
|
||||
base_image.paste(image, (x, y))
|
||||
image = base_image
|
||||
|
||||
image = image.convert('RGBA')
|
||||
image.alpha_composite(overlay)
|
||||
image = image.convert('RGB')
|
||||
def apply_overlay(image, paste_loc, index, overlays):
|
||||
if overlays is None or index >= len(overlays):
|
||||
return image
|
||||
|
||||
overlay = overlays[index]
|
||||
|
||||
if paste_loc is not None:
|
||||
x, y, w, h = paste_loc
|
||||
base_image = Image.new('RGBA', (overlay.width, overlay.height))
|
||||
image = images.resize_image(1, image, w, h)
|
||||
base_image.paste(image, (x, y))
|
||||
image = base_image
|
||||
|
||||
image = image.convert('RGBA')
|
||||
image.alpha_composite(overlay)
|
||||
image = image.convert('RGB')
|
||||
|
||||
return image
|
||||
|
||||
|
@ -463,11 +468,11 @@ def process_images(p: StableDiffusionProcessing) -> Processed:
|
|||
|
||||
if p.color_corrections is not None and i < len(p.color_corrections):
|
||||
if opts.save and not p.do_not_save_samples and opts.save_images_before_color_correction:
|
||||
image_without_cc = apply_overlay(p.overlay_images is not None and i < len(p.overlay_images), p.overlay_images[i], p.paste_to, image)
|
||||
image_without_cc = apply_overlay(image, p.paste_to, i, p.overlay_images)
|
||||
images.save_image(image_without_cc, p.outpath_samples, "", seeds[i], prompts[i], opts.samples_format, info=infotext(n, i), p=p, suffix="-before-color-correction")
|
||||
image = apply_color_correction(p.color_corrections[i], image)
|
||||
|
||||
image = apply_overlay(p.overlay_images is not None and i < len(p.overlay_images), p.overlay_images[i], p.paste_to, image)
|
||||
image = apply_overlay(image, p.paste_to, i, p.overlay_images)
|
||||
|
||||
if opts.samples_save and not p.do_not_save_samples:
|
||||
images.save_image(image, p.outpath_samples, "", seeds[i], prompts[i], opts.samples_format, info=infotext(n, i), p=p)
|
||||
|
|
|
@ -1,4 +1,15 @@
|
|||
import sys
|
||||
import traceback
|
||||
from collections import namedtuple
|
||||
import inspect
|
||||
|
||||
|
||||
def report_exception(c, job):
|
||||
print(f"Error executing callback {job} for {c.script}", file=sys.stderr)
|
||||
print(traceback.format_exc(), file=sys.stderr)
|
||||
|
||||
|
||||
ScriptCallback = namedtuple("ScriptCallback", ["script", "callback"])
|
||||
callbacks_model_loaded = []
|
||||
callbacks_ui_tabs = []
|
||||
callbacks_ui_settings = []
|
||||
|
@ -11,22 +22,38 @@ def clear_callbacks():
|
|||
|
||||
|
||||
def model_loaded_callback(sd_model):
|
||||
for callback in callbacks_model_loaded:
|
||||
callback(sd_model)
|
||||
for c in callbacks_model_loaded:
|
||||
try:
|
||||
c.callback(sd_model)
|
||||
except Exception:
|
||||
report_exception(c, 'model_loaded_callback')
|
||||
|
||||
|
||||
def ui_tabs_callback():
|
||||
res = []
|
||||
|
||||
for callback in callbacks_ui_tabs:
|
||||
res += callback() or []
|
||||
|
||||
for c in callbacks_ui_tabs:
|
||||
try:
|
||||
res += c.callback() or []
|
||||
except Exception:
|
||||
report_exception(c, 'ui_tabs_callback')
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def ui_settings_callback():
|
||||
for callback in callbacks_ui_settings:
|
||||
callback()
|
||||
for c in callbacks_ui_settings:
|
||||
try:
|
||||
c.callback()
|
||||
except Exception:
|
||||
report_exception(c, 'ui_settings_callback')
|
||||
|
||||
|
||||
def add_callback(callbacks, fun):
|
||||
stack = [x for x in inspect.stack() if x.filename != __file__]
|
||||
filename = stack[0].filename if len(stack) > 0 else 'unknown file'
|
||||
|
||||
callbacks.append(ScriptCallback(filename, fun))
|
||||
|
||||
|
||||
def image_saved_callback(image, p, fullfn, txt_fullfn):
|
||||
|
@ -36,7 +63,7 @@ def image_saved_callback(image, p, fullfn, txt_fullfn):
|
|||
def on_model_loaded(callback):
|
||||
"""register a function to be called when the stable diffusion model is created; the model is
|
||||
passed as an argument"""
|
||||
callbacks_model_loaded.append(callback)
|
||||
add_callback(callbacks_model_loaded, callback)
|
||||
|
||||
|
||||
def on_ui_tabs(callback):
|
||||
|
@ -49,7 +76,7 @@ def on_ui_tabs(callback):
|
|||
title is tab text displayed to user in the UI
|
||||
elem_id is HTML id for the tab
|
||||
"""
|
||||
callbacks_ui_tabs.append(callback)
|
||||
add_callback(callbacks_ui_tabs, callback)
|
||||
|
||||
|
||||
def on_ui_settings(callback):
|
||||
|
|
|
@ -228,7 +228,7 @@ class VanillaStableDiffusionSampler:
|
|||
unconditional_conditioning = {"c_concat": [image_conditioning], "c_crossattn": [unconditional_conditioning]}
|
||||
|
||||
|
||||
samples = self.launch_sampling(steps, lambda: self.sampler.decode(x1, conditioning, t_enc, unconditional_guidance_scale=p.cfg_scale, unconditional_conditioning=unconditional_conditioning))
|
||||
samples = self.launch_sampling(t_enc + 1, lambda: self.sampler.decode(x1, conditioning, t_enc, unconditional_guidance_scale=p.cfg_scale, unconditional_conditioning=unconditional_conditioning))
|
||||
|
||||
return samples
|
||||
|
||||
|
@ -429,7 +429,7 @@ class KDiffusionSampler:
|
|||
self.model_wrap_cfg.init_latent = x
|
||||
self.last_latent = x
|
||||
|
||||
samples = self.launch_sampling(steps, lambda: self.func(self.model_wrap_cfg, xi, extra_args={
|
||||
samples = self.launch_sampling(t_enc + 1, lambda: self.func(self.model_wrap_cfg, xi, extra_args={
|
||||
'cond': conditioning,
|
||||
'image_cond': image_conditioning,
|
||||
'uncond': unconditional_conditioning,
|
||||
|
|
|
@ -80,12 +80,13 @@ parser.add_argument('--vae-path', type=str, help='Path to Variational Autoencode
|
|||
parser.add_argument("--disable-safe-unpickle", action='store_true', help="disable checking pytorch models for malicious code", default=False)
|
||||
parser.add_argument("--api", action='store_true', help="use api=True to launch the api with the webui")
|
||||
parser.add_argument("--nowebui", action='store_true', help="use api=True to launch the api instead of the webui")
|
||||
parser.add_argument("--ui-debug-mode", action='store_true', help="Don't load model to quickly launch UI")
|
||||
parser.add_argument("--device-id", type=str, help="Select the default CUDA device to use (export CUDA_VISIBLE_DEVICES=0,1,etc might be needed before)", default=None)
|
||||
parser.add_argument("--browse-all-images", action='store_true', help="Allow browsing all images by Image Browser", default=False)
|
||||
|
||||
cmd_opts = parser.parse_args()
|
||||
restricted_opts = [
|
||||
"samples_filename_pattern",
|
||||
"directories_filename_pattern",
|
||||
"outdir_samples",
|
||||
"outdir_txt2img_samples",
|
||||
"outdir_img2img_samples",
|
||||
|
@ -190,7 +191,8 @@ options_templates = {}
|
|||
options_templates.update(options_section(('saving-images', "Saving images/grids"), {
|
||||
"samples_save": OptionInfo(True, "Always save all generated images"),
|
||||
"samples_format": OptionInfo('png', 'File format for images'),
|
||||
"samples_filename_pattern": OptionInfo("", "Images filename pattern"),
|
||||
"samples_filename_pattern": OptionInfo("", "Images filename pattern", component_args=hide_dirs),
|
||||
"save_images_add_number": OptionInfo(True, "Add number to filename when saving", component_args=hide_dirs),
|
||||
|
||||
"grid_save": OptionInfo(True, "Always save all generated image grids"),
|
||||
"grid_format": OptionInfo('png', 'File format for grids'),
|
||||
|
@ -225,8 +227,8 @@ options_templates.update(options_section(('saving-to-dirs', "Saving to a directo
|
|||
"save_to_dirs": OptionInfo(False, "Save images to a subdirectory"),
|
||||
"grid_save_to_dirs": OptionInfo(False, "Save grids to a subdirectory"),
|
||||
"use_save_to_dirs_for_ui": OptionInfo(False, "When using \"Save\" button, save images to a subdirectory"),
|
||||
"directories_filename_pattern": OptionInfo("", "Directory name pattern"),
|
||||
"directories_max_prompt_words": OptionInfo(8, "Max prompt words for [prompt_words] pattern", gr.Slider, {"minimum": 1, "maximum": 20, "step": 1}),
|
||||
"directories_filename_pattern": OptionInfo("", "Directory name pattern", component_args=hide_dirs),
|
||||
"directories_max_prompt_words": OptionInfo(8, "Max prompt words for [prompt_words] pattern", gr.Slider, {"minimum": 1, "maximum": 20, "step": 1, **hide_dirs}),
|
||||
}))
|
||||
|
||||
options_templates.update(options_section(('upscaling', "Upscaling"), {
|
||||
|
@ -320,15 +322,6 @@ options_templates.update(options_section(('sampler-params', "Sampler parameters"
|
|||
'eta_noise_seed_delta': OptionInfo(0, "Eta noise seed delta", gr.Number, {"precision": 0}),
|
||||
}))
|
||||
|
||||
options_templates.update(options_section(('images-history', "Images Browser"), {
|
||||
#"images_history_reconstruct_directory": OptionInfo(False, "Reconstruct output directory structure.This can greatly improve the speed of loading , but will change the original output directory structure"),
|
||||
"images_history_preload": OptionInfo(False, "Preload images at startup"),
|
||||
"images_history_num_per_page": OptionInfo(36, "Number of pictures displayed on each page"),
|
||||
"images_history_pages_num": OptionInfo(6, "Minimum number of pages per load "),
|
||||
"images_history_grid_num": OptionInfo(6, "Number of grids in each row"),
|
||||
|
||||
}))
|
||||
|
||||
|
||||
class Options:
|
||||
data = None
|
||||
|
@ -357,7 +350,7 @@ class Options:
|
|||
|
||||
def save(self, filename):
|
||||
with open(filename, "w", encoding="utf8") as file:
|
||||
json.dump(self.data, file)
|
||||
json.dump(self.data, file, indent=4)
|
||||
|
||||
def same_type(self, x, y):
|
||||
if x is None or y is None:
|
||||
|
|
|
@ -38,7 +38,6 @@ import modules.codeformer_model
|
|||
import modules.generation_parameters_copypaste
|
||||
import modules.gfpgan_model
|
||||
import modules.hypernetworks.ui
|
||||
import modules.images_history as img_his
|
||||
import modules.ldsr_model
|
||||
import modules.scripts
|
||||
import modules.shared as shared
|
||||
|
@ -51,12 +50,11 @@ from modules.sd_samplers import samplers, samplers_for_img2img
|
|||
import modules.textual_inversion.ui
|
||||
import modules.hypernetworks.ui
|
||||
|
||||
import modules.images_history as img_his
|
||||
|
||||
|
||||
# this is a fix for Windows users. Without it, javascript files will be served with text/html content-type and the browser will not show any UI
|
||||
mimetypes.init()
|
||||
mimetypes.add_type('application/javascript', '.js')
|
||||
txt2img_paste_fields = []
|
||||
img2img_paste_fields = []
|
||||
|
||||
|
||||
if not cmd_opts.share and not cmd_opts.listen:
|
||||
|
@ -786,6 +784,7 @@ def create_ui(wrap_gradio_gpu_call):
|
|||
]
|
||||
)
|
||||
|
||||
global txt2img_paste_fields
|
||||
txt2img_paste_fields = [
|
||||
(txt2img_prompt, "Prompt"),
|
||||
(txt2img_negative_prompt, "Negative prompt"),
|
||||
|
@ -1056,6 +1055,7 @@ def create_ui(wrap_gradio_gpu_call):
|
|||
outputs=[prompt, negative_prompt, style1, style2],
|
||||
)
|
||||
|
||||
global img2img_paste_fields
|
||||
img2img_paste_fields = [
|
||||
(img2img_prompt, "Prompt"),
|
||||
(img2img_negative_prompt, "Negative prompt"),
|
||||
|
@ -1104,9 +1104,9 @@ def create_ui(wrap_gradio_gpu_call):
|
|||
upscaling_resize_w = gr.Number(label="Width", value=512, precision=0)
|
||||
upscaling_resize_h = gr.Number(label="Height", value=512, precision=0)
|
||||
upscaling_crop = gr.Checkbox(label='Crop to fit', value=True)
|
||||
|
||||
|
||||
with gr.Group():
|
||||
extras_upscaler_1 = gr.Radio(label='Upscaler 1', elem_id="extras_upscaler_1", choices=[x.name for x in shared.sd_upscalers], value=shared.sd_upscalers[0].name, type="index")
|
||||
extras_upscaler_1 = gr.Radio(label='Upscaler 1', elem_id="extras_upscaler_1", choices=[x.name for x in shared.sd_upscalers], value=shared.sd_upscalers[0].name, type="index")
|
||||
|
||||
with gr.Group():
|
||||
extras_upscaler_2 = gr.Radio(label='Upscaler 2', elem_id="extras_upscaler_2", choices=[x.name for x in shared.sd_upscalers], value=shared.sd_upscalers[0].name, type="index")
|
||||
|
@ -1193,15 +1193,7 @@ def create_ui(wrap_gradio_gpu_call):
|
|||
inputs=[image],
|
||||
outputs=[html, generation_info, html2],
|
||||
)
|
||||
#images history
|
||||
images_history_switch_dict = {
|
||||
"fn": modules.generation_parameters_copypaste.connect_paste,
|
||||
"t2i": txt2img_paste_fields,
|
||||
"i2i": img2img_paste_fields
|
||||
}
|
||||
|
||||
images_history = img_his.create_history_tabs(gr, opts, cmd_opts, wrap_gradio_call(modules.extras.run_pnginfo), images_history_switch_dict)
|
||||
|
||||
|
||||
with gr.Blocks() as modelmerger_interface:
|
||||
with gr.Row().style(equal_height=False):
|
||||
with gr.Column(variant='panel'):
|
||||
|
@ -1650,7 +1642,6 @@ Requested path was: {f}
|
|||
(img2img_interface, "img2img", "img2img"),
|
||||
(extras_interface, "Extras", "extras"),
|
||||
(pnginfo_interface, "PNG Info", "pnginfo"),
|
||||
(images_history, "Image Browser", "images_history"),
|
||||
(modelmerger_interface, "Checkpoint Merger", "modelmerger"),
|
||||
(train_interface, "Train", "ti"),
|
||||
]
|
||||
|
@ -1894,6 +1885,7 @@ def load_javascript(raw_response):
|
|||
javascript = f'<script>{jsfile.read()}</script>'
|
||||
|
||||
scripts_list = modules.scripts.list_scripts("javascript", ".js")
|
||||
|
||||
for basedir, filename, path in scripts_list:
|
||||
with open(path, "r", encoding="utf8") as jsfile:
|
||||
javascript += f"\n<!-- {filename} --><script>{jsfile.read()}</script>"
|
||||
|
|
74
style.css
74
style.css
|
@ -515,3 +515,77 @@ img2maskimg, #img2maskimg > .h-60, #img2maskimg > .h-60 > div, #img2maskimg > .h
|
|||
max-height: 480px !important;
|
||||
min-height: 480px !important;
|
||||
}
|
||||
|
||||
/* The following handles localization for right-to-left (RTL) languages like Arabic.
|
||||
The rtl media type will only be activated by the logic in javascript/localization.js.
|
||||
If you change anything above, you need to make sure it is RTL compliant by just running
|
||||
your changes through converters like https://cssjanus.github.io/ or https://rtlcss.com/.
|
||||
Then, you will need to add the RTL counterpart only if needed in the rtl section below.*/
|
||||
@media rtl {
|
||||
/* this part was manualy added */
|
||||
:host {
|
||||
direction: rtl;
|
||||
}
|
||||
.output-html:has(.performance), .gr-text-input {
|
||||
direction: ltr;
|
||||
}
|
||||
.gr-radio, .gr-checkbox{
|
||||
margin-left: 0.25em;
|
||||
}
|
||||
|
||||
/* this part was automatically generated with few manual modifications */
|
||||
.performance .time {
|
||||
margin-right: unset;
|
||||
margin-left: 0;
|
||||
}
|
||||
.justify-center.overflow-x-scroll {
|
||||
justify-content: right;
|
||||
}
|
||||
.justify-center.overflow-x-scroll button:first-of-type {
|
||||
margin-left: unset;
|
||||
margin-right: auto;
|
||||
}
|
||||
.justify-center.overflow-x-scroll button:last-of-type {
|
||||
margin-right: unset;
|
||||
margin-left: auto;
|
||||
}
|
||||
#settings fieldset span.text-gray-500, #settings .gr-block.gr-box span.text-gray-500, #settings label.block span{
|
||||
margin-right: unset;
|
||||
margin-left: 8em;
|
||||
}
|
||||
#txt2img_progressbar, #img2img_progressbar, #ti_progressbar{
|
||||
right: unset;
|
||||
left: 0;
|
||||
}
|
||||
.progressDiv .progress{
|
||||
padding: 0 0 0 8px;
|
||||
text-align: left;
|
||||
}
|
||||
#lightboxModal{
|
||||
left: unset;
|
||||
right: 0;
|
||||
}
|
||||
.modalPrev, .modalNext{
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.modalNext {
|
||||
right: unset;
|
||||
left: 0;
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
#imageARPreview{
|
||||
left:unset;
|
||||
right:0px;
|
||||
}
|
||||
#txt2img_skip, #img2img_skip{
|
||||
right: unset;
|
||||
left: 0px;
|
||||
}
|
||||
#context-menu{
|
||||
box-shadow:-1px 1px 2px #CE6400;
|
||||
}
|
||||
.gr-box > div > div > input.gr-text-input{
|
||||
right: unset;
|
||||
left: 0.5em;
|
||||
}
|
||||
}
|
||||
|
|
7
webui.py
7
webui.py
|
@ -9,7 +9,7 @@ from fastapi.middleware.gzip import GZipMiddleware
|
|||
|
||||
from modules.paths import script_path
|
||||
|
||||
from modules import devices, sd_samplers
|
||||
from modules import devices, sd_samplers, upscaler
|
||||
import modules.codeformer_model as codeformer
|
||||
import modules.extras
|
||||
import modules.face_restoration
|
||||
|
@ -73,6 +73,11 @@ def wrap_gradio_gpu_call(func, extra_outputs=None):
|
|||
|
||||
|
||||
def initialize():
|
||||
if cmd_opts.ui_debug_mode:
|
||||
shared.sd_upscalers = upscaler.UpscalerLanczos().scalers
|
||||
modules.scripts.load_scripts()
|
||||
return
|
||||
|
||||
modelloader.cleanup_models()
|
||||
modules.sd_models.setup_model()
|
||||
codeformer.setup_model(cmd_opts.codeformer_models_path)
|
||||
|
|
Loading…
Reference in New Issue