update translations, change config value to be dimension instead of total pixels

This commit is contained in:
Mary Hipp 2024-08-05 19:19:39 -04:00 committed by psychedelicious
parent 90ec757802
commit 2cff20f87a
5 changed files with 15 additions and 12 deletions

View File

@ -1673,6 +1673,8 @@
}, },
"upscaling": { "upscaling": {
"creativity": "Creativity", "creativity": "Creativity",
"exceedsMaxSize": "Upscale settings exceed max size limit",
"exceedsMaxSizeDetails": "Max upscale limit is {{maxUpscaleDimension}}x{{maxUpscaleDimension}} pixels. Please try a smaller image or decrease your scale selection.",
"structure": "Structure", "structure": "Structure",
"upscaleModel": "Upscale Model", "upscaleModel": "Upscale Model",
"postProcessingModel": "Post-Processing Model", "postProcessingModel": "Post-Processing Model",
@ -1680,8 +1682,6 @@
"postProcessingMissingModelWarning": "Visit the <LinkComponent>Model Manager</LinkComponent> to install a post-processing (image to image) model.", "postProcessingMissingModelWarning": "Visit the <LinkComponent>Model Manager</LinkComponent> to install a post-processing (image to image) model.",
"missingModelsWarning": "Visit the <LinkComponent>Model Manager</LinkComponent> to install the required models:", "missingModelsWarning": "Visit the <LinkComponent>Model Manager</LinkComponent> to install the required models:",
"mainModelDesc": "Main model (SD1.5 or SDXL architecture)", "mainModelDesc": "Main model (SD1.5 or SDXL architecture)",
"outputTooLargeShort": "Output is too large to upscale",
"outputTooLarge": "Max upscale limit is 10,000x10,000 pixels. Please try a smaller image or decrease your scale selection.",
"tileControlNetModelDesc": "Tile ControlNet model for the chosen main model architecture", "tileControlNetModelDesc": "Tile ControlNet model for the chosen main model architecture",
"upscaleModelDesc": "Upscale (image to image) model", "upscaleModelDesc": "Upscale (image to image) model",
"missingUpscaleInitialImage": "Missing initial image for upscaling", "missingUpscaleInitialImage": "Missing initial image for upscaling",

View File

@ -65,7 +65,7 @@ export type AppConfig = {
*/ */
shouldUpdateImagesOnConnect: boolean; shouldUpdateImagesOnConnect: boolean;
shouldFetchMetadataFromApi: boolean; shouldFetchMetadataFromApi: boolean;
maxUpscalePixels?: number; maxUpscaleDimension?: number;
allowPrivateBoards: boolean; allowPrivateBoards: boolean;
disabledTabs: InvokeTabName[]; disabledTabs: InvokeTabName[];
disabledFeatures: AppFeature[]; disabledFeatures: AppFeature[];

View File

@ -212,11 +212,11 @@ const createSelector = (templates: Templates) =>
} else if (activeTabName === 'upscaling') { } else if (activeTabName === 'upscaling') {
if (!upscale.upscaleInitialImage) { if (!upscale.upscaleInitialImage) {
reasons.push({ content: i18n.t('upscaling.missingUpscaleInitialImage') }); reasons.push({ content: i18n.t('upscaling.missingUpscaleInitialImage') });
} else if (config.maxUpscalePixels) { } else if (config.maxUpscaleDimension) {
const upscaledPixels = const upscaledPixels =
upscale.upscaleInitialImage.width * upscale.scale * upscale.upscaleInitialImage.height * upscale.scale; upscale.upscaleInitialImage.width * upscale.scale * upscale.upscaleInitialImage.height * upscale.scale;
if (upscaledPixels > config.maxUpscalePixels) { if (upscaledPixels > config.maxUpscaleDimension) {
reasons.push({ content: i18n.t('upscaling.outputTooLargeShort') }); reasons.push({ content: i18n.t('upscaling.exceedsMaxSize') });
} }
} }
if (!upscale.upscaleModel) { if (!upscale.upscaleModel) {

View File

@ -8,14 +8,14 @@ import type { ImageDTO } from 'services/api/types';
const createIsTooLargeToUpscaleSelector = (imageDTO?: ImageDTO) => const createIsTooLargeToUpscaleSelector = (imageDTO?: ImageDTO) =>
createMemoizedSelector(selectUpscalelice, selectConfigSlice, (upscale, config) => { createMemoizedSelector(selectUpscalelice, selectConfigSlice, (upscale, config) => {
const { upscaleModel, scale } = upscale; const { upscaleModel, scale } = upscale;
const { maxUpscalePixels } = config; const { maxUpscaleDimension } = config;
if (!maxUpscalePixels || !upscaleModel || !imageDTO) { if (!maxUpscaleDimension || !upscaleModel || !imageDTO) {
return false; return false;
} }
const upscaledPixels = imageDTO.width * scale * imageDTO.height * scale; const upscaledPixels = imageDTO.width * scale * imageDTO.height * scale;
return upscaledPixels > maxUpscalePixels; return upscaledPixels > maxUpscaleDimension * maxUpscaleDimension;
}); });
export const useIsTooLargeToUpscale = (imageDTO?: ImageDTO) => { export const useIsTooLargeToUpscale = (imageDTO?: ImageDTO) => {

View File

@ -18,6 +18,7 @@ export const UpscaleWarning = () => {
const [modelConfigs, { isLoading }] = useControlNetModels(); const [modelConfigs, { isLoading }] = useControlNetModels();
const disabledTabs = useAppSelector((s) => s.config.disabledTabs); const disabledTabs = useAppSelector((s) => s.config.disabledTabs);
const shouldShowButton = useMemo(() => !disabledTabs.includes('models'), [disabledTabs]); const shouldShowButton = useMemo(() => !disabledTabs.includes('models'), [disabledTabs]);
const maxUpscaleDimension = useAppSelector((s) => s.config.maxUpscaleDimension);
const isTooLargeToUpscale = useIsTooLargeToUpscale(upscaleInitialImage || undefined); const isTooLargeToUpscale = useIsTooLargeToUpscale(upscaleInitialImage || undefined);
useEffect(() => { useEffect(() => {
@ -43,11 +44,13 @@ export const UpscaleWarning = () => {
const otherWarnings = useMemo(() => { const otherWarnings = useMemo(() => {
const _warnings: string[] = []; const _warnings: string[] = [];
if (isTooLargeToUpscale) { if (isTooLargeToUpscale && maxUpscaleDimension) {
_warnings.push(t('upscaling.outputTooLarge')); _warnings.push(
t('upscaling.exceedsMaxSizeDetails', { maxUpscaleDimension: maxUpscaleDimension.toLocaleString() })
);
} }
return _warnings; return _warnings;
}, [isTooLargeToUpscale, t]); }, [isTooLargeToUpscale, t, maxUpscaleDimension]);
const handleGoToModelManager = useCallback(() => { const handleGoToModelManager = useCallback(() => {
dispatch(setActiveTab('models')); dispatch(setActiveTab('models'));