diff --git a/index.html b/index.html index 1cda974..e644802 100644 --- a/index.html +++ b/index.html @@ -101,6 +101,7 @@
+
@@ -322,7 +323,7 @@ - + @@ -340,7 +341,7 @@ - + - + diff --git a/js/index.js b/js/index.js index d9ac3a2..a2a7ae8 100644 --- a/js/index.js +++ b/js/index.js @@ -642,7 +642,7 @@ makeSlider( ); // 20230102 grumble grumble -makeSlider( +const hrFixScaleSlider = makeSlider( "HRfix Scale", document.getElementById("hrFixScale"), "hr_scale", @@ -664,6 +664,17 @@ makeSlider( 0.01 ); +const lockPxSlider = makeSlider( + "HRfix Autoscale Lock Px.", + document.getElementById("hrFixLockPx"), + "hr_fix_lock_px", + 0, + 1024, + 256, + 0, + 1 +); + function changeMaskBlur() { stableDiffusionData.mask_blur = parseInt( document.getElementById("maskBlur").value @@ -685,17 +696,20 @@ function changeHiResFix() { var hrfOpotions = document.getElementById("hrFixUpscaler"); var hrfLabel = document.getElementById("hrFixLabel"); var hrfDenoiseSlider = document.getElementById("hrDenoising"); + var hrfLockPxSlider = document.getElementById("hrFixLockPx"); if (stableDiffusionData.enable_hr) { hrfSlider.classList.remove("invisible"); hrfOpotions.classList.remove("invisible"); hrfLabel.classList.remove("invisible"); hrfDenoiseSlider.classList.remove("invisible"); + hrfLockPxSlider.classList.remove("invisible"); //state.ctxmenu.keepUnmaskedBlurSliderLinebreak.classList.add("invisible"); } else { hrfSlider.classList.add("invisible"); hrfOpotions.classList.add("invisible"); hrfLabel.classList.add("invisible"); hrfDenoiseSlider.classList.add("invisible"); + hrfLockPxSlider.classList.add("invisible"); //state.ctxmenu.keepUnmaskedBlurSliderLinebreak.classList.remove("invisible"); } } @@ -1150,6 +1164,11 @@ function loadSettings() { localStorage.getItem("openoutpaint/hr_denoising_strength") === null ? 0.7 : localStorage.getItem("openoutpaint/hr_denoising_strength"); + let _hrfix_lock_px = + localStorage.getItem("openoutpaint/hr_fix_lock_px") === null + ? 0 + : localStorage.getItem("openoutpaint/hr_fix_lock_px"); + // set the values into the UI document.getElementById("maskBlur").value = Number(_mask_blur); document.getElementById("seed").value = Number(_seed); @@ -1159,6 +1178,7 @@ function loadSettings() { Boolean(_sync_cursor_size); document.getElementById("hrFixScale").value = Number(_hrfix_scale); document.getElementById("hrDenoising").value = Number(_hrfix_denoising); + document.getElementById("hrFixLockPx").value = Number(_hrfix_lock_px); } imageCollection.element.addEventListener( diff --git a/js/ui/tool/dream.js b/js/ui/tool/dream.js index 505fb2c..9792b3e 100644 --- a/js/ui/tool/dream.js +++ b/js/ui/tool/dream.js @@ -141,6 +141,22 @@ const _dream = async (endpoint, request) => { * we cheekily lie to SD and tell it that the original dimensions are _divided_ * by the scale factor so it returns something about the same size as we wanted initially */ + + // ok so instead, only do that if stableDiffusionData.hr_fix_lock_px > 0 + if (stableDiffusionData.hr_fix_lock_px > 0) { + // find the appropriate scale factor for hrfix + var widthFactor = + request.width / stableDiffusionData.hr_fix_lock_px <= 4 + ? request.width / stableDiffusionData.hr_fix_lock_px + : 4; + var heightFactor = + request.height / stableDiffusionData.hr_fix_lock_px <= 4 + ? request.height / stableDiffusionData.hr_fix_lock_px + : 4; + var factor = heightFactor > widthFactor ? heightFactor : widthFactor; + request.hr_scale = hrFixScaleSlider.value = factor < 1 ? 1 : factor; + } + var newWidth = Math.floor(request.width / request.hr_scale); var newHeight = Math.floor(request.height / request.hr_scale); request.width = newWidth;