diff --git a/src/Text2Image/T2IParamSet.cs b/src/Text2Image/T2IParamSet.cs index 99584eb19..65c351076 100644 --- a/src/Text2Image/T2IParamSet.cs +++ b/src/Text2Image/T2IParamSet.cs @@ -2,6 +2,7 @@ using SwarmUI.Accounts; using SwarmUI.Core; using SwarmUI.Utils; +using System.IO; namespace SwarmUI.Text2Image; @@ -153,6 +154,10 @@ Image imageFor(string val) { return Image.FromDataString(val); } + if (File.Exists(val)) + { + return Image.FromFilePath(val); + } return new Image(val, Image.ImageType.IMAGE, "png"); } object obj = param.Type switch diff --git a/src/Text2Image/T2IParamTypes.cs b/src/Text2Image/T2IParamTypes.cs index 522b25f92..1465706c9 100644 --- a/src/Text2Image/T2IParamTypes.cs +++ b/src/Text2Image/T2IParamTypes.cs @@ -994,10 +994,10 @@ public static string ValidateParam(T2IParamType type, string val, Session sessio { return ""; } - if (!ValidBase64Matcher.IsOnlyMatches(val) || val.Length < 10) + if ((!ValidBase64Matcher.IsOnlyMatches(val) || val.Length < 10) && !File.Exists(val)) { string shortText = val.Length > 10 ? val[..10] + "..." : val; - throw new SwarmUserErrorException($"Invalid image value for param {type.Name} - '{origVal}' - must be a valid base64 string - got '{shortText}'"); + throw new SwarmUserErrorException($"Invalid image value for param {type.Name} - '{origVal}' - must be a valid base64 string or file path - got '{shortText}'"); } return origVal; case T2IParamDataType.IMAGE_LIST: @@ -1012,10 +1012,10 @@ public static string ValidateParam(T2IParamType type, string val, Session sessio { continue; } - if (!ValidBase64Matcher.IsOnlyMatches(partVal) || partVal.Length < 10) + if ((!ValidBase64Matcher.IsOnlyMatches(partVal) || partVal.Length < 10) && !File.Exists(partVal)) { string shortText = partVal.Length > 10 ? partVal[..10] + "..." : partVal; - throw new SwarmUserErrorException($"Invalid image-list value for param {type.Name} - '{origVal}' - must be a valid base64 string - got '{shortText}'"); + throw new SwarmUserErrorException($"Invalid image-list value for param {type.Name} - '{origVal}' - must be a valid base64 string or file path - got '{shortText}'"); } } return origVal; diff --git a/src/Utils/Image.cs b/src/Utils/Image.cs index 4c252747d..00860fd7b 100644 --- a/src/Utils/Image.cs +++ b/src/Utils/Image.cs @@ -63,6 +63,12 @@ public static Image FromDataString(string data) return new Image(data.ToString().After(";base64,"), ImageType.IMAGE, "png"); } + /// Creates an image object from a local file path + public static Image FromFilePath(string path) + { + return new Image(ISImage.Load(path)); + } + /// Construct an image from Base64 text. public Image(string base64, ImageType type, string extension) : this(Convert.FromBase64String(base64), type, extension) {