程式設計實現根據指定文字生成電子印章

2021-10-07 03:32:54 字數 3724 閱讀 6236

在材料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

typedef unsigned char byte

;

typedef unsigned short word

;

typedef unsigned long dword

;/**** the file header of bmp file 位**件頭*****/

#include

//this file turns 2 byte packing of structures on, then sizeof(bitmapfileheader)=14, otherwise sizeof(bitmapfileheader)=16

typedef struct tagbitmapfileheader

bitmapfileheader

; #include

//this file turns packing of structures off

/**** the information header of bmp file 位圖資訊頭*****/

typedef struct tagbitmapinfoheader

bitmapinfoheader

;/**** the rgb data of bmp file 影象rgb資料*****/

typedef struct tagrgbdata

rgbdata

; int main

(int argc, char *ar**)

//匯入txt資料

char a[

300]

[300];

//定義乙個bai二維陣列

int c=0;

file

*fp1;

/* 定義指向檔案的指標*/if(

(fp1=

fopen

(ar**[1]

,"r"))

==null

)/*開啟乙個二進位制檔案,為讀方式*/

while(!

feof

(fp1)

)char b[

300]

[300];

int len1,m,k1=

0,l;

len1=

strlen

(a[0])

;int j1,i1;

for(i1=

0;i1(a[i1]

[j1]

=='x')}

b[i1]

[k1]

=='\0'

;printf

("%s\n"

,b[i1]);

} len1=

strlen

(b[0])

;//第一步:用命令列中給出的檔名新建一bmp檔案,此時還是乙個空檔案if(

(fp=

fopen

(ar**[2]

,"wb+"))

==null

)//第二步:置檔案頭資料並寫入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

)//先在bmpdata所指記憶體中置影象rgb資料,然後將所有資料寫入bmp檔案

for(i=

0;i)else

//其他紅色}}

fwrite

(bmpdata,

sizeof

(rgbdata

),datasize,fp)

;//將bmpdata所指記憶體中的rgb資料一次性寫入bmp檔案

printf

("\n 恭喜您!bmp檔案已經成功生成!\n");

printf

("\n 請在當前目錄下檢視生成的bmp檔案%s\n\n"

,ar**[2]

);free

(bmpdata)

;//釋放bmpdata所指的記憶體空間

bmpdata=

null

;//置bmpdata為空指標

fclose

(fp)

;//關閉fp所指檔案

}

根據文字生成顏色作為頭像或者背景

之所以會寫這個東西的原因是因為之前工作的時候有產品經理提了乙個需求 我覺得我們現在這種使用者頭像都是預設的乙個小人太單調了,一點都不能顯示我們的逼格,能不能給做乙個功能,要求根據使用者的使用者名稱生成乙個帶有隨機顏色背景的以使用者名稱第乙個字作為顯示的頭像。別說啊,這個需求講道理還是挺合理的,至少我...

jQuery實現省略指定多餘文字

西西里的美麗傳說 1941年春末的一天,雷納多 阿莫魯索初次見到瑪蓮娜。她留著波浪狀黑亮的秀髮,穿著時髦的短裙和 踏著充滿 的高跟鞋,來到了西西里島上寧靜的陽光小鎮。她的一舉一動都引人矚目 勾人遐想,她的一顰一笑都叫男人心醉 女人羨妒。瑪蓮娜,像個女神一般,征服了這個海濱的天堂樂園。年僅十三歲的雷納...

PHP實現根據狀態碼跳轉指定頁面

比如 404,503 等頁面的指定跳轉。當然有多種方案 判斷 伺服器配置 htaccess 檔案配置 當 在tp中實現出現問題。的話 影響系統 效率 伺服器配置會遭 偽靜態的語句衝突 htaccess 檔案配置 同理 如果去掉偽靜態則可以正常生效 解決 當然tp中的404可以結合 empty控制器指...