在材料demo中有如下改动
1.通过hedit可以看到示例程序生成的图片的长宽参数都是00 00 00 80也就是8*16=128
在文件头的地方将长宽修改为128
2.因为要输入三个参数 且顺序为程序 点阵文件txt 新建bmp文件 因而将argc<2改为argc<3
那么对应的点阵文件路径就是在arvc[1]中
3.将点阵文件读入二维数组中(一行一行读入)顺便可以统计有多少行
4.将二维数组处理成01的形式并打印(处理一行打印一行)
5.计算二维数组的点与图片数组bmpdata的位置关系 因为印章要居中 因此在放入之前要计算行列数
6.oj提交代码可能会提示编译错误 但编译软件是正常运行的 猜测可能oj没有定义一些函数
如果将oj提示有问题的函数删去的话 会导致无法生成图片
有大佬可以教一下如何做3-2的字符匹配吗

写的代码有些乱 只是提供3-1的思路 仅供参考

#include <CONIO.H>
#include <STDLIB.H>
#include <STDIO.H>
#include <MATH.H>
#include <MALLOC.H>
#include <string.h>typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;   /****  The file header of bmp file 位图文件头*****/
#include <pshpack2.h> //This file turns 2 byte packing of structures on, then sizeof(BITMAPFILEHEADER)=14, otherwise sizeof(BITMAPFILEHEADER)=16
typedef struct tagBITMAPFILEHEADER {   WORD bfType;   DWORD bfSize;   WORD bfReserved1;   WORD bfReserved2;DWORD bfoffBits;
} BITMAPFILEHEADER;
#include <poppack.h> //This file turns packing of structures off /****  The information header of bmp file 位图信息头*****/
typedef struct tagBITMAPINFOHEADER {   DWORD biSize;   DWORD biWidth;   DWORD biHeight;   WORD  biPlanes;   WORD  biBitCount;      DWORD biCompress;DWORD biSizeImage;   DWORD biXPeIsPerMeter;   DWORD biYPeIsPerMeter;   DWORD biCIrUsed;   DWORD biClrImprotant;
} BITMAPINFOHEADER;   /****  The RGB data of bmp file 图像RGB数据*****/
typedef struct tagRGBDATA{   BYTE rgbBlue;       BYTE rgbGreen; BYTE rgbRed;
} RGBDATA;
int main(int argc, char *argv[])
{RGBDATA *bmpData=NULL;    //图像数据指针FILE *fp;               //BMP文件指针long i,j,k,len;long width=128;            //图像宽度long height=128;     //图像高度long dataSize=width*height;BITMAPFILEHEADER bmfHeader;BITMAPINFOHEADER bmiHeader;if(argc<3){printf("\n      命令格式: mySeal  xxxx.txt  xxxx.bmp\n");printf("\n 实现根据点阵信息文件""xxxx.txt""制作对应的电子印章文件""xxxx.bmp""\n\n");exit(0);}//导入txt数据char a[300][300]; //定义一个bai二维数组int c=0;FILE *fp1;                                      /* 定义指向文件的指针*/if((fp1=fopen(argv[1],"r"))==NULL)              /*打开一个二进制文件,为读方式*/{printf("文件打开失败!\n");return 0;}
while(!feof(fp1))
{if(1!=fscanf(fp1,"%s",a[c]))break;
c++; //打印数据到二维数组中
}
char b[300][300];
int len1,m,k1=0,l;
len1=strlen(a[0]);
int j1,i1;for(i1=0;i1<c;i1++){k1=0;for(j1=0;j1<len1;j1++){if(a[i1][j1]=='_'){b[i1][k1]='0';k1++;}if(a[i1][j1]=='X'){b[i1][k1]='1';k1++;}}b[i1][k1]=='\0';printf("%s\n",b[i1]);}len1=strlen(b[0]);//第一步:用命令行中给出的文件名新建一BMP文件,此时还是一个空文件if((fp=fopen(argv[2], "wb+"))==NULL){printf("Cannot open BMP file!");exit(0);}//第二步:置文件头数据并写入BMP文件bmfHeader.bfType=0x4d42;bmfHeader.bfSize=14+40+width*height*3;bmfHeader.bfReserved1=0;bmfHeader.bfReserved2=0;bmfHeader.bfoffBits=0x36;fwrite(&bmfHeader, sizeof(BITMAPFILEHEADER), 1, fp);//第三步:置信息头数据并写入BMP文件bmiHeader.biSize=40;bmiHeader.biWidth=width;bmiHeader.biHeight=height;bmiHeader.biPlanes=1;bmiHeader.biBitCount=24;bmiHeader.biCompress=0;bmiHeader.biSizeImage=width*height*3;bmiHeader.biXPeIsPerMeter=0;bmiHeader.biYPeIsPerMeter=0;bmiHeader.biCIrUsed=0;bmiHeader.biClrImprotant=0;fwrite(&bmiHeader, sizeof(BITMAPINFOHEADER), 1, fp);//第四步:置图像RGB数据并写入BMP文件//分配足够内存,让bmpData指向这块内存,用于存放图像各象素点的RGB分量值if((bmpData=(RGBDATA*)malloc(width*height*3))==NULL){printf("bmpData memory malloc error!");}//先在bmpData所指内存中置图像RGB数据,然后将所有数据写入BMP文件for(i=0;i<height;i++){for(j=0;j<width;j++){k=(height-i-1)*width + j;//计算bmp图片中第i行第j列图像数据在bmpData[]数组中的位置if(i>=(height-c)/2&&i<=(height/2+c/2)-1&&j>=(width-len1)/2&&j<=(width/2+len1/2)-1&&b[i-(height-c)/2][j-(width-len1)/2]=='0'  ){bmpData[k].rgbBlue=255;bmpData[k].rgbGreen=255;bmpData[k].rgbRed=255;}else //其他红色{bmpData[k].rgbBlue=0;bmpData[k].rgbGreen=0;bmpData[k].rgbRed=255;}}}fwrite(bmpData,sizeof(RGBDATA),dataSize,fp);//将bmpData所指内存中的RGB数据一次性写入BMP文件printf("\n    恭喜您!BMP文件已经成功生成!\n");printf("\n    请在当前目录下查看生成的BMP文件%s\n\n",argv[2]);free(bmpData);  //释放bmpData所指的内存空间bmpData=NULL;    //置bmpData为空指针fclose(fp);       //关闭fp所指文件}

编程实现根据指定文本生成电子印章相关推荐

  1. 问题 U: 任务3-1:编程实现根据指定文本生成电子印章(超详细教程)

    hnuster!看了很多关于该题的解法但是我们发现,我们竟然下不了手!!!第一个问题:制作属于自己名字的txt(即xds.txt).这个都不会,可是网上的其他解法都一笔带过了,琢磨了半天弄清楚的. 下 ...

  2. 编程实现根据指定汉字生成电子印章

    编程实现根据输入的汉字制作不同的电子印章 具体要求: 思路: 程序代码: CB运行结果: 使用流程: 第一步:首先在用户目录下建立不同字体的查询表,和空的 bmp 格式文件 第二步:Windows+R ...

  3. excel每行按模板导出为一个excel文件,可以指定列文本生成二维码或者条形码

    程序修改了bug,增加了功能.(20220825) 该程序可以把一个excel文件中每行数据按指定模板生成一个单独excel文件. 1. 模板文件为tpl\template.xlsx. 2. 从左侧数 ...

  4. 引燃AI社区,不用跨界也能从文本生成图像,OpenAI新模型打破自然语言与视觉次元壁...

    视学算法报道 作者:魔王.杜伟.蛋酱 艺术创作的事,以后人类只要动手打几个字,其他的交给 AI 就行了. 自然语言与视觉的次元壁正在被打破.这不,OpenAI 最近连发大招,提出两个连接文本与图像的神 ...

  5. 使用TextRank算法为文本生成关键字和摘要

    使用TextRank算法为文本生成关键字和摘要 发表于1年前(2014-12-01 21:31)   阅读(10282) | 评论(27) 155人收藏此文章, 我要收藏 赞15 摘要 TextRan ...

  6. NLP之WordCloud:基于jieba+matplotlib库对一段文本生成词云图~~情人节最好的礼物(给你一张过去的词云图,看看那时我们的爱情)

    NLP之WordCloud:基于jieba+matplotlib库对一段文本生成词云图~~情人节最好的礼物(给你一张过去的词云图,看看那时我们的爱情) 目录 输出词云图结果 输出文本统计 设计思路 实 ...

  7. 妙笔生花:一个易用、高效的文本生成开源库

    文本生成作为近年来自然语言处理中的热门领域,受到了学界和工业界的广泛关注.随着研究的不断深入,文本生成领域下的子任务和相应的模型越来越丰富,一些优秀的开源框架也纷纷涌现. 现有的开源文本生成库大致可分 ...

  8. 详解预训练模型、信息抽取、文本生成、知识图谱、对话系统技术

    我们正处在信息爆炸的时代.面对每天铺天盖地的网络资源和论文.很多时候我们面临的问题并不是缺资源,而是找准资源并高效学习.其次,即便网络上的资源非常多,学习是需要成本的,而且越有深度的内容越难找到好的学 ...

  9. Char RNN原理介绍以及文本生成实践

    正文共1523张图,3张图,预计阅读时间8分钟. 1.简介 Char-RNN,字符级循环神经网络,出自于Andrej Karpathy写的The Unreasonable Effectiveness ...

最新文章

  1. oracle datafile损坏,史上最全Oracle文件损坏处理办法(附实验步骤)
  2. 反复下蹲,你的膝盖响几下?
  3. webview js 与 java 调用参数问题。
  4. 大规模部署桌面虚拟化时的问题
  5. h5jumppage.php,h5使用webviewjsbridge跟原生交互,点击标签调用2次webview
  6. Linux-使用之vim出现的问题
  7. fastapi 用户指南(路径参数、查询参数、请求体)
  8. 基于HiKariCP组件,分析连接池原理
  9. mysql查询系统年月_mysql每个月自动创建一张表,以年月做为表名,如何进行联合查询...
  10. Chrome DevTools的Network面板
  11. sql 查询超时已过期_监视来自SQL Server代理作业的查询超时过期消息
  12. 公司不能把笔记导出去真操蛋
  13. NHibernate直接执行SQL进行插入
  14. MVC学习一:MVC简单流程
  15. 软件实施工程师到底是干什么的?全方位介绍实施工程师的职责要求和发展前景
  16. Gilbert Strang的线性代数课程笔记-第一课
  17. java word转pdf dox4j,使用 docx4j 将 Web 页面转换为 DOCX 与 PDF 格式
  18. mysql pxc搭建_MySQL(PXC)集群搭建
  19. 如何部署局域网即时通讯软件
  20. car | 线性回归(三)——残差分析和异常点检验

热门文章

  1. ipadpro分屏怎么操作_iPad到手后必备的高效设置技巧(iPad Pro、iPad Air、iPad mini学习生产工具...
  2. 3款大屏播放软件,用法很详细,用于大屏幕播放视频和图片
  3. 网站建设与深度学习(PHP调用Python程序)
  4. Idea merge into current 的使用
  5. 数字电路 模拟电路 先学哪个_数字电路,模拟电路
  6. 三段式抽屉BottomSheetBehavior嵌套RecyclerView滑动冲突问题
  7. MIML系列(一):Fast Multi-Instance Multi-Label Learning 快速多示例多标签学习
  8. NORTON 杀毒怎么了?
  9. 重新java系列之IO流
  10. idea 导入 vue项目 improt全都报红