源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c语言常见图片格式判断实例

  • 时间:2022-05-11 02:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c语言常见图片格式判断实例
我想尽各种思路。今天,终于把图片判断搞定了。 在此,我写一下我的思路。希望对那些不想看代码的朋友们有帮助。 常风的的图片格式有:bmp,png,jpg,gif等图片格式。 我用的方法是读取图片头文件中的标识符:
[u]复制代码[/u] 代码如下:
unsigned short  BMP=0x4D42, JPG=0xD8FF, PNG[4]={0x5089,0x474E,0x0A0D,0x0A1A}, GIF[3]={0x4947,0x3846,0x6139};
你会发现,会一次读取n个字节的顺序不同;与用"okhit"打开的顺序不同。 这你都不用在意。 有了这个判断依据,下一步就是判断了。这个用中文说不清,请看原代码。 用的是if else结构. 可能,你在编译的时候,发现会打不开文件。请注意:打开的文件名
[u]复制代码[/u] 代码如下:
int main() {     FILE *fis;     short int i=0;     unsigned short pis[5];     if((fis=fopen("1.bmp","r"))==NULL)         printf("can not read %s\n","1.bmp");     fread(pis,8,1,fis);     for(i=0;i<4;++i)         printf("%0x..",pis[i]);     printf("\n");         if(pis[0]==BMP)              printf("it is a bmp\n");           else if(pis[0]==JPG)                printf("it is a jpg\n");             else if(PNG[0]==pis[0]&&PNG[1]==pis[1]&&PNG[2]==pis[2]&&PNG[3]==pis[3])                  printf("it is a png\n");               else if(GIF[0]==pis[0]&&GIF[1]==pis[1]&&GIF[2]==pis[2])                printf("it is a gif\n");     return 0; }
为了方便调用,特意做成了函数:
[u]复制代码[/u] 代码如下:
int istupian(char entry[]) /*返加值为 bmp; jpg; png; gif; */ {     FILE *fis;     short int i=0;     unsigned short pis[5];     int flag=0;//每次调用都进行初始化     if((fis=fopen(entry,"r"))==NULL)         printf("can not read %s\n",entry);     fread(pis,8,1,fis);     if(pis[0]==BMP)        {         flag=1;                printf("it is a bmp\n");     }     else if(pis[0]==JPG)        {         flag=2;         printf("it is a jpg\n");     }     else if(PNG[0]==pis[0]&&PNG[1]==pis[1]&&PNG[2]==pis[2]&&PNG[3]==pis[3])        {         flag=3;                printf("it is a png\n");     }     else if(GIF[0]==pis[0]&&GIF[1]==pis[1]&&GIF[2]==pis[2])        {         flag=4;                printf("it is a gif\n");     }     return flag; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部