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