Skip to content

Commit e4f477d

Browse files
committed
使用JDK17重新编译打包zxing模组,增强反色二维码读取能力
1 parent 6b2148d commit e4f477d

File tree

6 files changed

+86
-62
lines changed

6 files changed

+86
-62
lines changed
File renamed without changes.
622 KB
Binary file not shown.

pom.xml

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@
147147
<artifactId>ApacheCommons</artifactId>
148148
<version>1.1</version>
149149
<scope>system</scope>
150-
<systemPath>${pom.basedir}/lib/ApacheCommons-1.1.jar</systemPath>
150+
<systemPath>${pom.basedir}/lib/ApacheCommons-onjdk17-1.1.jar</systemPath>
151151
</dependency>
152152

153153
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
@@ -159,14 +159,10 @@
159159

160160
<dependency>
161161
<groupId>com.google.zxing</groupId>
162-
<artifactId>core</artifactId>
163-
<version>3.5.0</version>
164-
</dependency>
165-
166-
<dependency>
167-
<groupId>com.google.zxing</groupId>
168-
<artifactId>javase</artifactId>
162+
<artifactId>core-javase</artifactId>
169163
<version>3.5.0</version>
164+
<scope>system</scope>
165+
<systemPath>${pom.basedir}/lib/zxing-core-javase-onjdk17-3.5.0.jar</systemPath>
170166
</dependency>
171167

172168
<!-- <dependency>-->

src/main/java/ffffffff0x/beryenigma/App/Implement/Tools/Image/QRcode/Image_QRcode.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@ public static BufferedImage encode(QRcodeParameters parameters) throws WriterExc
3636
public static String decode(String filepath, String characterSet) throws IOException, NotFoundException {
3737
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filepath));
3838
LuminanceSource source = new BufferedImageLuminanceSource(bufferedImage);
39+
// source = new InvertedLuminanceSource(source);
40+
return getResultString(characterSet, source);
41+
}
42+
43+
public static String decodeReverseColor(String filepath, String characterSet) throws IOException, NotFoundException {
44+
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(filepath));
45+
LuminanceSource source = new InvertedLuminanceSource(new BufferedImageLuminanceSource(bufferedImage));
46+
return getResultString(characterSet, source);
47+
}
48+
49+
private static String getResultString(String characterSet, LuminanceSource source) throws NotFoundException {
3950
Binarizer binarizer = new HybridBinarizer(source);
4051
BinaryBitmap bitmap = new BinaryBitmap(binarizer);
4152
HashMap<DecodeHintType, Object> decodeHints = new HashMap<>();

src/main/java/ffffffff0x/beryenigma/App/View/Modules/Tools/Image/QRcode/QRcodeController.java

Lines changed: 71 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -85,60 +85,9 @@ protected void initialize() {
8585
public void ONClickConfirm() {
8686
super.ONClickConfirm();
8787
if (JTB_modeSelect.isSelected()) {
88-
if (JTA_src.getText().length() > 0) {
89-
JSP_running.setVisible(true);
90-
qRcodeParameters.setInputContent(JTA_src.getText());
91-
qRcodeParameters.setBackgroundColor(colorStringConvert(JCP_BKColor.getValue().toString()));
92-
qRcodeParameters.setQrCodeColor(colorStringConvert(JCP_QRColor.getValue().toString()));
93-
qRcodeParameters.setCharacterSet(JCB_charset.getValue().toString());
94-
qRcodeParameters.setBarcodeFormat(getBarcodeFormat(JCB_barcodeFormat.getValue()));
95-
qRcodeParameters.setImgWidth(!JTF_outImgWidth.getText().equals("") ? Integer.parseInt(JTF_outImgWidth.getText()) : 400);
96-
qRcodeParameters.setImgHeight(!JTF_outImgHeight.getText().equals("") ? Integer.parseInt(JTF_outImgHeight.getText()) : 400);
97-
qRcodeParameters.setMargin(JCB_imgMargin.getValue());
98-
new Thread(() -> {
99-
try {
100-
outBufferedImage = Image_QRcode.encode(qRcodeParameters);
101-
Platform.runLater(() -> {
102-
IMG_outImg.setFitHeight(JBT_outImg.getHeight() - margins);
103-
IMG_outImg.setImage(ViewUtils.convertToFxImage(outBufferedImage));
104-
JBT_outImg.setGraphic(IMG_outImg);
105-
JSP_running.setVisible(false);
106-
});
107-
} catch (WriterException | IOException e) {
108-
Platform.runLater(() -> {
109-
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
110-
JSP_running.setVisible(false);
111-
});
112-
throw new RuntimeException(e);
113-
}
114-
}).start();
115-
} else {
116-
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
117-
JSP_running.setVisible(false);
118-
}
88+
encode();
11989
} else {
120-
if (ImgFile != null) {
121-
JSP_running.setVisible(true);
122-
new Thread(() -> {
123-
try {
124-
JTA_dst.setText(Image_QRcode.decode(ImgFile.getPath(), JCB_charset.getValue().toString()));
125-
Platform.runLater(() -> JSP_running.setVisible(false));
126-
} catch (IOException e) {
127-
Platform.runLater(() -> {
128-
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
129-
JSP_running.setVisible(false);
130-
});
131-
} catch (NotFoundException e) {
132-
Platform.runLater(() -> {
133-
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_noQRcode"));
134-
JSP_running.setVisible(false);
135-
});
136-
}
137-
}).start();
138-
} else {
139-
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
140-
JSP_running.setVisible(false);
141-
}
90+
decode();
14291
}
14392
}
14493

@@ -294,4 +243,73 @@ private int colorStringConvert(String colorString) {
294243
}
295244
return new BigInteger(sb.toString(), 16).intValue();
296245
}
246+
247+
private void decode() {
248+
if (ImgFile != null) {
249+
JSP_running.setVisible(true);
250+
new Thread(() -> {
251+
try {
252+
JTA_dst.setText(Image_QRcode.decode(ImgFile.getPath(), JCB_charset.getValue().toString()));
253+
Platform.runLater(() -> JSP_running.setVisible(false));
254+
} catch (IOException e) {
255+
Platform.runLater(() -> {
256+
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
257+
JSP_running.setVisible(false);
258+
});
259+
} catch (NotFoundException e) {
260+
try {
261+
JTA_dst.setText(Image_QRcode.decodeReverseColor(ImgFile.getPath(), JCB_charset.getValue().toString()));
262+
JSP_running.setVisible(false);
263+
} catch (IOException ex) {
264+
Platform.runLater(() -> {
265+
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), ex.getMessage());
266+
JSP_running.setVisible(false);
267+
});
268+
} catch (NotFoundException ex) {
269+
Platform.runLater(() -> {
270+
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_noQRcode"));
271+
JSP_running.setVisible(false);
272+
});
273+
}
274+
}
275+
}).start();
276+
} else {
277+
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
278+
JSP_running.setVisible(false);
279+
}
280+
}
281+
282+
private void encode() {
283+
if (JTA_src.getText().length() > 0) {
284+
JSP_running.setVisible(true);
285+
qRcodeParameters.setInputContent(JTA_src.getText());
286+
qRcodeParameters.setBackgroundColor(colorStringConvert(JCP_BKColor.getValue().toString()));
287+
qRcodeParameters.setQrCodeColor(colorStringConvert(JCP_QRColor.getValue().toString()));
288+
qRcodeParameters.setCharacterSet(JCB_charset.getValue().toString());
289+
qRcodeParameters.setBarcodeFormat(getBarcodeFormat(JCB_barcodeFormat.getValue()));
290+
qRcodeParameters.setImgWidth(!JTF_outImgWidth.getText().equals("") ? Integer.parseInt(JTF_outImgWidth.getText()) : 400);
291+
qRcodeParameters.setImgHeight(!JTF_outImgHeight.getText().equals("") ? Integer.parseInt(JTF_outImgHeight.getText()) : 400);
292+
qRcodeParameters.setMargin(JCB_imgMargin.getValue());
293+
new Thread(() -> {
294+
try {
295+
outBufferedImage = Image_QRcode.encode(qRcodeParameters);
296+
Platform.runLater(() -> {
297+
IMG_outImg.setFitHeight(JBT_outImg.getHeight() - margins);
298+
IMG_outImg.setImage(ViewUtils.convertToFxImage(outBufferedImage));
299+
JBT_outImg.setGraphic(IMG_outImg);
300+
JSP_running.setVisible(false);
301+
});
302+
} catch (WriterException | IOException e) {
303+
Platform.runLater(() -> {
304+
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), e.getMessage());
305+
JSP_running.setVisible(false);
306+
});
307+
throw new RuntimeException(e);
308+
}
309+
}).start();
310+
} else {
311+
ViewUtils.alertPane((Stage) JLB_title.getScene().getWindow(), Init.getLanguage("Warning"), Init.getLanguage("ErrorMessage_notNull"));
312+
JSP_running.setVisible(false);
313+
}
314+
}
297315
}

src/main/java/module-info.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@
1111
requires java.naming;
1212
requires java.sql;
1313
requires com.google.zxing;
14-
requires com.google.zxing.javase;
1514
}

0 commit comments

Comments
 (0)