рдирдорд╕реНрдХрд╛рд░ рдкреНрд░рд┐рдп рдЦрд╝рдмрд░реВрдЬрд╝рд░реАред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЗрд▓реЗрдХреНрдЯреНрд░реЛ-рдПрд▓ рдЙрдкрдЧреНрд░рд╣ рд╕реЗ рдлрд╝реЛрдЯреЛ рдХреЛ рджреЛ рд╕реНрд╡рд░реВрдкреЛрдВ рдореЗрдВ рдПрдлрд╝рдЯреАрдкреА рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд jpg рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИред
рджреВрд╕рд░рд╛,
рдЬреИрд╕рд╛ рдХрд┐ рдЬрд╝реЗрд▓реЗрдВрдирд┐рдХреЛрдЯ рдиреЗ рд▓рд┐рдЦрд╛ рдерд╛рдПрдХ "рдЧреБрдкреНрдд" рдкреНрд░рд╛рд░реВрдк рдХреЗрд╡рд▓ рдореМрд╕рдо рд╡рд┐рдЬреНрдЮрд╛рдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХреЛрдИ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдЖрд╢реНрд╡рд╛рд╕рди рджрд┐рдпрд╛ рдХрд┐ рддрд╕реНрд╡реАрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЬреЗрдкреАрдИрдЬреА рдкрд░ рдПрдХ рд╣реА рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдкрд╛рда рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА - рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЗрдВ, рдКрдВрдЪрд╛рдЗрдпреЛрдВ, рддрд╛рдкрдорд╛рди, рдЧрддрд┐ ...
рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рддрд╕реНрд╡реАрд░ рдХрд╛рдлреА рдкрдардиреАрдп рд╣реИ, рдФрд░ рдпрд╣ рдЬреЗрдкреАрдЬреА рд╕реЗ рдХреБрдЫ рд╣рдж рддрдХ рдкреНрд░рддрд┐ рдЪреИрдирд▓ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИред рдЕрдЧрд░ JPG рдореЗрдВ 8 (рдЧреНрд░реЗ рдХреЗ 256 рд╢реЗрдб) рд╣реИрдВ, рддреЛ L15 рдореЗрдВ 10 (рдЧреНрд░реЗ рдХреЗ 1024 рд╢реЗрдб) рд╣реИрдВред
рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЫрд╡рд┐ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рддреЛ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪрд▓реЛ рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдирд╣реАрдВ рд╣реИред
Jpg 2784x2784 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЙрдкрдЧреНрд░рд╣ рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдЖрдХрд╛рд░ред 2784 рдХреЛ HEX рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рд╣рдореЗрдВ 0A E0 рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕ рдХреНрд░рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ E0 0A рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ
рдорд┐рд▓рд╛
e0 0a 00 00 e0 0a 00 00 10 00
рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ 4 рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдирд╛ рдФрд░ рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣рдореЗрдВ
2784 2784 16
рдорд┐рд▓рддрд╛ рд╣реИ
рдлрд╝рд╛рдЗрд▓ 0xEC8800 (15501312) рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрд╕ рдКрдкрд░ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рд╕реЗ рдбрд╛рд▓рд╛ рдЧрдпрд╛ред
15501312 / (2784 * 2784) = 2ред рдЗрди рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИред
рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЫрд╡рд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╕реНрдерд╛рди рд╕реЗ рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕рдХреА рддрд▓рд╛рд╢ рдХреИрд╕реЗ рдХрд░реЗрдВред
рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдкрддреЗ рдХреЗ рд▓рд┐рдП L15 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рджреЛ рджрд┐рди рдпрд╛ рдЗрд╕рдХреЗ рдХрд░реАрдм рдХреА рд╕рд╛рдЗрдЯ, рдпрд╛ рдЗрд╕ рдкрддреЗ рдкрд░ рдСрдлрд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдЦрдВрдб рдХреЛ "рд╣реЗрдб-рдСрди" рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВрдЧреЗ, 2784 рдпрд╛ 11136 рдирдВрдмрд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рддрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рдирд╛ (рдпрд╣ рдЖрд░рдЬреАрдмреА рдЪреИрдирд▓реЛрдВ рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╣реИ)ред
рдлрд┐рд░ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрдЦреНрдпрд╛ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдИ рдЧрдИ рд╣реИ, рдФрд░ рдпрджрд┐ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд▓рд╛ рдирдВрдмрд░ 16 рд╣реИ рдпрд╛ рдирд╣реАрдВ
рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рд╣реИ, рдмрдзрд╛рдИ рд╣реЛ, рддреЛ рд╣рдореЗрдВ рддрд╕реНрд╡реАрд░ рдХреА рд╢реБрд░реБрдЖрдд рдорд┐рд▓реАред
long Find_Image_Pos(FILE *EL_Data,int *res_out) { unsigned int int_data; int resolution; unsigned long filepos; filepos=0; while(!feof(EL_Data)) { fseek(EL_Data,filepos,SEEK_SET); fread((void*)&int_data,sizeof(unsigned int),1,EL_Data); if(int_data==2784||int_data==11136) { resolution=int_data; fread((void*)&int_data,sizeof(unsigned int),1,EL_Data); if(int_data==resolution) { fread((void*)&int_data,sizeof(unsigned int),1,EL_Data); if(int_data==16) { *res_out=resolution; return ftell(EL_Data); } } } filepos++; } return 0; }
рд╡рд┐рдзрд┐ рдмреИрд╕рд╛рдЦреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреА рдЧрдИ рд╣реИред
рдЕрдм рдЖрдкрдХреЛ рдЗрд╕ рдЫрд╡рд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдпрд╛ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдореБрдЭреЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдФрд░ рдХреЛрдб рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреЛрд░реНрдЯреЗрдмрд▓ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
2 . void Save_Image(FILE *EL_Data,FILE *EL_Image,long pos,int resolution) { #ifdef P5 char header[50]; sprintf(header,"P5\n%i %i\n1024\n",resolution,resolution); fwrite(&header,strlen(header),1,EL_Image); #else fprintf(EL_Image,"P2\n%i %i\n1024\n",resolution,resolution); #endif int progress=-1; int max=0; int x=0,y=0; int pixel=0; fseek(EL_Data,pos,SEEK_SET); for(y=0;y<resolution;y++) { if(progress<(y*100/resolution)) { progress=(y*100/resolution); cout<<progress<<"%"<<endl; } for(x=0;x<resolution;x++) { fread(&pixel,2,1,EL_Data); #ifdef P5 fwrite(&pixel,1,1,EL_Image); #else fprintf(EL_Image,"%i\n",pixel); #endif if(pixel>max) max=pixel; } } cout<<"100 %"<<endl; cout<<"max="<<max<<endl; }
P5 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдкрд┐рдХреНрд╕реЗрд▓ рдЬрд┐рдирдХреА рдЪрдордХ 255 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ (рдЕрд░реНрдерд╛рдд, 1 рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ) рдХрд╛рд▓рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо:
P2:

рдкреА 5

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдХреЛрдб рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
#include <iostream>; #include <stdio.h> #include <tchar.h> #include <stdlib.h> #include <windows.h> //#define P5 using namespace std; long Find_Image_Pos(FILE *EL_Data,int *res_out); void Save_Image(FILE *EL_Data,FILE *EL_Image,long pos,int resolution); int _tmain(int argc, _TCHAR* argv[]) { FILE *EL_Data,*EL_Image; if(argc==1) return 0; EL_Data=_wfopen(argv[1],L"rb"); if(!EL_Data) return 0; wchar_t out_file[300]; #ifdef P5 wsprintf(out_file,L"%s.P5.pgm",argv[1]); EL_Image=_wfopen(out_file,L"wb"); #else wsprintf(out_file,L"%s.P2.pgm",argv[1]); EL_Image=_wfopen(out_file,L"wt"); #endif if(!EL_Image) return 0; int resolution=0; long pos=Find_Image_Pos(EL_Data,&resolution); if(!pos) return 0; Save_Image(EL_Data,EL_Image,pos,resolution); fclose(EL_Image); fclose(EL_Data); return 0; }
рдПрдЪрдбреАрдЖрд░рдЖрдИ рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдЪреИрдирд▓ 10 рдмрд┐рдЯ рдХреА рд░рдВрдЧ рдЧрд╣рд░рд╛рдИ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред
UPD: рдПрдХ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдкрд╛рда рдбреЗрдЯрд╛ рдХреЛ wchar рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА ...