diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json
index 5872d22dfe..7f31da089e 100644
--- a/invokeai/frontend/web/public/locales/en.json
+++ b/invokeai/frontend/web/public/locales/en.json
@@ -887,6 +887,10 @@
"imageFit": "Fit Initial Image To Output Size",
"images": "Images",
"infillMethod": "Infill Method",
+ "infillMosaicTileWidth": "Tile Width",
+ "infillMosaicTileHeight": "Tile Height",
+ "infillMosaicMinColor": "Min Color",
+ "infillMosaicMaxColor": "Max Color",
"info": "Info",
"invoke": {
"addingImagesTo": "Adding images to",
diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasOutpaintGraph.ts
index 520005ee5b..faad4189a9 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasOutpaintGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasOutpaintGraph.ts
@@ -65,6 +65,10 @@ export const buildCanvasOutpaintGraph = async (
infillTileSize,
infillPatchmatchDownscaleSize,
infillMethod,
+ infillMosaicTileWidth,
+ infillMosaicTileHeight,
+ infillMosaicMinColor,
+ infillMosaicMaxColor,
clipSkip,
seamlessXAxis,
seamlessYAxis,
@@ -361,6 +365,10 @@ export const buildCanvasOutpaintGraph = async (
type: 'infill_mosaic',
id: INPAINT_INFILL,
is_intermediate,
+ tile_width: infillMosaicTileWidth,
+ tile_height: infillMosaicTileHeight,
+ min_color: infillMosaicMinColor,
+ max_color: infillMosaicMaxColor,
};
}
diff --git a/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasSDXLOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasSDXLOutpaintGraph.ts
index 751eb52b9a..efe9d51990 100644
--- a/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasSDXLOutpaintGraph.ts
+++ b/invokeai/frontend/web/src/features/nodes/util/graph/buildCanvasSDXLOutpaintGraph.ts
@@ -66,6 +66,10 @@ export const buildCanvasSDXLOutpaintGraph = async (
infillTileSize,
infillPatchmatchDownscaleSize,
infillMethod,
+ infillMosaicTileWidth,
+ infillMosaicTileHeight,
+ infillMosaicMinColor,
+ infillMosaicMaxColor,
seamlessXAxis,
seamlessYAxis,
canvasCoherenceMode,
@@ -370,6 +374,10 @@ export const buildCanvasSDXLOutpaintGraph = async (
type: 'infill_mosaic',
id: INPAINT_INFILL,
is_intermediate,
+ tile_width: infillMosaicTileWidth,
+ tile_height: infillMosaicTileHeight,
+ min_color: infillMosaicMinColor,
+ max_color: infillMosaicMaxColor,
};
}
diff --git a/invokeai/frontend/web/src/features/parameters/components/Canvas/InfillAndScaling/ParamInfillOptions.tsx b/invokeai/frontend/web/src/features/parameters/components/Canvas/InfillAndScaling/ParamInfillOptions.tsx
index 16cbffe56a..607a2ed809 100644
--- a/invokeai/frontend/web/src/features/parameters/components/Canvas/InfillAndScaling/ParamInfillOptions.tsx
+++ b/invokeai/frontend/web/src/features/parameters/components/Canvas/InfillAndScaling/ParamInfillOptions.tsx
@@ -3,6 +3,7 @@ import { memo } from 'react';
import ParamInfillPatchmatchDownscaleSize from './ParamInfillPatchmatchDownscaleSize';
import ParamInfillTilesize from './ParamInfillTilesize';
+import ParamMosaicInfillOptions from './ParamMosaicInfillOptions';
const ParamInfillOptions = () => {
const infillMethod = useAppSelector((s) => s.generation.infillMethod);
@@ -14,6 +15,10 @@ const ParamInfillOptions = () => {
return ;
}
+ if (infillMethod === 'mosaic') {
+ return ;
+ }
+
return null;
};
diff --git a/invokeai/frontend/web/src/features/parameters/components/Canvas/InfillAndScaling/ParamMosaicInfillOptions.tsx b/invokeai/frontend/web/src/features/parameters/components/Canvas/InfillAndScaling/ParamMosaicInfillOptions.tsx
new file mode 100644
index 0000000000..47c11d5669
--- /dev/null
+++ b/invokeai/frontend/web/src/features/parameters/components/Canvas/InfillAndScaling/ParamMosaicInfillOptions.tsx
@@ -0,0 +1,127 @@
+import { Box, CompositeNumberInput, CompositeSlider, Flex, FormControl, FormLabel } from '@invoke-ai/ui-library';
+import { createSelector } from '@reduxjs/toolkit';
+import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
+import IAIColorPicker from 'common/components/IAIColorPicker';
+import {
+ selectGenerationSlice,
+ setInfillMosaicMaxColor,
+ setInfillMosaicMinColor,
+ setInfillMosaicTileHeight,
+ setInfillMosaicTileWidth,
+} from 'features/parameters/store/generationSlice';
+import { memo, useCallback, useMemo } from 'react';
+import type { RgbaColor } from 'react-colorful';
+import { useTranslation } from 'react-i18next';
+
+const ParamMosaicInfillTileSize = () => {
+ const dispatch = useAppDispatch();
+
+ const selector = useMemo(
+ () =>
+ createSelector(selectGenerationSlice, (generation) => ({
+ infillMosaicTileWidth: generation.infillMosaicTileWidth,
+ infillMosaicTileHeight: generation.infillMosaicTileHeight,
+ infillMosaicMinColor: generation.infillMosaicMinColor,
+ infillMosaicMaxColor: generation.infillMosaicMaxColor,
+ })),
+ []
+ );
+
+ const { infillMosaicTileWidth, infillMosaicTileHeight, infillMosaicMinColor, infillMosaicMaxColor } =
+ useAppSelector(selector);
+
+ const infillMethod = useAppSelector((s) => s.generation.infillMethod);
+
+ const { t } = useTranslation();
+
+ const handleInfillMosaicTileWidthChange = useCallback(
+ (v: number) => {
+ dispatch(setInfillMosaicTileWidth(v));
+ },
+ [dispatch]
+ );
+
+ const handleInfillMosaicTileHeightChange = useCallback(
+ (v: number) => {
+ dispatch(setInfillMosaicTileHeight(v));
+ },
+ [dispatch]
+ );
+
+ const handleInfillMosaicMinColor = useCallback(
+ (v: RgbaColor) => {
+ dispatch(setInfillMosaicMinColor(v));
+ },
+ [dispatch]
+ );
+
+ const handleInfillMosaicMaxColor = useCallback(
+ (v: RgbaColor) => {
+ dispatch(setInfillMosaicMaxColor(v));
+ },
+ [dispatch]
+ );
+
+ return (
+
+
+ {t('parameters.infillMosaicTileWidth')}
+
+
+
+
+ {t('parameters.infillMosaicTileHeight')}
+
+
+
+
+ {t('parameters.infillMosaicMinColor')}
+
+
+
+
+
+ {t('parameters.infillMosaicMaxColor')}
+
+
+
+
+
+ );
+};
+
+export default memo(ParamMosaicInfillTileSize);
diff --git a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts
index e272cd278e..7572ffeb90 100644
--- a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts
+++ b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts
@@ -19,6 +19,7 @@ import type {
import { getIsSizeOptimal, getOptimalDimension } from 'features/parameters/util/optimalDimension';
import { configChanged } from 'features/system/store/configSlice';
import { clamp } from 'lodash-es';
+import type { RgbaColor } from 'react-colorful';
import type { ImageDTO } from 'services/api/types';
import type { GenerationState } from './types';
@@ -55,6 +56,10 @@ const initialGenerationState: GenerationState = {
shouldUseCpuNoise: true,
shouldShowAdvancedOptions: false,
aspectRatio: { ...initialAspectRatioState },
+ infillMosaicTileWidth: 64,
+ infillMosaicTileHeight: 64,
+ infillMosaicMinColor: { r: 0, g: 0, b: 0, a: 1 },
+ infillMosaicMaxColor: { r: 255, g: 255, b: 255, a: 1 },
};
export const generationSlice = createSlice({
@@ -206,6 +211,18 @@ export const generationSlice = createSlice({
aspectRatioChanged: (state, action: PayloadAction) => {
state.aspectRatio = action.payload;
},
+ setInfillMosaicTileWidth: (state, action: PayloadAction) => {
+ state.infillMosaicTileWidth = action.payload;
+ },
+ setInfillMosaicTileHeight: (state, action: PayloadAction) => {
+ state.infillMosaicTileHeight = action.payload;
+ },
+ setInfillMosaicMinColor: (state, action: PayloadAction) => {
+ state.infillMosaicMinColor = action.payload;
+ },
+ setInfillMosaicMaxColor: (state, action: PayloadAction) => {
+ state.infillMosaicMaxColor = action.payload;
+ },
},
extraReducers: (builder) => {
builder.addCase(configChanged, (state, action) => {
@@ -264,6 +281,10 @@ export const {
heightChanged,
widthRecalled,
heightRecalled,
+ setInfillMosaicTileWidth,
+ setInfillMosaicTileHeight,
+ setInfillMosaicMinColor,
+ setInfillMosaicMaxColor,
} = generationSlice.actions;
export const { selectOptimalDimension } = generationSlice.selectors;
diff --git a/invokeai/frontend/web/src/features/parameters/store/types.ts b/invokeai/frontend/web/src/features/parameters/store/types.ts
index 73185754ee..1e69bf52d5 100644
--- a/invokeai/frontend/web/src/features/parameters/store/types.ts
+++ b/invokeai/frontend/web/src/features/parameters/store/types.ts
@@ -17,6 +17,7 @@ import type {
ParameterVAEModel,
ParameterWidth,
} from 'features/parameters/types/parameterSchemas';
+import type { RgbaColor } from 'react-colorful';
export interface GenerationState {
_version: 2;
@@ -51,6 +52,10 @@ export interface GenerationState {
shouldUseCpuNoise: boolean;
shouldShowAdvancedOptions: boolean;
aspectRatio: AspectRatioState;
+ infillMosaicTileWidth: number;
+ infillMosaicTileHeight: number;
+ infillMosaicMinColor: RgbaColor;
+ infillMosaicMaxColor: RgbaColor;
}
export type PayloadActionWithOptimalDimension = PayloadAction;
diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts
index 41e60fa029..c42078d414 100644
--- a/invokeai/frontend/web/src/services/api/schema.ts
+++ b/invokeai/frontend/web/src/services/api/schema.ts
@@ -1419,7 +1419,7 @@ export type components = {
* @default true
*/
use_cache?: boolean;
- /** @description The image to infill */
+ /** @description The image to process */
image?: components["schemas"]["ImageField"];
/**
* type
@@ -4112,7 +4112,7 @@ export type components = {
* @description The nodes in this graph
*/
nodes: {
- [key: string]: components["schemas"]["AddInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["FaceOffInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["DWOpenposeImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["DepthAnythingImageProcessorInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["StringJoinInvocation"];
+ [key: string]: components["schemas"]["FaceOffInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["DWOpenposeImageProcessorInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["TileToPropertiesInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["RandomFloatInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["LoRALoaderInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["MergeTilesToImageInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["MetadataInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["MergeMetadataInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["FaceIdentifierInvocation"] | components["schemas"]["VAELoaderInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["PairTileImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["IdealSizeInvocation"] | components["schemas"]["CenterPadCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["CalculateImageTilesInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["UnsharpMaskInvocation"] | components["schemas"]["MetadataItemInvocation"] | components["schemas"]["MaskFromIDInvocation"] | components["schemas"]["CoreMetadataInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["BooleanInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["CanvasPasteBackInvocation"] | components["schemas"]["T2IAdapterInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["DepthAnythingImageProcessorInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["SDXLLoRALoaderInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["FreeUInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["MosaicInfillInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["CreateGradientMaskInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["CLIPSkipInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["CalculateImageTilesEvenSplitInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["CropLatentsCoreInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["CalculateImageTilesMinimumOverlapInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["FaceMaskInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["ImageInverseLerpInvocation"];
};
/**
* Edges
@@ -4149,7 +4149,7 @@ export type components = {
* @description The results of node executions
*/
results: {
- [key: string]: components["schemas"]["UNetOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["String2Output"] | components["schemas"]["ControlOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["CLIPSkipInvocationOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["LoRALoaderOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["SDXLLoRALoaderOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["VAEOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["GradientMaskOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["LatentsOutput"];
+ [key: string]: components["schemas"]["ControlOutput"] | components["schemas"]["CLIPOutput"] | components["schemas"]["CollectInvocationOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["TileToPropertiesOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["GradientMaskOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["FaceOffOutput"] | components["schemas"]["String2Output"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["SDXLLoRALoaderOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["LoRALoaderOutput"] | components["schemas"]["CalculateImageTilesOutput"] | components["schemas"]["MetadataItemOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["FaceMaskOutput"] | components["schemas"]["MetadataOutput"] | components["schemas"]["BooleanOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["PairTileImageOutput"] | components["schemas"]["IdealSizeOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["CLIPSkipInvocationOutput"] | components["schemas"]["T2IAdapterOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["UNetOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["VAEOutput"];
};
/**
* Errors
@@ -5693,7 +5693,7 @@ export type components = {
* @default true
*/
use_cache?: boolean;
- /** @description The image to infill */
+ /** @description The image to process */
image?: components["schemas"]["ImageField"];
/**
* @description The color to use to infill
@@ -5738,7 +5738,7 @@ export type components = {
* @default true
*/
use_cache?: boolean;
- /** @description The image to infill */
+ /** @description The image to process */
image?: components["schemas"]["ImageField"];
/**
* Downscale
@@ -5786,7 +5786,7 @@ export type components = {
* @default true
*/
use_cache?: boolean;
- /** @description The image to infill */
+ /** @description The image to process */
image?: components["schemas"]["ImageField"];
/**
* Tile Size
@@ -6088,7 +6088,7 @@ export type components = {
* @default true
*/
use_cache?: boolean;
- /** @description The image to infill */
+ /** @description The image to process */
image?: components["schemas"]["ImageField"];
/**
* type
@@ -7702,6 +7702,73 @@ export type components = {
/** Models */
models: (components["schemas"]["MainDiffusersConfig"] | components["schemas"]["MainCheckpointConfig"] | components["schemas"]["VAEDiffusersConfig"] | components["schemas"]["VAECheckpointConfig"] | components["schemas"]["ControlNetDiffusersConfig"] | components["schemas"]["ControlNetCheckpointConfig"] | components["schemas"]["LoRALyCORISConfig"] | components["schemas"]["LoRADiffusersConfig"] | components["schemas"]["TextualInversionFileConfig"] | components["schemas"]["TextualInversionFolderConfig"] | components["schemas"]["IPAdapterInvokeAIConfig"] | components["schemas"]["IPAdapterCheckpointConfig"] | components["schemas"]["T2IAdapterConfig"] | components["schemas"]["CLIPVisionDiffusersConfig"])[];
};
+ /**
+ * Mosaic Infill
+ * @description Infills transparent areas of an image with a mosaic pattern drawing colors from the rest of the image
+ */
+ MosaicInfillInvocation: {
+ /** @description The board to save the image to */
+ board?: components["schemas"]["BoardField"] | null;
+ /** @description Optional metadata to be saved with the image */
+ metadata?: components["schemas"]["MetadataField"] | null;
+ /**
+ * Id
+ * @description The id of this instance of an invocation. Must be unique among all instances of invocations.
+ */
+ id: string;
+ /**
+ * Is Intermediate
+ * @description Whether or not this is an intermediate invocation.
+ * @default false
+ */
+ is_intermediate?: boolean;
+ /**
+ * Use Cache
+ * @description Whether or not to use the cache
+ * @default true
+ */
+ use_cache?: boolean;
+ /** @description The image to infill */
+ image?: components["schemas"]["ImageField"];
+ /**
+ * Tile Width
+ * @description Width of the tile
+ * @default 64
+ */
+ tile_width?: number;
+ /**
+ * Tile Height
+ * @description Height of the tile
+ * @default 64
+ */
+ tile_height?: number;
+ /**
+ * @description The min threshold for color
+ * @default {
+ * "r": 0,
+ * "g": 0,
+ * "b": 0,
+ * "a": 255
+ * }
+ */
+ min_color?: components["schemas"]["ColorField"];
+ /**
+ * @description The max threshold for color
+ * @default {
+ * "r": 255,
+ * "g": 255,
+ * "b": 255,
+ * "a": 255
+ * }
+ */
+ max_color?: components["schemas"]["ColorField"];
+ /**
+ * type
+ * @default infill_mosaic
+ * @constant
+ */
+ type: "infill_mosaic";
+ };
/**
* Multiply Integers
* @description Multiplies two numbers