⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mga_gif.c

📁 linux下显示各种格式图片
💻 C
字号:
/* 	(c) HelDoRe	Gif unit ...    v0.0.5			Supported formats :			libungif :-)*/			#define VERGIF " unit v0.0.5"#include <stdio.h>#include <string.h>#include "../mga_view.h"#ifdef USE_LIBGIF#include <gif_lib.h>#endifvoid help_gif(){#ifdef USE_LIBGIFprintf("GIF%s\n   + uses libungif\n",VERGIF);#endif}int detect_gif(){#ifdef USE_LIBGIF    int form79,dane,ero,extcode;    short int GIsyg;    GifRecordType rectyp;    GifByteType *extension;    GifFileType *gplik;    static int InterlacedOffset[]={0,4,2,1},InterlacedJumps[]={8,8,4,2};    unsigned char linia[4000];	fread(&GIsyg,sizeof (short int),1,plik);	    if (GIsyg != 18759) return 1;	     fseek(plik,2,SEEK_CUR);	     form79=fgetc(plik);form79-=48;	     fseek(plik,1,SEEK_CUR);	    image_x=fgetc16b(plik);	    image_y=fgetc16b(plik);	    dane=fgetc(plik);	    depth=dane & 0x07;	    depth++;	    if (check_image(image_x,image_y,depth)==3) return 3;	    gplik=DGifOpenFileName(mee);	    printf("GIF%s\n",VERGIF);	    printf("GIF8%ia detected : %ix%ix%i  %i colors",form79,image_x,image_y,depth,gplik->SColorMap->ColorCount);			for (tempi=0;tempi<gplik->SColorMap->ColorCount;tempi++) {			    tab2r[tempi]=gplik->SColorMap->Colors[tempi].Red;			    tab2g[tempi]=gplik->SColorMap->Colors[tempi].Green;			    tab2b[tempi]=gplik->SColorMap->Colors[tempi].Blue;			    }	    do {		if (DGifGetRecordType(gplik,&rectyp) == GIF_ERROR){		    }		    		    switch (rectyp) {		    case IMAGE_DESC_RECORD_TYPE:			if (DGifGetImageDesc(gplik) == GIF_ERROR) {			    PrintGifError();			}			image_x=gplik->Image.Width;			image_y=gplik->Image.Height;			if (gplik->Image.Interlace) {				printf("    interlaced");			for (form79=depth=0;depth<4;depth++)			    for (ero=gplik->Image.Top+InterlacedOffset[depth];ero<gplik->Image.Top+gplik->Image.Height;ero+=InterlacedJumps[depth]){			    DGifGetLine(gplik,linia,image_x);		           for (x=0;x<image_x;x++)		            {				tempi=linia[x];				tabr[x+(ero*image_x)]=tab2r[tempi];				tabg[x+(ero*image_x)]=tab2g[tempi];				tabb[x+(ero*image_x)]=tab2b[tempi];			    }			    }			} else {			for (y=0;y<image_y;y++) {			    DGifGetLine(gplik,linia,image_x);		           for (x=0;x<image_x;x++)		            {				tempi=linia[x];				tabr[x+(y*image_x)]=tab2r[tempi];				tabg[x+(y*image_x)]=tab2g[tempi];				tabb[x+(y*image_x)]=tab2b[tempi];			    }		           }			  }			break;    		    case EXTENSION_RECORD_TYPE:			if (DGifGetExtension(gplik, &extcode, &extension) == GIF_ERROR) {			}			while (extension != NULL) {			    if(extcode == COMMENT_EXT_FUNC_CODE) {				extension[extension[0]+1] = '\000';				strcat(linia, (char*)extension+1);				printf("\nComment         : ");				for (x=5;x<extension[0]+6;x++){				printf("%c",linia[x]);}			    }			    if (DGifGetExtensionNext(gplik, &extension) == GIF_ERROR) {			    }			}			break;		    case TERMINATE_RECORD_TYPE:			break;					    default:			break;		    		    }		    }		    while (rectyp !=TERMINATE_RECORD_TYPE);	    printf("\n");	DGifCloseFile(gplik);    return 0;	#else    return 1;#endif}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -