当前位置:首页 » 存储配置 » c存储图片

c存储图片

发布时间: 2022-05-04 11:30:41

1. 请问怎么保存用c语言画出的图形

我的想法是:直接读取显存内容,读出像素值,然后自己写个图像文件头数据,再一起存入文件.

2. linux c 图片存储

打开文件后,你可以用fseek到文件尾,用ftell获取文件大小,就可以知道这个图的大小了,存buff里没问题的

3. 用c语言如何读取和保存jpg图片文件

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

int file_size(char* filename)//获取文件名为filename的文件大小。

{

FILE *fp = fopen(filename, "rb");//打开文件。

int size;

if(fp == NULL) // 打开文件失败

return -1;

fseek(fp, 0, SEEK_END);//定位文件指针到文件尾。

size=ftell(fp);//获取文件指针偏移量,即文件大小。

fclose(fp);//关闭文件。

return size;

}

int main ()

{

int size=0;

size=file_size("qw");

printf("%d ",size);

FILE * pFile,*qw;

char *buffer=(char*)malloc(sizeof(char)*size);

qw =fopen("qw","r");

pFile = fopen ( "qwe" , "wb" );

printf("%d== ",pFile);

printf("%d ",size);

fread(buffer,1,size,qw);

fwrite (buffer , sizeof(byte), size , pFile );

fclose (pFile);

rename("qwe","Groot.jpg");

return 0;

}

(3)c存储图片扩展阅读:

c语言读取TXT文件:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAX_LINE 1024

int main()

{

char buf[MAX_LINE]; /*缓冲区*/

FILE *fp; /*文件指针*/

int len; /*行字符个数*/

if((fp = fopen("test.txt","r")) == NULL)

{

perror("fail to read");

exit (1) ;

}

while(fgets(buf,MAX_LINE,fp) != NULL)

{

len = strlen(buf);

buf[len-1] = ''; /*去掉换行符*/

printf("%s %d ",buf,len - 1);

}

return 0;

}




4. c语言中如何导入图片

1、首先先在图片取模软件找到软件快捷方式,点击打开软件。

5. C语言画图__并保存我画的图片

BMP格式是公开的,非常简单,有一个固定结构的头,存储图像的宽度、高度、色深等数据,后面的数据都是以四个一组的字节数据,存储R
G
B
F信息,也就是一个像素点的颜色。msdn上有相关的示例。

6. 请问如何使用纯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);//关闭指针}

7. C语言编程--图像数据保存为JPEG格式图像

save的时候存成jpeg

8. 怎样保存C语言画出的图片

用截屏的方式看能不能 复制出来

9. C++/C 已经得到了一个图片(24位的BMP)含有RGB值的数组,不知道怎么把它存储到电脑上面,存储为一个bmp文

你的等级是三级,我就不怎么要求了。

我以前做了些工作,刚才改了一下:
注意不同编译器(我主要指的是TC可能要修改一下WORD的定义之类的)

#include <mem.h>
#include <dos.h>
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma pack(1)

typedef unsigned char BYTE; /*一个字节的整型*/
typedef unsigned short int WORD; /*两个字节的整型*/
typedef unsigned long DWORD; /*四个字节的整型*/

/*文件头结构*/
typedef struct tagBITMAPFILEHEADER
{
WORD bfType; /*文件类型,BM为BMP*/
DWORD bfSize; /*文件的大小(字节)*/
WORD bfReserved1; /*保留*/
WORD bfReserved2; /*保留*/
DWORD bfOffBits; /*本结构开始处至图形阵列的偏移字节数*/
}BITMAPFILEHEADER;

/*文件信息头结构*/
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize; /*本结构的字节数*/
DWORD biWidth; /*以像素数表示图形的宽度*/
DWORD biHeight; /*以像素数表示图形的高度*/
WORD biPlanes; /*色彩平面数,必须为1*/
WORD biBitCount; /*一个像素所占的位数,可以是1、4、8、24*/
DWORD biCompression; /*图形压缩形式,0为不压缩*/
DWORD biSizeImage; /*图形的字节数*/
DWORD biXPelsperMeter; /*1米内的水平像素数*/
DWORD biYPelsPerMeter; /*1米内的垂直像素数*/
DWORD biClrUsed; /*图形中实际用到的像素数*/
DWORD biClrlmportant; /*图形中的重要的颜色数*/
}BITMAPINFOHEADER;

/*颜色*/
typedef struct tagrgb
{
BYTE B;
BYTE G;
BYTE R;
}rgbDATA;

int main(int argc,char *argv[])
{
DWORD Height=240,Width=320;
DWORD BytePerLine,FillZeroNum,PixelN;
DWORD i,j;

BITMAPFILEHEADER fileheader;
BITMAPINFOHEADER infoheader;

rgbDATA *rgbdata;
BYTE *R,*G,*B;

char *BMtype="BM";
char Zeros[5]="\0\0\0\0";
FILE *fpout;

/*这里生成rgb颜色*/
PixelN=Height*Width;
R=(BYTE *)malloc(sizeof(BYTE)*PixelN);
G=(BYTE *)malloc(sizeof(BYTE)*PixelN);
B=(BYTE *)malloc(sizeof(BYTE)*PixelN);
rgbdata=(rgbDATA *)malloc(sizeof(rgbDATA)*PixelN);
for (i=0;i<PixelN;i++)
{
R[i]=255;
G[i]=0;
B[i]=0;
R[i]=rand()%256;
G[i]=rand()%256;
B[i]=rand()%256;
}

for (i=0;i<PixelN;i++)
{
rgbdata[i].R=R[i];
rgbdata[i].G=G[i];
rgbdata[i].B=B[i];
}

/*写*/
fpout=fopen("d:\\abc.bmp","wb");
if (fpout==NULL)
{
printf("Can not open file!\nPress any key to exit:");
getch();
exit(0);
}

/****生成BMP文件头*/
BytePerLine=(3*Width+3)&0xFFFFFFFC; /*每行多少个字节,包括补零*/
FillZeroNum=(3*Width)&0x03; /*补零的个数*/

fileheader.bfType=*((WORD *)(BMtype));
fileheader.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+Height*BytePerLine;
fileheader.bfReserved1=0;
fileheader.bfReserved2=0;
fileheader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
infoheader.biSize=sizeof(BITMAPINFOHEADER);
infoheader.biWidth=Width;
infoheader.biHeight=Height;
infoheader.biPlanes=1;
infoheader.biBitCount=24;
infoheader.biCompression=0;
infoheader.biSizeImage=Height*BytePerLine;
infoheader.biXPelsperMeter=(WORD)(300*39.37007874);
infoheader.biYPelsPerMeter=(WORD)(300*39.37007874);
infoheader.biXPelsperMeter=0;
infoheader.biYPelsPerMeter=0;
infoheader.biClrUsed=0;
infoheader.biClrlmportant=0;
fwrite(&fileheader,sizeof(fileheader),1,fpout);
fwrite(&infoheader,sizeof(infoheader),1,fpout);

for (i=0;i<Height;i++) /*注意:JPG从左上角开始,往右往下;而BMP是从左下角开始,往右往上*/
{
fwrite(&(rgbdata[i*Width]),sizeof(rgbDATA),Width,fpout);
if (FillZeroNum)
fwrite(Zeros,sizeof(BYTE),4-FillZeroNum,fpout);
}
fclose(fpout);
free(R);
free(G);
free(B);
free(rgbdata);
printf("OK");
getch();
return 0;
}

10. C语言 保存BMP文件

你是怎么处理的呢,处理后的数据在哪呢。在数组中吗,还是说直接在原文件上处理了。
另存为,就是用“wb”方式另外创建一个空文件,把这些数据按照BMP的格式写进去。

热点内容
酒店酒管软件服务器ip段 发布:2024-11-17 17:34:10 浏览:916
关系数据库关键字 发布:2024-11-17 17:20:12 浏览:307
微信脚本添加好友 发布:2024-11-17 17:19:59 浏览:566
不支持ftpovertls 发布:2024-11-17 17:15:05 浏览:229
腾讯下载视频加密 发布:2024-11-17 17:14:32 浏览:901
手机站源码下载 发布:2024-11-17 17:12:17 浏览:147
root密码忘记了怎么办 发布:2024-11-17 17:08:08 浏览:141
摩斯密码V代表什么 发布:2024-11-17 16:58:34 浏览:384
微信表情压缩 发布:2024-11-17 16:49:30 浏览:165
linux下firefox 发布:2024-11-17 16:44:10 浏览:57