Skip to content

Commit 1cb6a34

Browse files
committed
添加印章生成工具
1 parent acdb78f commit 1cb6a34

10 files changed

Lines changed: 993 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ xJavaFxTool是使用javaFx开发的实用小工具集,利用业余时间把工
100100
49. ClipboardHistoryTool:剪贴板历史工具
101101
50. FileSearchTool:文件搜索工具
102102
51. Mp3ConvertTool:Mp3转换工具(目前支持网易云音乐.ncm、QQ音乐.qmc转换为mp3格式)
103+
52. SealBuilderTool:印章生成工具
103104

104105
传输工具目前支持功能如下:
105106

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.xwintop.xJavaFxTool.controller.littleTools;
2+
3+
import com.xwintop.xJavaFxTool.services.littleTools.SealBuilderToolService;
4+
import com.xwintop.xJavaFxTool.utils.JavaFxViewUtil;
5+
import com.xwintop.xJavaFxTool.view.littleTools.SealBuilderToolView;
6+
import javafx.event.ActionEvent;
7+
import javafx.fxml.FXML;
8+
import javafx.scene.control.Spinner;
9+
import javafx.scene.paint.Color;
10+
import lombok.Getter;
11+
import lombok.Setter;
12+
import lombok.extern.slf4j.Slf4j;
13+
14+
import java.awt.*;
15+
import java.net.URL;
16+
import java.util.ResourceBundle;
17+
18+
@Getter
19+
@Setter
20+
@Slf4j
21+
public class SealBuilderToolController extends SealBuilderToolView {
22+
private SealBuilderToolService sealBuilderToolService = new SealBuilderToolService(this);
23+
24+
@Override
25+
public void initialize(URL location, ResourceBundle resources) {
26+
initView();
27+
initEvent();
28+
initService();
29+
}
30+
31+
private void initView() {
32+
onColorColorPicker.setValue(Color.RED);
33+
JavaFxViewUtil.setSpinnerValueFactory(fontSizeSpinner, 0, Integer.MAX_VALUE, 35);
34+
JavaFxViewUtil.setSpinnerValueFactory(fontSizeSpinner1, 0, Integer.MAX_VALUE, 0);
35+
JavaFxViewUtil.setSpinnerValueFactory(fontSizeSpinner2, 0, Integer.MAX_VALUE, 22);
36+
JavaFxViewUtil.setSpinnerValueFactory(fontSizeSpinner3, 0, Integer.MAX_VALUE, 100);
37+
JavaFxViewUtil.setSpinnerValueFactory(fontSpaceSpinner, 0, Double.MAX_VALUE, 35);
38+
JavaFxViewUtil.setSpinnerValueFactory(fontSpaceSpinner1, 0, Double.MAX_VALUE, 0);
39+
JavaFxViewUtil.setSpinnerValueFactory(fontSpaceSpinner2, 0, Double.MAX_VALUE, 10);
40+
JavaFxViewUtil.setSpinnerValueFactory(fontSpaceSpinner3, 0, Double.MAX_VALUE, 0);
41+
JavaFxViewUtil.setSpinnerValueFactory(marginSizeSpinner, 0, Integer.MAX_VALUE, 10);
42+
JavaFxViewUtil.setSpinnerValueFactory(marginSizeSpinner1, 0, Integer.MAX_VALUE, 0);
43+
JavaFxViewUtil.setSpinnerValueFactory(marginSizeSpinner2, 0, Integer.MAX_VALUE, 68);
44+
JavaFxViewUtil.setSpinnerValueFactory(marginSizeSpinner3, 0, Integer.MAX_VALUE, 0);
45+
JavaFxViewUtil.setSpinnerValueFactory(lineSizeSpinner, 0, Integer.MAX_VALUE, 5);
46+
JavaFxViewUtil.setSpinnerValueFactory(lineSizeSpinner1, 0, Integer.MAX_VALUE, 0);
47+
JavaFxViewUtil.setSpinnerValueFactory(lineSizeSpinner2, 0, Integer.MAX_VALUE, 0);
48+
JavaFxViewUtil.setSpinnerValueFactory(circleWidthSpinner, 0, Integer.MAX_VALUE, 140);
49+
JavaFxViewUtil.setSpinnerValueFactory(circleWidthSpinner1, 0, Integer.MAX_VALUE, 0);
50+
JavaFxViewUtil.setSpinnerValueFactory(circleWidthSpinner2, 0, Integer.MAX_VALUE, 0);
51+
JavaFxViewUtil.setSpinnerValueFactory(circleHeightSpinner, 0, Integer.MAX_VALUE, 140);
52+
JavaFxViewUtil.setSpinnerValueFactory(circleHeightSpinner1, 0, Integer.MAX_VALUE, 0);
53+
JavaFxViewUtil.setSpinnerValueFactory(circleHeightSpinner2, 0, Integer.MAX_VALUE, 0);
54+
JavaFxViewUtil.setSpinnerValueFactory(imageSizeSpinner, 0, Integer.MAX_VALUE, 300);
55+
56+
String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
57+
fontFamilyChoiceBox.getItems().addAll(fontNames);
58+
fontFamilyChoiceBox.setValue("宋体");
59+
fontFamilyChoiceBox1.getItems().addAll(fontNames);
60+
fontFamilyChoiceBox1.setValue("宋体");
61+
fontFamilyChoiceBox2.getItems().addAll(fontNames);
62+
fontFamilyChoiceBox2.setValue("宋体");
63+
fontFamilyChoiceBox3.getItems().addAll(fontNames);
64+
fontFamilyChoiceBox3.setValue("宋体");
65+
}
66+
67+
private void initEvent() {
68+
Spinner[] spinners = new Spinner[]{fontSizeSpinner, fontSizeSpinner1, fontSizeSpinner2, fontSizeSpinner3,
69+
fontSpaceSpinner, fontSpaceSpinner1, fontSpaceSpinner2, fontSpaceSpinner3,
70+
marginSizeSpinner, marginSizeSpinner1, marginSizeSpinner2, marginSizeSpinner3,
71+
lineSizeSpinner, lineSizeSpinner1, lineSizeSpinner2,
72+
circleWidthSpinner, circleWidthSpinner1, circleWidthSpinner2,
73+
circleHeightSpinner, circleHeightSpinner1, circleHeightSpinner2};
74+
for (Spinner spinner : spinners) {
75+
spinner.valueProperty().addListener((observable, oldValue, newValue) -> {
76+
builderAction();
77+
});
78+
}
79+
}
80+
81+
private void initService() {
82+
}
83+
84+
@FXML
85+
private void saveAction(ActionEvent event) {
86+
builderAction();
87+
}
88+
89+
@FXML
90+
private void builderAction() {
91+
try {
92+
sealBuilderToolService.builderAction();
93+
} catch (Exception e) {
94+
log.error("生成错误:", e);
95+
}
96+
}
97+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.xwintop.xJavaFxTool.services.littleTools;
2+
3+
import com.xwintop.xJavaFxTool.controller.littleTools.SealBuilderToolController;
4+
import com.xwintop.xJavaFxTool.utils.ImgToolUtil;
5+
import com.xwintop.xJavaFxTool.utils.SealUtil;
6+
import javafx.embed.swing.SwingFXUtils;
7+
import javafx.scene.image.Image;
8+
import lombok.Getter;
9+
import lombok.Setter;
10+
import lombok.extern.slf4j.Slf4j;
11+
12+
import java.awt.image.BufferedImage;
13+
14+
@Getter
15+
@Setter
16+
@Slf4j
17+
public class SealBuilderToolService {
18+
private SealBuilderToolController sealBuilderToolController;
19+
20+
public SealBuilderToolService(SealBuilderToolController sealBuilderToolController) {
21+
this.sealBuilderToolController = sealBuilderToolController;
22+
}
23+
24+
public void builderAction() throws Exception {
25+
SealUtil.SealCircle borderCircle = new SealUtil.SealCircle();
26+
borderCircle.setLineSize(sealBuilderToolController.getLineSizeSpinner().getValue());
27+
borderCircle.setCircleWidth(sealBuilderToolController.getCircleWidthSpinner().getValue());
28+
borderCircle.setCircleHeight(sealBuilderToolController.getCircleHeightSpinner().getValue());
29+
SealUtil.SealFont mainFont = new SealUtil.SealFont();
30+
mainFont.setFontText(sealBuilderToolController.getContentTextField().getText().trim());
31+
mainFont.setFontFamily(sealBuilderToolController.getFontFamilyChoiceBox().getValue());
32+
mainFont.setFontSize(sealBuilderToolController.getFontSizeSpinner().getValue());
33+
mainFont.setFontSpace(sealBuilderToolController.getFontSpaceSpinner().getValue());
34+
mainFont.setMarginSize(sealBuilderToolController.getMarginSizeSpinner().getValue());
35+
mainFont.setIsBold(sealBuilderToolController.getIsBoldCheckBox().isSelected());
36+
SealUtil.SealFont viceFont = new SealUtil.SealFont();
37+
viceFont.setFontText(sealBuilderToolController.getContentTextField1().getText().trim());
38+
viceFont.setFontFamily(sealBuilderToolController.getFontFamilyChoiceBox1().getValue());
39+
viceFont.setFontSize(sealBuilderToolController.getFontSizeSpinner1().getValue());
40+
viceFont.setFontSpace(sealBuilderToolController.getFontSpaceSpinner1().getValue());
41+
viceFont.setMarginSize(sealBuilderToolController.getMarginSizeSpinner1().getValue());
42+
viceFont.setIsBold(sealBuilderToolController.getIsBoldCheckBox1().isSelected());
43+
SealUtil.SealFont titleFont = new SealUtil.SealFont();
44+
titleFont.setFontText(sealBuilderToolController.getContentTextField2().getText().trim());
45+
titleFont.setFontFamily(sealBuilderToolController.getFontFamilyChoiceBox2().getValue());
46+
titleFont.setFontSize(sealBuilderToolController.getFontSizeSpinner2().getValue());
47+
titleFont.setFontSpace(sealBuilderToolController.getFontSpaceSpinner2().getValue());
48+
titleFont.setMarginSize(sealBuilderToolController.getMarginSizeSpinner2().getValue());
49+
titleFont.setIsBold(sealBuilderToolController.getIsBoldCheckBox2().isSelected());
50+
SealUtil.SealFont centerFont = new SealUtil.SealFont();
51+
centerFont.setFontText(sealBuilderToolController.getContentTextField3().getText().trim());
52+
centerFont.setFontFamily(sealBuilderToolController.getFontFamilyChoiceBox3().getValue());
53+
centerFont.setFontSize(sealBuilderToolController.getFontSizeSpinner3().getValue());
54+
centerFont.setFontSpace(sealBuilderToolController.getFontSpaceSpinner3().getValue());
55+
centerFont.setMarginSize(sealBuilderToolController.getMarginSizeSpinner3().getValue());
56+
centerFont.setIsBold(sealBuilderToolController.getIsBoldCheckBox3().isSelected());
57+
58+
BufferedImage bufferedImage = SealUtil.builder()
59+
.size(sealBuilderToolController.getImageSizeSpinner().getValue())
60+
.color(ImgToolUtil.getAwtColor(sealBuilderToolController.getOnColorColorPicker().getValue()))
61+
.borderCircle(borderCircle)
62+
.mainFont(mainFont)
63+
.centerFont(centerFont)
64+
.titleFont(titleFont)
65+
.build()
66+
.draw();
67+
Image image = SwingFXUtils.toFXImage(bufferedImage, null);
68+
sealBuilderToolController.getCodeImageView().setImage(image);
69+
}
70+
}

src/main/java/com/xwintop/xJavaFxTool/utils/ImgToolUtil.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,4 +542,9 @@ public static javafx.scene.image.Image pixWithImage(int type, javafx.scene.image
542542
}
543543
return null;
544544
}
545+
546+
public static Color getAwtColor(javafx.scene.paint.Color color) {
547+
java.awt.Color colorw = new java.awt.Color((float) color.getRed(), (float) color.getGreen(), (float) color.getBlue(), (float) color.getOpacity());
548+
return colorw;
549+
}
545550
}

0 commit comments

Comments
 (0)