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)
{