2024-09-09
深度学习
00

目录

Java
印章生成代码文档
1. SealConfiguration 印章配置
2. 主文字(Main Font)
3. 副文字(Vice Font)
4. 中心文字(Center Font)
5. 抬头文字(Title Font)
6. 印章图像配置
7. 公章生成
8. 私章生成
参数说明
Python

这里有个收费的印章制作:https://tools.kalvinbg.cn/convenience/seal

这里有个java的印章制作:https://github.com/xddun/SealUtil

这里还有一个别人的印章数据集:https://drive.usercontent.google.com/download?id=125SgEmHFUIzDexsrj2d3yMJdYMVhovti&export=download&authuser=0

image.png

本篇文章也用java制作一下印章数据集,可以应用于印章检测和印章识别。

Java

新建空的java工程:

image.png

将seal包拷贝进去,并全局替换包路径:

image.png

将Main也弄进去,包路径也需要改:

image.png

路径也修改一下:

image.png

就可以执行了,完整的Main是:

java
package org.example; import org.seal.SealUtil; import org.seal.configuration.SealCircle; import org.seal.configuration.SealConfiguration; import org.seal.configuration.SealFont; import java.awt.*; import java.io.IOException; public class Main { public static void main(String[] args) throws Exception { /** * 印章配置文件 */ SealConfiguration configuration = new SealConfiguration(); /** * 主文字 */ SealFont mainFont = new SealFont(); mainFont.setBold(true); mainFont.setFontFamily("楷体"); mainFont.setMarginSize(10); /**************************************************/ //mainFont.setFontText("欢乐无敌制图网淘宝店专用章"); //mainFont.setFontSize(35); //mainFont.setFontSpace(35.0); /**************************************************/ //mainFont.setFontText("ZHITUWANG CO.LTDECIDDO SH NANNINGSHI"); //mainFont.setFontSize(20); //mainFont.setFontSpace(15.0); /**************************************************/ mainFont.setFontText("欢乐无敌制图网淘宝店专用章"); mainFont.setFontSize(25); mainFont.setFontSpace(12.0); /** * 副文字 */ SealFont viceFont = new SealFont(); viceFont.setBold(true); viceFont.setFontFamily("宋体"); viceFont.setMarginSize(5); /**************************************************/ //viceFont.setFontText("123456789012345"); //viceFont.setFontSize(13); //viceFont.setFontSpace(12.0); /**************************************************/ viceFont.setFontText("正版认证"); viceFont.setFontSize(22); viceFont.setFontSpace(12.0); /** * 中心文字 */ SealFont centerFont = new SealFont(); centerFont.setBold(true); centerFont.setFontFamily("宋体"); /**************************************************/ //centerFont.setFontText("★"); //centerFont.setFontSize(100); /**************************************************/ //centerFont.setFontText("淘宝欢乐\n制图网淘宝\n专用章"); //centerFont.setFontSize(20); /**************************************************/ //centerFont.setFontText("123456789012345"); //centerFont.setFontSize(20); /**************************************************/ centerFont.setFontText("发货专用"); centerFont.setFontSize(25); /** * 抬头文字 */ SealFont titleFont = new SealFont(); titleFont.setBold(true); titleFont.setFontFamily("宋体"); titleFont.setFontSize(22); /**************************************************/ //titleFont.setFontText("发货专用"); //titleFont.setMarginSize(68); //titleFont.setFontSpace(10.0); /**************************************************/ titleFont.setFontText("正版认证"); titleFont.setMarginSize(68); titleFont.setMarginSize(27); /** * 添加主文字 */ configuration.setMainFont(mainFont); /** * 添加副文字 */ configuration.setViceFont(viceFont); /** * 添加中心文字 */ configuration.setCenterFont(centerFont); /** * 添加抬头文字 */ //configuration.setTitleFont(titleFont); /** * 图片大小 */ configuration.setImageSize(300); /** * 背景颜色 */ configuration.setBackgroudColor(Color.RED); /** * 边线粗细、半径 */ //configuration.setBorderCircle(new SealCircle(3, 140, 140)); configuration.setBorderCircle(new SealCircle(3, 140, 100)); /** * 内边线粗细、半径 */ //configuration.setBorderInnerCircle(new SealCircle(1, 135, 135)); configuration.setBorderInnerCircle(new SealCircle(1, 135, 95)); /** * 内环线粗细、半径 */ //configuration.setInnerCircle(new SealCircle(2, 105, 105)); configuration.setInnerCircle(new SealCircle(2, 85, 45)); //1.生成公章 try { SealUtil.buildAndStoreSeal(configuration, "D:\\公章.png"); } catch (IOException e) { e.printStackTrace(); } //2.生成私章 SealFont font = new SealFont(); font.setFontSize(120).setBold(true).setFontText("诸葛孔明"); SealUtil.buildAndStorePersonSeal(300, 16, font, "印", "D:\\私章.png"); } }

印章生成代码文档

本文档解释如何通过上述代码设置参数生成印章。代码使用了SealUtil类生成公章和私章。以下是各个配置参数及其作用的详细说明:

1. SealConfiguration 印章配置

SealConfiguration类用于配置印章的整体设置,包括字体、大小、颜色、边线等参数。

java
SealConfiguration configuration = new SealConfiguration();

2. 主文字(Main Font)

SealFont类用于设置印章中的主要文字。可以配置字体的大小、字形、间距等参数。

java
SealFont mainFont = new SealFont(); mainFont.setBold(true); // 是否加粗 mainFont.setFontFamily("楷体"); // 字体类型 mainFont.setFontText("欢乐无敌制图网淘宝店专用章"); // 文字内容 mainFont.setFontSize(25); // 字体大小 mainFont.setFontSpace(12.0); // 字符间距 mainFont.setMarginSize(10); // 文字与边界的间距
  • setBold(boolean):设置文字是否加粗。
  • setFontFamily(String):设置字体类型,例如“楷体”、“宋体”等。
  • setFontText(String):设置印章上的主要文字内容。
  • setFontSize(int):设置字体大小。
  • setFontSpace(double):设置字符之间的间距。
  • setMarginSize(int):设置字体与印章边界的距离。

3. 副文字(Vice Font)

副文字是印章上辅助性的文本,类似于说明性文字。

java
SealFont viceFont = new SealFont(); viceFont.setBold(true); viceFont.setFontFamily("宋体"); viceFont.setFontText("正版认证"); viceFont.setFontSize(22); viceFont.setFontSpace(12.0); viceFont.setMarginSize(5);

4. 中心文字(Center Font)

中心文字通常用于印章的正中位置,可以是公司标志、星号等。

java
SealFont centerFont = new SealFont(); centerFont.setBold(true); centerFont.setFontFamily("宋体"); centerFont.setFontText("发货专用"); centerFont.setFontSize(25);

5. 抬头文字(Title Font)

抬头文字一般位于印章的顶部,用于额外说明。

java
SealFont titleFont = new SealFont(); titleFont.setBold(true); titleFont.setFontFamily("宋体"); titleFont.setFontText("正版认证"); titleFont.setFontSize(22); titleFont.setMarginSize(68);

6. 印章图像配置

  • setImageSize(int):设置印章的图片大小(宽度和高度,单位为像素)。
  • setBackgroudColor(Color):设置印章背景颜色,这里设置为红色。
  • setBorderCircle(SealCircle):设置印章边框,包括边框粗细和半径。参数是SealCircle对象,包含边框的线条粗细、外圆和内圆的半径。
  • setBorderInnerCircle(SealCircle):设置印章内边线的粗细和半径。
  • setInnerCircle(SealCircle):设置印章的内环线的粗细和半径。

例如:

java
configuration.setImageSize(300); // 设置印章大小为300px configuration.setBackgroudColor(Color.RED); // 设置背景颜色为红色 configuration.setBorderCircle(new SealCircle(3, 140, 100)); // 设置外边框,线条粗细为3,外圆半径140,内圆半径100 configuration.setBorderInnerCircle(new SealCircle(1, 135, 95)); // 设置内边框 configuration.setInnerCircle(new SealCircle(2, 85, 45)); // 设置内环线

7. 公章生成

公章通过SealUtil.buildAndStoreSeal方法生成,存储路径可自行指定。

java
SealUtil.buildAndStoreSeal(configuration, "D:\\公章.png");

8. 私章生成

私章的配置稍有不同,主要是使用个人名称和“印”字生成。

java
SealFont font = new SealFont(); font.setFontSize(120).setBold(true).setFontText("诸葛孔明"); SealUtil.buildAndStorePersonSeal(300, 16, font, "印", "D:\\私章.png");
  • buildAndStorePersonSeal(int, int, SealFont, String, String):生成私章的方法。
    • 第一个参数:印章的大小。
    • 第二个参数:印章的线条粗细。
    • 第三个参数:字体对象。
    • 第四个参数:印章上的标志性文字,如“印”。
    • 第五个参数:保存的路径。

参数说明

为了生成印章,你可以根据以下配置:

  1. 主文字:设置字体、内容、大小等信息。
  2. 副文字:选择是否需要副文字及其内容。
  3. 中心文字:如需要中心的图案或文字,例如星号或“发货专用”。
  4. 抬头文字:在印章顶部添加标题文字。
  5. 图片尺寸:根据需求调整印章的整体大小。
  6. 边线:设置印章外边框、内边线、内环线的粗细和半径。
  7. 保存路径:指定生成的印章文件存储位置。

试了一些效果,不是很完美的效果,这个代码还需要进一步调整,圆形章里面的字是变长的时候,那还需要改代码。

Python

部分代码:

python
if __name__ == '__main__': img_size = 558 # 创建透明背景图像 img = Image.new('RGBA', (img_size, img_size), (0, 0, 0, 0)) img = draw_rotated_text(img, "我睡觉哦笑了") img = draw_rotated_text_fu2(img, "SDHASODHQWBE12312535", img_size=img_size) img = draw_filled_star(img, img_size=img_size) img = draw_ellipse(img, img_size=img_size) img = draw_main_text(img, "财务专用章", img_size=img_size) # 显示图像 img.show() img.save('final.png', 'PNG')

这代码发布出来估计不太好,效果还是不错的:

final.png

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!