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

📄 mga_zmg.c

📁 linux下显示各种格式图片
💻 C
字号:
/* 	(c) HelDoRe	Zmg unit ... v0.0.5*/			#define VERZMG " unit v0.0.5"#include <stdio.h>#include "../mga_view.h"#include <zlib.h>void help_zmg(){#ifdef USE_ZMGprintf("ZMG%s\n * + color\n * + color compressed\n * + grayscale\n * + grayscale compressed\n",VERZMG);#endif}int detect_zmg(){#ifdef USE_ZMG    char ZMsyg[]="zMG";    int wer;    Byte buf[1025*650];    uLong sinput,soutput,stemp;        for (tempi=0;tempi<3;tempi++) {	if ((char)fgetc(plik) != ZMsyg[tempi]) return 1;}    wer=fgetc(plik)-48;    image_x=fgetc16(plik);    image_y=fgetc16(plik);    if (check_image(image_x,image_y,24)==3) return 3;        printf("ZMG%s\n",VERZMG);    printf("ZMG v%i detected : %ix%i ",wer,image_x,image_y);    if (wer==1) {    YU12=1;	        printf("uncompressed color");    for (tempi=0;tempi<image_x*image_y;tempi++) 	    y_image[tempi]=fgetc(plik);        for (tempi=0;tempi<image_x*image_y/4;tempi++) 	    cr_image[tempi]=fgetc(plik);    for (tempi=0;tempi<image_x*image_y/4;tempi++) 	    cb_image[tempi]=fgetc(plik);    }    if (wer==2) {    YU12=1;	        printf("compressed color");    sinput=fgetc(plik)*256*256+fgetc(plik)*256+fgetc(plik);    soutput=(1025*650);    for (tempi=0;tempi<sinput;tempi++) buf[tempi]=fgetc(plik);    stemp=uncompress(y_image,&soutput,buf,sinput);    sinput=fgetc(plik)*256*256+fgetc(plik)*256+fgetc(plik);    soutput=(1025*650);    for (tempi=0;tempi<sinput;tempi++) buf[tempi]=fgetc(plik);    stemp=uncompress(cr_image,&soutput,buf,sinput);    sinput=fgetc(plik)*256*256+fgetc(plik)*256+fgetc(plik);    soutput=(1025*650);    for (tempi=0;tempi<sinput;tempi++) buf[tempi]=fgetc(plik);    stemp=uncompress(cb_image,&soutput,buf,sinput);    }    if (wer==3) {    YU12=1;	        printf("uncompressed grayscale");    for (tempi=0;tempi<image_x*image_y;tempi++) 	    y_image[tempi]=fgetc(plik);        for (x=0;x<(image_x*image_y)/4;x++) {	cb_image[x]=-127;	cr_image[x]=-127;    }    }    if (wer==4) {    YU12=1;	        printf("compressed grayscale");    sinput=fgetc(plik)*256*256+fgetc(plik)*256+fgetc(plik);    soutput=(1025*650);    for (tempi=0;tempi<sinput;tempi++) buf[tempi]=fgetc(plik);    stemp=uncompress(y_image,&soutput,buf,sinput);    for (x=0;x<(image_x*image_y)/4;x++) {	cb_image[x]=-127;	cr_image[x]=-127;    }}    printf("\n");    if ((wer != 1) && (wer != 2) && (wer != 3) && (wer != 4)) {	printf("v%i not supported yet!\n",wer);	return 2;	}    return 0;#else    return 1;#endif}int save_zmg(int vwrite){#ifdef USE_ZMG    char ZMGsyg[]="zMG";    FILE *zapis;    char nazwa[100];    int img_x,img_y;        Byte buf[1025*650];    uLong sinput,soutput,stemp;    vwrite+=48;    img_x=image_x;    img_y=image_y;    tempi=0;    do {	nazwa[tempi]=mee[tempi];	tempi++;	}    while ((mee[tempi] != 46) && (tempi!=strlen(mee)));    nazwa[tempi++]=46;    nazwa[tempi++]=122;    nazwa[tempi++]=109;    nazwa[tempi++]=103;    nazwa[tempi++]=0;    printf("ZMG%s : Saving to ",VERZMG);    zapis=fopen(nazwa,"w");    fprintf(zapis,ZMGsyg);    fputc(vwrite,zapis);    if (img_x<255) {	fputc(0,zapis);	} else {	    img_x=img_x>>8;	    fputc(img_x,zapis);	    img_x=image_x;	    img_x=img_x<<8;	    img_x=img_x>>8;	    }    fputc(img_x,zapis);    if (img_y<255) {	fputc(0,zapis);	} else {	    img_y=img_y>>8;	    fputc(img_y,zapis);	    img_y=image_y;	    img_y=img_y<<8;	    img_y=img_y>>8;	    }    fputc(img_y,zapis);   if (vwrite==49) {    printf("uncompressed color\n");    for (tempi=0;tempi<image_x*image_y;tempi++) 	    fputc(y_image[tempi],zapis);        for (tempi=0;tempi<image_x*image_y/4;tempi++) 	    fputc(cr_image[tempi],zapis);    for (tempi=0;tempi<image_x*image_y/4;tempi++) 	    fputc(cb_image[tempi],zapis);    }   if (vwrite==50) {    printf("compressed color\n");    sinput=(image_x*image_y);    soutput=(1025*650);    tempi=compress2(buf,&soutput,y_image,sinput,9);    stemp=soutput;    if (soutput<255) {	fputc(0,zapis);	fputc(0,zapis);	} else {	    stemp=stemp>>16;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp>>8;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp<<8;	    stemp=stemp>>8;	    }    fputc(stemp,zapis);        for (tempi=0;tempi<soutput;tempi++) 	    fputc(buf[tempi],zapis);        sinput=(image_x*image_y)/4;    soutput=(1025*650);    tempi=compress2(buf,&soutput,cr_image,sinput,9);    stemp=soutput;    if (soutput<255) {	fputc(0,zapis);	fputc(0,zapis);	} else {	    stemp=stemp>>16;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp>>8;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp<<8;	    stemp=stemp>>8;	    }    fputc(stemp,zapis);        for (tempi=0;tempi<soutput;tempi++) 	    fputc(buf[tempi],zapis);    sinput=(image_x*image_y)/4;    soutput=(1025*650);    tempi=compress2(buf,&soutput,cb_image,sinput,9);    stemp=soutput;    if (soutput<255) {	fputc(0,zapis);	fputc(0,zapis);	} else {	    stemp=stemp>>16;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp>>8;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp<<8;	    stemp=stemp>>8;	    }    fputc(stemp,zapis);        for (tempi=0;tempi<soutput;tempi++) 	    fputc(buf[tempi],zapis);    }       if (vwrite==51) {    printf("uncompressed grayscale\n");    for (tempi=0;tempi<image_x*image_y;tempi++) 	    fputc(y_image[tempi],zapis);    }   if (vwrite==52) {    printf("compressed grayscale\n");    sinput=(image_x*image_y);    soutput=(1025*650);    tempi=compress2(buf,&soutput,y_image,sinput,9);    stemp=soutput;    if (soutput<255) {	fputc(0,zapis);	fputc(0,zapis);	} else {	    stemp=stemp>>16;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp>>8;	    fputc(stemp,zapis);	    stemp=soutput;	    stemp=stemp<<8;	    stemp=stemp>>8;	    }    fputc(stemp,zapis);    for (tempi=0;tempi<soutput;tempi++) 	    fputc(buf[tempi],zapis);        }    fclose(zapis);    printf("Done...\n");    return 0;#endif}

⌨️ 快捷键说明

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