diff --git a/README.md b/README.md
index db10ae2..7babdbf 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,11 @@
Java binding project of [stable-diffusion.cpp](https://github.com/leejet/stable-diffusion.cpp)
+## Support platforms:
+Windows: x86_64
+Linux: x86_64
+OSX: x86_64
+
## Usage
@@ -23,7 +28,7 @@ Java binding project of [stable-diffusion.cpp](https://github.com/leejet/stable-
org.javaai.stablediffusion
StableDiffusionApi
- 1.0.0
+ 1.0.4
```
@@ -74,6 +79,8 @@ for (int i = 0; i < imgs.getResultImages().size(); i ++) {
+
+
### img2img Example:
Input previous generated image, and give the prompt:
##### a lovely cat with blue eyes
@@ -107,8 +114,24 @@ for (int i = 0; i < imgs.getResultImages().size(); i ++) {
+## Don't forget close StableDiffution instance manually:
+### Java Code:
+```Java
+StableDiffusion sd = new StableDiffusion();
+
+try {
+ // Do something...
+} finally {
+ sd.close();
+}
+```
-
+### Example to custom log output:
+``` Java
+Util.setSDLogCallback((SDLogLevel, file, line, log) -> {
+ System.out.println(SDLogUtil.formatLog(SDLogLevel, file, line, log));
+});
+```
diff --git a/StableDiffusionApi/pom.xml b/StableDiffusionApi/pom.xml
index 70ddd02..a1ca617 100644
--- a/StableDiffusionApi/pom.xml
+++ b/StableDiffusionApi/pom.xml
@@ -6,7 +6,7 @@
org.javaai.stablediffusion
StableDiffusionApi
- 1.0.0
+ 1.0.4
StableDiffusionApi
StableDiffusionApi
@@ -56,6 +56,14 @@
commons-collections4
4.4
+
+
+
+ commons-io
+ commons-io
+ 2.7
+
+
@@ -210,6 +218,9 @@
+
+
+
diff --git a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/SDLogCallback.java b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/SDLogCallback.java
new file mode 100644
index 0000000..cf2350d
--- /dev/null
+++ b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/SDLogCallback.java
@@ -0,0 +1,12 @@
+package org.javaai.stablediffusion.api;
+
+public interface SDLogCallback {
+
+
+
+
+ public void onSDLogCallback(int SDLogLevel, String file, int line, String log);
+
+
+
+}
diff --git a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/SDLogUtil.java b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/SDLogUtil.java
new file mode 100644
index 0000000..7267da0
--- /dev/null
+++ b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/SDLogUtil.java
@@ -0,0 +1,19 @@
+package org.javaai.stablediffusion.api;
+
+import org.apache.commons.io.FilenameUtils;
+import org.javaai.stablediffusion.api.enums.SDLogLevel;
+
+public class SDLogUtil {
+
+
+ public static String formatLog(int level, String file, int line, String log) {
+
+ String levelStr = SDLogLevel.toReadableString(level);
+ String format = "[" + levelStr + "] " + FilenameUtils.getName(file) + ":" + String.format("%-4d", line) + " - " + log;
+
+ return format;
+ }
+
+
+
+}
diff --git a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/StableDiffusion.java b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/StableDiffusion.java
index db173dc..ef4ed26 100644
--- a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/StableDiffusion.java
+++ b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/StableDiffusion.java
@@ -93,7 +93,7 @@ public StableDiffusion(Integer n_threads,
protected static native long newInstance(int n_threads, boolean vae_decode_only, String taesd_path,
- String esrgan_path, boolean free_params_immediately, Boolean vae_tiling, String lora_model_dir, int rng_type);
+ String esrgan_path, boolean free_params_immediately, boolean vae_tiling, String lora_model_dir, int rng_type);
@@ -165,7 +165,7 @@ protected static native boolean loadFromFile0(
long pointer,
String model_path, String vae_path, int ggml_type_value, int schedule);
-
+
/**
@@ -180,6 +180,20 @@ public StableResult txt2img(String prompt) {
return results;
}
+
+ /**
+ *
+ * @param prompt NotNull
+ * @param negative_prompt Nullable, default is empty string.
+ * @return results already converted to BGR color image.
+ */
+ public StableResult txt2img(String prompt, String negative_prompt) {
+ StableResult results = txt2img(prompt, negative_prompt,
+ null, null, null, null, null, null, null);
+
+ return results;
+ }
+
/**
*
* @param prompt NotNull
@@ -332,6 +346,24 @@ protected static native List txt2img0(
float cfg_scale, int width, int height, int sample_method,
int sample_steps, long seed, int batch_count);
+
+
+
+ /**
+ *
+ * @param img NotNull
+ * @param prompt NotNull
+ * @param negative_prompt Nullable, default is empty string.
+ * @return results already converted to BGR color image.
+ */
+ public StableResult img2img(
+ BufferedImage img, String prompt) {
+
+ StableResult results = img2img(img,
+ prompt, null, null, null, null, null, null, null, null);
+
+ return results;
+ }
@@ -343,7 +375,8 @@ protected static native List txt2img0(
* @param negative_prompt Nullable, default is empty string.
* @return results already converted to BGR color image.
*/
- public StableResult img2img(BufferedImage img, String prompt, String negative_prompt) {
+ public StableResult img2img(
+ BufferedImage img, String prompt, String negative_prompt) {
StableResult results = img2img(img,
prompt, negative_prompt, null, null, null, null, null, null, null);
diff --git a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/Util.java b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/Util.java
index 541e6de..688a2aa 100644
--- a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/Util.java
+++ b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/Util.java
@@ -6,6 +6,9 @@ public class Util {
+ private static SDLogCallback logCallback = null;
+
+
/**
*
* @param logLevel {@link SDLogLevel}
@@ -13,6 +16,42 @@ public class Util {
public static native void setSDLogLevel(int logLevel);
+ protected static native void enableSDLogCallback();
+
+
+ protected static native void disableSDLogCallback();
+
+
+ public static void onSDLogCallback(int SDLogLevel, String file, int line, String log) {
+ if (logCallback != null) {
+ logCallback.onSDLogCallback(SDLogLevel, file, line, log);
+ }
+ }
+
+
+ /**
+ *
+ * @param logCallback
+ */
+ public static void setSDLogCallback(SDLogCallback logCallback) {
+ Util.logCallback = logCallback;
+ if (Util.logCallback != null) {
+ enableSDLogCallback();
+ } else {
+ disableSDLogCallback();
+ }
+ }
+
+
+ public static void removeSDLogCallback() {
+ setSDLogCallback(null);
+ }
+
+
+
+
+
+
diff --git a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/enums/SDLogLevel.java b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/enums/SDLogLevel.java
index be7f178..de69dd1 100644
--- a/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/enums/SDLogLevel.java
+++ b/StableDiffusionApi/src/main/java/org/javaai/stablediffusion/api/enums/SDLogLevel.java
@@ -6,5 +6,31 @@ public class SDLogLevel {
public static final int INFO = 1;
public static final int WARN = 2;
public static final int ERROR = 3;
+
+
+
+ public static String toReadableString(int level) {
+
+ if (level == DEBUG) {
+ return "DEBUG";
+ }
+
+ if (level == INFO) {
+ return "INFO";
+ }
+
+ if (level == WARN) {
+ return "WARN";
+ }
+
+ if (level == ERROR) {
+ return "ERROR";
+ }
+
+ return null;
+
+ }
+
+
}
diff --git a/StableDiffusionConsole/pom.xml b/StableDiffusionConsole/pom.xml
index 4e086fc..60f7ad3 100644
--- a/StableDiffusionConsole/pom.xml
+++ b/StableDiffusionConsole/pom.xml
@@ -6,7 +6,7 @@
org.javaai.stablediffusion
StableDiffusionConsole
- 1.0.0
+ 1.0.4
StableDiffusionConsole
StableDiffusionConsole
@@ -90,7 +90,7 @@
org.javaai.stablediffusion
StableDiffusionApi
- 1.0.0
+ 1.0.4
diff --git a/StableDiffusionConsole/src/main/java/org/javaai/stablediffusion/console/Main.java b/StableDiffusionConsole/src/main/java/org/javaai/stablediffusion/console/Main.java
index c080d05..346c1c3 100644
--- a/StableDiffusionConsole/src/main/java/org/javaai/stablediffusion/console/Main.java
+++ b/StableDiffusionConsole/src/main/java/org/javaai/stablediffusion/console/Main.java
@@ -1,7 +1,9 @@
package org.javaai.stablediffusion.console;
+import org.javaai.stablediffusion.api.SDLogCallback;
import org.javaai.stablediffusion.api.StableDiffusion;
import org.javaai.stablediffusion.api.StableDiffusionLoader;
+import org.javaai.stablediffusion.api.Util;
public class Main {
@@ -11,6 +13,18 @@ public static void main(String[] args) throws Exception {
StableDiffusionLoader.loadShared();
StableDiffusion sd = new StableDiffusion();
+ Util.setSDLogCallback(new SDLogCallback() {
+
+ @Override
+ public void onSDLogCallback(int SDLogLevel, String file, int line, String log) {
+ System.out.println(log);
+ }
+ });
+
+ boolean loadFromFile = sd.loadFromFile("/Users/u/Desktop/models/sd-v1-4.ckpt", null, null, null);
+
+ System.out.println("load:" + loadFromFile);
+ sd.txt2img("test");
sd.close();
diff --git a/StableDiffusionExamples/pom.xml b/StableDiffusionExamples/pom.xml
index 85ffeaa..aa5a90c 100644
--- a/StableDiffusionExamples/pom.xml
+++ b/StableDiffusionExamples/pom.xml
@@ -6,7 +6,7 @@
org.javaai.stablediffusion
StableDiffusionExamples
- 1.0.0
+ 1.0.4
StableDiffusionExamples
StableDiffusionExamples
@@ -88,7 +88,7 @@
org.javaai.stablediffusion
StableDiffusionApi
- 1.0.0
+ 1.0.4
diff --git a/StableDiffusionExamples/src/test/java/org/javaai/stablediffusion/examples/StableDiffusionExamples.java b/StableDiffusionExamples/src/test/java/org/javaai/stablediffusion/examples/StableDiffusionExamples.java
index 4d373d0..fea9472 100644
--- a/StableDiffusionExamples/src/test/java/org/javaai/stablediffusion/examples/StableDiffusionExamples.java
+++ b/StableDiffusionExamples/src/test/java/org/javaai/stablediffusion/examples/StableDiffusionExamples.java
@@ -5,6 +5,7 @@
import javax.imageio.ImageIO;
+import org.javaai.stablediffusion.api.SDLogUtil;
import org.javaai.stablediffusion.api.StableDiffusion;
import org.javaai.stablediffusion.api.StableDiffusionLoader;
import org.javaai.stablediffusion.api.Util;
@@ -175,6 +176,11 @@ void testLoadModelWithLora() throws Exception {
@Test
void testTxt2Img() throws Exception {
+ // Example to custom log output:
+ Util.setSDLogCallback((SDLogLevel, file, line, log) -> {
+ System.out.println(SDLogUtil.formatLog(SDLogLevel, file, line, log));
+ });
+
StableDiffusion sd = createStableDifussionInstance();
try {
diff --git a/assets/sd-java-img2img-0.jpg b/assets/sd-java-img2img-0.jpg
index f543429..488d948 100644
Binary files a/assets/sd-java-img2img-0.jpg and b/assets/sd-java-img2img-0.jpg differ
diff --git a/assets/sd-java-txt2img-0.jpg b/assets/sd-java-txt2img-0.jpg
index 88e97c7..2a7475c 100644
Binary files a/assets/sd-java-txt2img-0.jpg and b/assets/sd-java-txt2img-0.jpg differ
diff --git a/pom.xml b/pom.xml
index 71c0a51..a95e29b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
org.javaai.stablediffusion
stable-diffussion.java
- 1.0.0
+ 1.0.4
pom
stable-diffussion.java
stable-diffussion.java