diff --git a/lib/ApacheCommons-1.1.jar b/lib/ApacheCommons-onjdk17-1.1.jar
similarity index 100%
rename from lib/ApacheCommons-1.1.jar
rename to lib/ApacheCommons-onjdk17-1.1.jar
diff --git a/lib/zxing-core-javase-onjdk17-3.5.0.jar b/lib/zxing-core-javase-onjdk17-3.5.0.jar
new file mode 100644
index 0000000..e582cc9
Binary files /dev/null and b/lib/zxing-core-javase-onjdk17-3.5.0.jar differ
diff --git a/pom.xml b/pom.xml
index a6d36bb..b720084 100644
--- a/pom.xml
+++ b/pom.xml
@@ -147,7 +147,7 @@
ApacheCommons
1.1
system
- ${pom.basedir}/lib/ApacheCommons-1.1.jar
+ ${pom.basedir}/lib/ApacheCommons-onjdk17-1.1.jar
@@ -159,14 +159,10 @@
com.google.zxing
- core
- 3.5.0
-
-
-
- com.google.zxing
- javase
+ core-javase
3.5.0
+ system
+ ${pom.basedir}/lib/zxing-core-javase-onjdk17-3.5.0.jar
diff --git a/src/main/java/ffffffff0x/beryenigma/App/Implement/Tools/Image/QRcode/Image_QRcode.java b/src/main/java/ffffffff0x/beryenigma/App/Implement/Tools/Image/QRcode/Image_QRcode.java
index 988d1c1..083dd66 100644
--- a/src/main/java/ffffffff0x/beryenigma/App/Implement/Tools/Image/QRcode/Image_QRcode.java
+++ b/src/main/java/ffffffff0x/beryenigma/App/Implement/Tools/Image/QRcode/Image_QRcode.java
@@ -36,6 +36,17 @@ public static BufferedImage encode(QRcodeParameters parameters) throws WriterExc
public static String decode(String filepath, String characterSet) throws IOException, NotFoundException {
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filepath));
LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage);
+// source = new InvertedLuminanceSource(source);
+ return getResultString(characterSet, source);
+ }
+
+ public static String decodeReverseColor(String filepath, String characterSet) throws IOException, NotFoundException {
+ BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filepath));
+ LuminanceSource source = new InvertedLuminanceSource(new BufferedImageLuminanceSource(bufferedImage));
+ return getResultString(characterSet, source);
+ }
+
+ private static String getResultString(String characterSet, LuminanceSource source) throws NotFoundException {
Binarizer binarizer = new HybridBinarizer(source);
BinaryBitmap bitmap = new BinaryBitmap(binarizer);
HashMap decodeHints = new HashMap<>();
diff --git a/src/main/java/ffffffff0x/beryenigma/App/View/Modules/Tools/Image/QRcode/QRcodeController.java b/src/main/java/ffffffff0x/beryenigma/App/View/Modules/Tools/Image/QRcode/QRcodeController.java
index 77ef28b..390bd6d 100644
--- a/src/main/java/ffffffff0x/beryenigma/App/View/Modules/Tools/Image/QRcode/QRcodeController.java
+++ b/src/main/java/ffffffff0x/beryenigma/App/View/Modules/Tools/Image/QRcode/QRcodeController.java
@@ -85,60 +85,9 @@ protected void initialize() {
public void ONClickConfirm() {
super.ONClickConfirm();
if (JTB_modeSelect.isSelected()) {
- if (JTA_src.getText().length() > 0) {
- JSP_running.setVisible(true);
- qRcodeParameters.setInputContent(JTA_src.getText());
- qRcodeParameters.setBackgroundColor(colorStringConvert(JCP_BKColor.getValue().toString()));
- qRcodeParameters.setQrCodeColor(colorStringConvert(JCP_QRColor.getValue().toString()));
- qRcodeParameters.setCharacterSet(JCB_charset.getValue().toString());
- qRcodeParameters.setBarcodeFormat(getBarcodeFormat(JCB_barcodeFormat.getValue()));
- qRcodeParameters.setImgWidth(!JTF_outImgWidth.getText().equals("") ? Integer.parseInt(JTF_outImgWidth.getText()) : 400);
- qRcodeParameters.setImgHeight(!JTF_outImgHeight.getText().equals("") ? Integer.parseInt(JTF_outImgHeight.getText()) : 400);
- qRcodeParameters.setMargin(JCB_imgMargin.getValue());
- new Thread(() -> {
- try {
- outBufferedImage = Image_QRcode.encode(qRcodeParameters);
- Platform.runLater(() -> {
- IMG_outImg.setFitHeight(JBT_outImg.getHeight() - margins);
- IMG_outImg.setImage(ViewUtils.convertToFxImage(outBufferedImage));
- JBT_outImg.setGraphic(IMG_outImg);
- JSP_running.setVisible(false);
- });
- } catch (WriterException | IOException e) {
- Platform.runLater(() -> {
- ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
- JSP_running.setVisible(false);
- });
- throw new RuntimeException(e);
- }
- }).start();
- } else {
- ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
- JSP_running.setVisible(false);
- }
+ encode();
} else {
- if (ImgFile != null) {
- JSP_running.setVisible(true);
- new Thread(() -> {
- try {
- JTA_dst.setText(Image_QRcode.decode(ImgFile.getPath(), JCB_charset.getValue().toString()));
- Platform.runLater(() -> JSP_running.setVisible(false));
- } catch (IOException e) {
- Platform.runLater(() -> {
- ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
- JSP_running.setVisible(false);
- });
- } catch (NotFoundException e) {
- Platform.runLater(() -> {
- ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_noQRcode"));
- JSP_running.setVisible(false);
- });
- }
- }).start();
- } else {
- ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
- JSP_running.setVisible(false);
- }
+ decode();
}
}
@@ -294,4 +243,73 @@ private int colorStringConvert(String colorString) {
}
return new BigInteger(sb.toString(), 16).intValue();
}
+
+ private void decode() {
+ if (ImgFile != null) {
+ JSP_running.setVisible(true);
+ new Thread(() -> {
+ try {
+ JTA_dst.setText(Image_QRcode.decode(ImgFile.getPath(), JCB_charset.getValue().toString()));
+ Platform.runLater(() -> JSP_running.setVisible(false));
+ } catch (IOException e) {
+ Platform.runLater(() -> {
+ ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
+ JSP_running.setVisible(false);
+ });
+ } catch (NotFoundException e) {
+ try {
+ JTA_dst.setText(Image_QRcode.decodeReverseColor(ImgFile.getPath(), JCB_charset.getValue().toString()));
+ JSP_running.setVisible(false);
+ } catch (IOException ex) {
+ Platform.runLater(() -> {
+ ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), ex.getMessage());
+ JSP_running.setVisible(false);
+ });
+ } catch (NotFoundException ex) {
+ Platform.runLater(() -> {
+ ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_noQRcode"));
+ JSP_running.setVisible(false);
+ });
+ }
+ }
+ }).start();
+ } else {
+ ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
+ JSP_running.setVisible(false);
+ }
+ }
+
+ private void encode() {
+ if (JTA_src.getText().length() > 0) {
+ JSP_running.setVisible(true);
+ qRcodeParameters.setInputContent(JTA_src.getText());
+ qRcodeParameters.setBackgroundColor(colorStringConvert(JCP_BKColor.getValue().toString()));
+ qRcodeParameters.setQrCodeColor(colorStringConvert(JCP_QRColor.getValue().toString()));
+ qRcodeParameters.setCharacterSet(JCB_charset.getValue().toString());
+ qRcodeParameters.setBarcodeFormat(getBarcodeFormat(JCB_barcodeFormat.getValue()));
+ qRcodeParameters.setImgWidth(!JTF_outImgWidth.getText().equals("") ? Integer.parseInt(JTF_outImgWidth.getText()) : 400);
+ qRcodeParameters.setImgHeight(!JTF_outImgHeight.getText().equals("") ? Integer.parseInt(JTF_outImgHeight.getText()) : 400);
+ qRcodeParameters.setMargin(JCB_imgMargin.getValue());
+ new Thread(() -> {
+ try {
+ outBufferedImage = Image_QRcode.encode(qRcodeParameters);
+ Platform.runLater(() -> {
+ IMG_outImg.setFitHeight(JBT_outImg.getHeight() - margins);
+ IMG_outImg.setImage(ViewUtils.convertToFxImage(outBufferedImage));
+ JBT_outImg.setGraphic(IMG_outImg);
+ JSP_running.setVisible(false);
+ });
+ } catch (WriterException | IOException e) {
+ Platform.runLater(() -> {
+ ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
+ JSP_running.setVisible(false);
+ });
+ throw new RuntimeException(e);
+ }
+ }).start();
+ } else {
+ ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
+ JSP_running.setVisible(false);
+ }
+ }
}
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index 70bc5e6..56721ff 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -11,5 +11,4 @@
requires java.naming;
requires java.sql;
requires com.google.zxing;
- requires com.google.zxing.javase;
}
\ No newline at end of file