好家伙,为了一个水课作业,找了一个下午的免费骑缝章程序,不是不能用就是加水印,一气之下干脆用MATLAB写了个。

本程序仅支持为png批量添加来自png的骑缝章,输出也是png。

先放代码,再放使用说明。

% 批量给文档加盖骑缝章(Cross-page Seal)
%
% 请手动输入带“++++++++++++++”注释的内容:
% param 1:首页骑缝章占比,默认0.20
% param 2:最后页骑缝章占比,默认0.20
% param 3:原章文件名(仅支持png),请先放到MATLAB当前工作目录下,默认'./a.png'
% param 4:需要盖骑缝章的文档图片(仅支持png)的文件夹,同上,默认'./src'
%
% return:output文件夹下的内容
%
% 编写自Rainbownight,中国矿业大学,2021年。%参数配置
sealFirstPercent = 0.20;   %首页骑缝章占比+++++++++++++++++++++++++++++++++
sealLastPercent = 0.20;        %最后页骑缝章占比+++++++++++++++++++++++++++++++
thred = 20;                    %红色分量分割阈值
sealMidPercent = 1 - sealFirstPercent - sealLastPercent;
assert(sealMidPercent > 0,'错误:首页和最后页占比超过1')%读取章
sealFilename = './a.png';        %章文件名++++++++++++++++++++++++++++++++++
seal = imread(sealFilename);
[sealx, sealy, ~] = size(seal);%读取文件
docDir = './src';                %文档目录名++++++++++++++++++++++++++++++++
files = dir(docDir);
fileNum = length(files) - 2;
assert(fileNum > 2,'错误:请确保至少有3页文件');        %文件应当至少有3页
doc = imread([docDir,'/',files(3).name]);
[docx, docy, ~] = size(doc);
xst = floor((docx - sealx) / 2);
xed = floor((docx + sealx) / 2);
sealMidPercent = sealMidPercent / (fileNum - 2);%批量添加
%首页
yst = docy - floor(sealy * sealFirstPercent);
yed = docy;
seali = 1;
docNew = doc;
for x = xst : xed - 1sealj = 1;for y = yst : yedif seal(seali,sealj,1) > thred        %判断红色分量docNew(x,y,:) = [255 0 0];endsealj = sealj + 1;endseali = seali + 1;
end
if ~exist('./output','dir')mkdir('./output');
end
imwrite(docNew,['./output/output_',num2str(1),'.png']);%中间页
for i = 2 : fileNum - 1doc = imread([docDir,'/',files(i + 2).name]);[tmpa, tmpb, ~] = size(doc);assert(tmpa == docx && tmpb == docy,['错误:第',num2str(i),'张图的页面大小与第1张不一致']);yst = docy - floor(sealy * sealMidPercent);seali = 1;docNew = doc;for x = xst : xed - 1sealj = floor(sealy * (sealFirstPercent + (i-1) * sealMidPercent));for y = yst : yedif seal(seali,sealj,1) > thred      %判断红色分量docNew(x,y,:) = [255 0 0];endsealj = sealj + 1;endseali = seali + 1;endimwrite(docNew,['./output/output_',num2str(i),'.png']);
end%最后页
doc = imread([docDir,'/',files(fileNum + 2).name]);
[tmpa, tmpb, ~] = size(doc);
assert(tmpa == docx && tmpb == docy,['错误:第',num2str(fileNum),'张图的页面大小与第1张不一致']);
yst = docy - floor(sealy * sealLastPercent);
seali = 1;
docNew = doc;
for x = xst : xed - 1sealj = floor(sealy * (1 - sealLastPercent));for y = yst : yedif seal(seali,sealj,1) > thred     %判断红色分量docNew(x,y,:) = [255 0 0];endsealj = sealj + 1;endseali = seali + 1;
end
imwrite(docNew,['./output/output_',num2str(fileNum),'.png']);fprintf('转换成功!请查看output文件夹\n')

首先,你应当拥有一个MATLAB,或者运行在线MATLAB(大概能用吧):

然后,你应当知道啥是MATLAB工作空间,这个自己网上找去吧。

接着,你应当将你需要加盖骑缝章的文件转换为一系列png并存入当前工作空间下的一个文件夹下。并且将png格式的骑缝章放入当前工作空间下。

然后按照你的操作以及你的需求修改代码中的参数即可。

如果需要示例,请下载:

百度网盘
提取码:2333

虽说完全可以做个GUI的,但是限于时间就没折腾。希望有大佬或者想学习的人来继续完成。

效果如下图(黑白印)

MATLAB生成骑缝章(png to png)相关推荐

  1. Java给PDF文件生成骑缝章

    什么是缝骑章? 骑缝章(Paging seal.)是海关常用词汇.为了保证海关监管货物留存单据的完整齐全以及核对有关单证,在单据交接处所加盖的印章. 在两张纸交接处的印章.这种印章多盖在条据.证书或其 ...

  2. Java生成骑缝章带有CA电子签名认证

    准备工作 需要引用aspose包,引入操作我写了一个博客,地址如下 https://blog.csdn.net/weixin_46713508/article/details/125495770?sp ...

  3. JAVA通过itextpdf实现PDF骑缝章

    先引入pom引入jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf ...

  4. PHP html生成pdf 并且加上电子骑缝章

    项目需求 需要生成电子报告 并且能够线上签发  所以需要自定义内容并且能够加上电子骑缝章,TCPDF使用直接看手册就行 解决思路如下 · 最 好是使用TCPDF 来实现html和pdf的转化  使用富 ...

  5. matlab里面atn是什么意思,matlab教程第一章

    <matlab教程第一章>由会员分享,可在线阅读,更多相关<matlab教程第一章(63页珍藏版)>请在人人文库网上搜索. 1.第1章 矩阵及其基本运算MATLAB,即&quo ...

  6. Javascript算法实现PDF批量加盖不同宽度骑缝章,vue加持。

    需求: 电子交易合同.电子文件需要加盖骑缝章,骑缝章的宽度并且是随机的.可盖1-2个骑缝章. 思路: 获取文件的页数pageNum,章宽width,按照页数使用裁剪组件把章裁剪成pageNum份,每一 ...

  7. pdf骑缝章_骑缝章的盖章方法(详细图文教程)

    一般商务场景都需要盖骑缝章,合同.标书等尤其需要,因为加盖了骑缝章,合同展开后可以将骑缝章还原成原章,因此可以防止对方更换合同内页.防止对方否认合同内容,并避免因更换合同内容或否认合同内容而造成的不必 ...

  8. matlab生成多组多维高斯分布数据

    matlab生成多组多维高斯分布数据 之所以写这么一个函数,是因为在练习用matlab实现聚类分析,用matlab生成的高斯分布数据可以作为很好的数据.当然,直接load进鸢尾花数据集也可以拿来练手, ...

  9. 【 FPGA 】MATLAB 生成 FIR 滤波器的操作步骤(包括生成Verilog HDL代码以及仿真过程)

    使用MATLAB生成滤波器有很多学问,这里只是作为初步的探索,和FPGA的更多结合,也正在探索中,相关博文例如:[ FPGA ]FIR滤波器目录,该专题目录正在记录我学习FIR滤波器的过程. MATL ...

最新文章

  1. Evernote中国版、优秀的笔记软件
  2. 手持红外温度计AR802B
  3. python gzipped source tarball,下载及安装Python详细步骤
  4. android、ios、php之间AES加密解密
  5. android XML解析详解(封装好的工具类)
  6. elasticSearch6源码分析(9)ActionModule
  7. 关于.cpp文件包含另一个.cpp文件出错的原因以及解决办法
  8. 计算机合并键功能,Word组合(功能键与Ctrl等组合) -电脑资料
  9. UITableView-FDTemplateLayoutCell自动计算UITableView高度的使用
  10. SAP Spartacus page slot里的Component,对应的DOM节点是如何插入到DOM tree里的
  11. 【正睿2021寒假省选第二轮集训 day 1】串 (后缀自动机+记忆化)
  12. jquery.form.js java_教javascript函数和jquery函数的使用$(form).submit(function()
  13. java后端需要注意的事项_【后端开发】Java中关于null的含义以及使用中要注意的事项...
  14. What?什么是区块链?你不知道就太low了
  15. 愿你历尽千帆,归来仍少年
  16. Excel表格中保护公式不被修改
  17. 酒店管理系统——界面设计
  18. 一个jsp+cgi+html小工程,完成注册,后台使用CGI
  19. zjnu 1779 KRUŽNICE(线段树成段更新+离散化)
  20. 计算机网络学习笔记 01(更新)

热门文章

  1. JavaWeb框架设计之菜单设计
  2. 【BZOJ 1196】[HNOI2006]公路修建问题
  3. 51单片机 花样流水灯程序
  4. spring源码框架
  5. Saber 2016 安装和破解(WIN10)
  6. 基于java+mysql的Swing+MySQL火车票售票管理系统
  7. Air Kiss(飞吻)技术简介,AP配网简介,airkissdebugger.apk app给智能设备通过airkiss配网过程
  8. 微信小程序textArea输入框随着输入字数自适应高度
  9. ANSYS Workbench并行计算设置方法
  10. 第2篇:区分Spring与Struts2框架的几种新方法