问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用c语言读取图片

发布网友 发布时间:2022-04-22 09:10

我来回答

3个回答

热心网友 时间:2022-04-12 22:38

#include

using namespace std;

#define Twoto1(i,j,w) i*w+j

void createimage(unsigned char *&img, int w, int h)

{img = new unsigned char[w*h];}

void delateimage(unsigned char*img)

{delete []img;}

void readimage(unsigned char*img, int w, int h, char *fname)

{

FILE *fp;

fopen_s(&fp,fname, "rb");

if (fp == NULL){ cout << "error" << endl; return; }

size_t result;

result=fread(img , sizeof(unsigned char), w*h, fp);

if (result != w*h)

{

cout << "Reading error" << endl;

return;

}

else

cout << "Reading Ok!" << endl;

fclose(fp);

}

void mobanjuanji(unsigned char image, unsigned char*image1, int w, int h, float moban[5][5])

{

for (int i = 0; i for (int j = 0; j if (iw - 3 || j>h - 3)

image1[Twoto1(i,j,w)] = 0;

else

{

float temp = 0;

for (int m = 0; m<5; m++)

for (int n = 0; n<5; n++)

{

temp += (image[Twoto1(i-2+m,j-2+n,w)] moban[m][n]);

 }

if (temp>255) image1[Twoto1(i, j, w)] = 255;

else if (temp<0) image1[Twoto1(i, j, w)] = 0;

else image1[Twoto1(i, j, w)] = temp;

}

}

void saveimage(unsigned char *img, int w, int h, char *fname)

{

FILE *fp;

fopen_s(&fp, fname, "wb");

if (fp == NULL) { cout << "error" << endl; return; }

size_t result;

result = fwrite(img, sizeof(unsigned char), w*h, fp);

if (result != w*h)

{

cout << "Write error" << endl;

return;

}

else

cout << "Write Ok!" << endl;

fclose(fp);

}

void main()

{

unsigned char *img;

unsigned char *img1;

float moban[5][5] = { {0,0,0,0,0},{0, -1, 0, 1, 0 }, { 0, -2, 0, 2, 0 }, { 0, -1, 0, 1, 0 }, { 0,0,0,0,0 } };

//float moban[5][5] = { 0 };

int w = 512, h = 512;

createimage(img, w, h);

createimage(img1, w, h);

readimage(img, w, h, "E:\ss.raw");

mobanjuanji(img, img1,w, h, moban);

saveimage(img, w, h, "E:\ss_1.raw");

saveimage(img1, w, h, "E:\ss_2.raw");

delateimage(img);

delateimage(img1);

}

扩展资料

C语言实现一个图片的读出和写入

#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\n",size);

FILE * pFile,*qw;

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

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

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

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

printf("%d\n",size);

fread(buffer,1,size,qw);

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

fclose (pFile);

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

return 0;

}

热心网友 时间:2022-04-12 23:56

  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 ; 
    height=bih.biHeight;
    if(width % 4 !=0) 
        width=width+ (4-width % 4); 
    DWORD size=width*(bih.biBitCount/8)*height;
    unsigned char* pData=new unsigned char[size]; 

    fread(pData,size,1,fp); 
    
    int bmWidthBytes=width*bih.biBitCount /8; 
    int bmBitsPixel=bih.biBitCount ; 
    int nBit=bmBitsPixel/8; 

    int z; 
    
    for (int y=0; y<height; y++) 
    { 
        for (int x=0; x<width; x++) 
        { 
            z=height-y-1; 
            *(r+(y*width+x))=pData[x*nBit+2+z*bmWidthBytes];
            *(g+(y*width+x))=pData[x*nBit+1+z*bmWidthBytes];
            *(b+(y*width+x))=pData[x*nBit+z*bmWidthBytes];
        } 
    } 
}

void ImageWrite(AnsiString name1,int *r,int *g,int *b)
{
    //read image
    FILE *fw;
    fw=fopen(name1.c_str(),"wb");
    
    fwrite(&bfType,sizeof(WORD),1,fw);
    fwrite(&bfSize,sizeof(DWORD),1,fw);
    fwrite(&bfReserved1,sizeof(WORD),1,fw); 
    fwrite(&bfReserved2,sizeof(WORD),1,fw); 
    fwrite(&bfOffBits,sizeof(DWORD),1,fw); 
    fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fw);

    int width=bih.biWidth ; 
    int height=bih.biHeight;
    if(width % 4 !=0) 
        width=width+ (4-width % 4); 
    DWORD size=width*(bih.biBitCount/8)*height;
    unsigned char* pData=new unsigned char[size]; 

    int bmWidthBytes=width*bih.biBitCount /8; 
    int bmBitsPixel=bih.biBitCount ; 
    int nBit=bmBitsPixel/8; 

    
    int z; 
    for (int y=0; y<height; y++) 
    { 
        for (int x=0; x<width; x++) 
        { 
            z=height-y-1; 
            pData[x*nBit+2+z*bmWidthBytes]=*(r+(y*width+x));
            pData[x*nBit+1+z*bmWidthBytes]=*(g+(y*width+x));
            pData[x*nBit+z*bmWidthBytes]=*(b+(y*width+x));        
        } 
    } 

    fwrite(pData,size,1,fw);
}

热心网友 时间:2022-04-13 01:30

图片也是文件,就用fopen(),fread()等操作文件的函数就可以读了,但是只有你知道图片文件的确切格式,才可能正确读取
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
按现行会计制度的规定,短期借款所发生的利息,一般应记入( )科目。 省钱输送机 江西同步带欧规皮带滚轮模组规格 请问91年3月12日是什么星座拜托各位大神 1991年3月11的双鱼座怎样拜托了各位 谢谢 ...年11月3号。这两个时间出生的人各是什么塔罗牌?拜托各位大神... 孤岛惊魂4怎么不显示dlc 微信百万保障诈骗是怎么回事 秋季大棚里应候种植什么蔬菜最适合 上海音乐学院钢琴十级通过率 少年四大名捕有哪几个版本啊? 捕鱼之海底捞宠物怎么弄出来?要花钱吗?我的是安... WOW 新版本里 奥法天赋里有个叫 欺凌弱小 对诱捕 ... 韩雪出道时,她爷爷送给她四句话,是哪四句?大神... 河南迈锐恩商贸有限公司怎么样? 超级捕快的版本升级 苏州园区迈锐公司关于离岗体检的要求 张翰版本新四大名捕什么时候放映 中国led显示屏前三位品牌企业有哪些? 同一个怎样把原来手机上的微多开分身移到另... 西安迈锐斯克进出口贸易有限公司怎么样? 中山英迈锐信息技术有限公司怎么样? 韩雪拥有怎样的家世? 校长讲话听后感 魔兽世界 最新版本关于诱捕的问题,高手来帮帮忙啊 江阴迈锐塑料制品有限公司怎么样? 天天酷跑新版本捕获了的宝箱怎么没有奖励? 深圳迈锐箱包有限公司怎么样? 为什么校长喜欢讲话?还讲那么长?还全是废话! 创造与魔法新版本宠物捕捉攻略 宠物不吃饲料怎么办 电脑无法读取图片 pokemon go新版本怎么追踪精灵 追踪技巧介绍 如何读取大量图片文件? 巴林首相在美国去世,他的一生有何成就? 怎样读取电脑内存里的图片? 巴林首相在美国去世,去世的原因是什么? 常用的图片读取软件用哪种? 北京遇上西雅图中的音乐都是什么歌? 手机里面有致列音效吗? 新飛飛 捕捉魔鬼魚把引誘去哪兒啊? 酷狗什么音效好 有一首英文歌,男声,唱西雅图的,歌词里也有西雅... C语言如何读取jpg格式的图片 为什么电脑插上耳机后没声音 T9奶茶怎么样 再见西雅图 歌词 图片怎么从数据库里读取出来? 22款丰田汉兰达音效中高低 北京遇上西雅图二人分别时的英文歌曲是什么 美国海军第五舰队司令在巴林被谋杀身亡,你认为幕...