當前位置:首頁 » 編程語言 » c語言數組圖像
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數組圖像

發布時間: 2023-03-26 23:42:09

A. 請問如何使用純c語言讀取文件中的圖片,並將圖片存儲在二維數組中

1、使用雙層循環語句,就可以依次把數據順序讀入到一個二維數組當中了。2、常式:#include#include#defineMAXLINE3#defineMAXCOLUMN10voidmain(void){FILE*fp;//文件指針chararr[MAXLINE][MAXCOLUMN]={0};//定義3行10列的二維數組並初始化inti=-1;if((fp=fopen("./test/filename.txt","r"))==NULL){//打開txt文件perror("Fileopenerror!\n");return;}while((fgets(arr[++i],MAXCOLUMN+1,fp))!=NULL)//讀取一行並存到arr數組printf("%d:",i);//列印行號//puts(arr[i]);char*subarr=strtok(arr[i],"");//以空格為分隔符從arr[i]中獲得字串while(subarr!=NULL){data[i][j]=atoi(subarr);//將字串轉為int型數據存入data數組printf("%d\t",data[i][j]);//列印data[i][jsubarr=strtok(NULL,"");//繼續獲得arr[i]中的字串j++;//data數組列加一}printf("\n");}//循環完畢後,所有數據已在data數組中printf("\n");fclose(fp);//關閉指針}

B. 求助,用C語言定義動態二維數組讀取圖像問題

可以按照下面步驟進行定義二維數組並輸出:
1 定義二維指針。
2 確定數組維數,即行數和列數。
3 申請行數個一維指針大小空間,並賦值給二維指針。
4 對於每個一維指,申請列數個元素的空間,並賦值給對應的一維指針。
5 輸入或賦值數據。
6 使用雙重循環,逐個范圍存儲單元並輸出。
7 逐個釋放一維指針上的內存。
8 釋放二維指針上的內存。

以整型二維數組為例:
下面的代碼,實現先輸入二維數組的行數m和列數n,並再輸入m*n個整型數據存到動態二維數組中。最後輸出所有二維數組的元素值。
#include <stdio.h> //包含輸入輸出函數
#include <stdlib.h>//包含動態內存分配函數。

int main()
{
int **p; //定義二維指針。
int m, n;//行數和列數。
int i,j;

scanf("%d%d", &m, &n); //輸入行數和列數。
if(m <= 0 || n <= 0) return -1; //行數或列數非法。

p = (int **) malloc(sizeof(int *) *m);//申請一組一維指針空間。
for(i = 0; i < m; i ++)
p[i] = (int *)malloc(sizeof(int) * n); //對於每個一閉液維指針,申請一行數據的空間。

for(i = 0; i <雹態粗 m; i ++)
for(j = 0; j < n; j ++)
scanf("%d",&p[i][j]);//輸入第i行第j列的數據。其中&p[i][j]也可以寫作p[i]+j或者是 *(p+i) + j. 功能相同。

printf("輸入的數組為%d行%d列:\n", m, n);
for(i = 0; i < m; i ++)
{
for(j = 0; j < n; j ++)//這個循環可以輸出一行元素。
printf("%d ", p[i][j]);//輸出i行j列的元素。
printf("\n");//每行輸入結束加換行符。
}

//釋放源鎮內存
for(i = 0; i < m; i ++)
free(p[i]);
free(p);

return 0;
}

C. C語言數組畫圖形~


inti,j;

system("cls");

for(i=0;i<23;i++)

{

for(j=0;j<76;j++)

{

if(i==3&&j>4&&j<20){printf("━━");}

else

if(i==22&&j>4&&j<20)printf("━━");

else

if(i==3&&j==4)printf("┏");

else

if(i==3&&j==20)printf("━━━┓");

else

if(i==22&&j==4)printf("┗");

else

if(i==22&&j==20)printf("━━━┛");

else

if(i>3&&i!=22&&(j==4||j==71))

printf("┃");

else

printf("");

}

printf(" ");

}

gotoxy(5,5);printf("┃");

gotoxy(73,5);printf("┃");

列印上圖哪個界面

D. C語言里 灰度圖像怎麼轉換為二維數組

1、步驟大概這樣
第一步:讀取圖像數據到內存
第二步:讀取文件頭
第三步:讀取信息頭
第四步:讀取圖像矩陣到二維數組
2、常式:

FileName=fileDlg.GetFileName();
FILE*fp=fopen(FileName,"rb");//二進制讀方式打開指定的圖像文件
fread(&FileHead,sizeof(BITMAPFILEHEADER),1,fp);//讀取文件頭,文件指針自動後移
fread(&InfoHead,sizeof(BITMAPINFOHEADER),1,fp);//讀取信息頭,文件指針自動後移
//獲取圖像寬、高、每像素所佔位數等信息
bmpWidth=InfoHead.biWidth;
bmpHeight=InfoHead.biHeight;
//下面完成圖像數據向內存數組的存儲
ImageData=newunsignedchar*[bmpHeight];
if(InfoHead.biBitCount==24)
{
for(inti=0;i<bmpHeight;i++)
{
ImageData[i]=newunsignedchar[(bmpWidth*3+3)/4*4];
}
for(intk=0;k<bmpHeight;k++)
{
for(intj=0;j<(bmpWidth*3+3)/4*4;j++)
{
fread(&ImageData[k][j],1,1,fp);//上面完成動態二維數組的申請,這里實際讀取圖像數據
}
}
fclose(fp);//關閉文件

E. 請問C語言讀取圖像轉換為二維數組程序有什麼問題,怎麼修改

FileName=fileDlg.GetFileName ();FILE *fp=fopen(FileName,"rb");//二進制讀方式打開指定的圖像文件fread(&FileHead, sizeof(BITMAPFILEHEADER), 1,fp); //讀取文件頭,文件指針自動後移fread(&InfoHead, sizeof(BITMAPINFOHEADER), 1,fp);//讀取信息頭,文件指針自動後移//獲取圖像寬、高、每像素所佔位數等信息bmpWidth = InfoHead.biWidth;bmpHeight = InfoHead.biHeight;//下面完成圖像數據向內存數組的存儲ImageData=new unsigned char*[bmpHeight];if(InfoHead.biBitCount==24){for (int i=0;i<bmpHeight;i++){ImageData[i]=new unsigned char[(bmpWidth*3+3)/4*4];}for (int k=0;k<bmpHeight;k++ ){for(int j=0;j<(bmpWidth*3+3)/4*4;j++){fread(&ImageData[k][j],1,1,fp);//上面完成動態二維數組的申請,這里實際讀取圖像數據}}fclose(fp);//關閉文件

F. C語言如何畫以一維數組為橫坐標,和縱坐標的圖

dimp(b.length-1)aspoint
foriasinteger=0tob.length-1
p(i).x=b(i)
p(i).y=h-a(i)'這里h是你要繪制曲線的控制項的高度
next

然後在窗體或者picturebox的paint事件中:
'畫筆
DimblackPenAsNewPen(Color.Black)

'繪制曲線
e.Graphics.DrawLines(blackPen,p)

G. 怎樣用C語言將png圖像讀入數組並顯示

c語言讀取圖片原理:通過文件流的方式讀入到Byte的二進制數組中,之後,使用圖像分析演算法將圖像顯示到屏幕上,要將數組中的值轉換為像素。

參考代碼如下:

//function definition
void ImageRead(AnsiString name,int &width,int &height,int *r,int *g,int *b)
{
//read image
FILE *fp;
if((fp=fopen(name.c_str(),"rb"))==NULL) {
printf("cannot open bmp.name\n");
return ;
}
fread(&bfType,sizeof(WORD),1,fp);
if(bfType!=0x4d42) {//該值必需是0x4D42,也就是字元'BM'
printf("the input map is not bmp type");
return ;
}
fread(&bfSize,sizeof(DWORD),1,fp);
fread(&bfReserved1,sizeof(WORD),1,fp);
fread(&bfReserved2,sizeof(WORD),1,fp);
fread(&bfOffBits,sizeof(DWORD),1,fp);
fread(&bih,sizeof(BITMAPINFOHEADER),1,fp);
width=bih.biWidth ;