c語言調(diào)用圖片函數(shù)
創(chuàng)新互聯(lián)建站服務(wù)項目包括喀左網(wǎng)站建設(shè)、喀左網(wǎng)站制作、喀左網(wǎng)頁制作以及喀左網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,喀左網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到喀左省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
據(jù)我所知Matlab有,imshow(),c好象沒有,c只能先將圖片讀到內(nèi)存中,經(jīng)過相關(guān)處理后以一定的格式保存到硬盤中,然后再打開圖片.
讀圖和存圖需要有專門的函數(shù),這些可以參考:
unsigned
char*
ReadBMPData(int
Width,
int
Height,
char
*fname)//圖像的寬和高,圖像的位置(包括后綴)
{
unsigned
char*
image
=
new
unsigned
char[Width*Height];
FILE
*fp;
fp
=
fopen(fname,
"rb");
fread(image,
1,
Width*Height,
fp);
fclose(fp);
return
image;
}
///////////////////////////
void
WriteRawData(unsigned
char*
image,
int
Width,
int
Height,
char
*fname)
{
FILE
*fp;
fp
=
fopen(fname,
"wb");
fwrite(image,
1,
Width*Height,
fp);
fclose(fp);
}
1、以特定的圖形符號加上說明,表示算法的圖,稱為流程圖或框圖。
2、選擇對應(yīng)的圖形,開始結(jié)束用橢圓形,過程用長方形。
3、繪制整個流程的過程。
4、將各個流程節(jié)點用線連接起來。
5、最后添加備注。
注意事項:
流程圖是流經(jīng)一個系統(tǒng)的信息流、觀點流或部件流的圖形代表。在企業(yè)中,流程圖主要用來說明某一過程。這種過程既可以是生產(chǎn)線上的工藝流程,也可以是完成一項任務(wù)必需的管理過程。
#include?"stdio.h"
void?printMap(char?m,int?n)
{
int?i,j,k;
for(i=0;in;i++)
{
? ? for(j=i;jn-1;j++)
? ? {
? ? ? printf("?");
? ? }
? ? for(k=0;k2*i+1;k++)
? ? {
? ? ? printf("%c",m);
? ? }
? ? printf("\n");
}
}
int?main()
{
char?m;
int?n;
scanf("%c%d",m,n);
printMap(m,n);
}
結(jié)果:
有個關(guān)于圖形的庫函數(shù)。
graphics.h這里面的
你查庫函數(shù)手冊吧
程序的執(zhí)行過程可看作連續(xù)的函數(shù)調(diào)用。當(dāng)一個函數(shù)執(zhí)行完畢時,程序要回到調(diào)用指令的下一條指令(緊接call指令)處繼續(xù)執(zhí)行。函數(shù)調(diào)用過程通常使用堆棧實現(xiàn),每個用戶態(tài)進(jìn)程對應(yīng)一個調(diào)用棧結(jié)構(gòu)(call stack)。編譯器使用堆棧傳遞函數(shù)參數(shù)、保存返回地址、臨時保存寄存器原有值(即函數(shù)調(diào)用的上下文)以備恢復(fù)以及存儲本地局部變量。
不同處理器和編譯器的堆棧布局、函數(shù)調(diào)用方法都可能不同,但堆棧的基本概念是一樣的。
寄存器是處理器加工數(shù)據(jù)或運行程序的重要載體,用于存放程序執(zhí)行中用到的數(shù)據(jù)和指令。因此函數(shù)調(diào)用棧的實現(xiàn)與處理器寄存器組密切相關(guān)。
AX(AH、AL):累加器。有些指令約定以AX(或AL)為源或目的寄存器。輸入/輸出指令必須通過AX或AL實現(xiàn),例如:端口地址為43H的內(nèi)容讀入CPU的指令為INAL,43H或INAX,43H。目的操作數(shù)只能是AL/AX,而不能是其他的寄存器。 [5]
BX(BH、BL): 基址寄存器 。BX可用作間接尋址的地址寄存器和 基地址寄存器 ,BH、BL可用作8位通用數(shù)據(jù)寄存器。 [5]
CX(CH、CL):計數(shù)寄存器。CX在循環(huán)和串操作中充當(dāng)計數(shù)器,指令執(zhí)行后CX內(nèi)容自動修改,因此稱為計數(shù)寄存器。 [5]
DX(DH、DL):數(shù)據(jù)寄存器。除用作通用寄存器外,在 I/O指令 中可用作端口 地址寄存器 ,乘除指令中用作輔助累加器。 [5]
2.指針和 變址寄存器
BP( Base Pointer Register):基址指針寄存器。 [5]
SP( Stack Pointer Register): 堆棧指針寄存器 。 [5]
SI( Source Index Register):源變址寄存器。 [5]
DI( Destination Index Register):目的變址寄存器。 [5]
函數(shù)調(diào)用棧的典型內(nèi)存布局如下圖所示:
圖中給出主調(diào)函數(shù)(caller)和被調(diào)函數(shù)(callee)的棧幀布局,"m(%ebp)"表示以EBP為基地址、偏移量為m字節(jié)的內(nèi)存空間(中的內(nèi)容)。該圖基于兩個假設(shè):第一,函數(shù)返回值不是結(jié)構(gòu)體或聯(lián)合體,否則第一個參數(shù)將位于"12(%ebp)" 處;第二,每個參數(shù)都是4字節(jié)大小(棧的粒度為4字節(jié))。在本文后續(xù)章節(jié)將就參數(shù)的傳遞和大小問題做進(jìn)一步的探討。 此外,函數(shù)可以沒有參數(shù)和局部變量,故圖中“Argument(參數(shù))”和“Local Variable(局部變量)”不是函數(shù)棧幀結(jié)構(gòu)的必需部分。
其中,主調(diào)函數(shù)將參數(shù)按照調(diào)用約定依次入棧(圖中為從右到左),然后將指令指針EIP入棧以保存主調(diào)函數(shù)的返回地址(下一條待執(zhí)行指令的地址)。進(jìn)入被調(diào)函數(shù)時,被調(diào)函數(shù)將主調(diào)函數(shù)的幀基指針EBP入棧,并將主調(diào)函數(shù)的棧頂指針ESP值賦給被調(diào)函數(shù)的EBP(作為被調(diào)函數(shù)的棧底),接著改變ESP值來為函數(shù)局部變量預(yù)留空間。此時被調(diào)函數(shù)幀基指針指向被調(diào)函數(shù)的棧底。以該地址為基準(zhǔn),向上(棧底方向)可獲取主調(diào)函數(shù)的返回地址、參數(shù)值,向下(棧頂方向)能獲取被調(diào)函數(shù)的局部變量值,而該地址處又存放著上一層主調(diào)函數(shù)的幀基指針值。本級調(diào)用結(jié)束后,將EBP指針值賦給ESP,使ESP再次指向被調(diào)函數(shù)棧底以釋放局部變量;再將已壓棧的主調(diào)函數(shù)幀基指針彈出到EBP,并彈出返回地址到EIP。ESP繼續(xù)上移越過參數(shù),最終回到函數(shù)調(diào)用前的狀態(tài),即恢復(fù)原來主調(diào)函數(shù)的棧幀。如此遞歸便形成函數(shù)調(diào)用棧。
EBP指針在當(dāng)前函數(shù)運行過程中(未調(diào)用其他函數(shù)時)保持不變。在函數(shù)調(diào)用前,ESP指針指向棧頂?shù)刂?,也是棧底地址。在函?shù)完成現(xiàn)場保護(hù)之類的初始化工作后,ESP會始終指向當(dāng)前函數(shù)棧幀的棧頂,此時,若