본문 바로가기

System Programmings/C++

[C++] 이미지 바이너리 읽기

반응형

이미지의 구조를 한번 파악해 볼까 하고, jpg 파일을 열어보려고 프로그램을 만들었는데,

text 파일을 Open시키는 것처럼 해서는 이미지 파일을 끝까지 열 수 없는 현상이 생겼다.

C/C++ 언어는 최근에 시작했기 때문에 모르는 것 투성이라서 찾아봤더니 바이너리(?) 형식으로

열어야 되더라.


아래 코드가 jpg 파일을 바이너리 형태로 여는 코드다.


#include <iostream>
using namespace std;

int main() {
	FILE *fp = fopen("C:\\file1.jpg","rb");
	fseek(fp,0,SEEK_END); //go to end
	int len = ftell(fp); //get position at end (length)
	fseek(fp,0,SEEK_SET); //go to beg.
	char *buf = (char *)malloc(len); //malloc buffer
	fread(buf,len,1,fp); //read into buffer
	int j = 0;
	bool bFirst = true;

	for(int i=0; i< 3300; i++)
	{
		if(bFirst)
		j=i;
		printf("%02X ", buf[i] & 0xff);
		if(0 == (i+1)%16){
			printf("   ");
			for( ; j<= i; j++)
			{
				if(buf[j] != '\n')
				printf("%c ", buf[j]);
			}
			
			printf("\n", i);
			bFirst = true;
		}else
		bFirst = false;
	}
	fclose(fp);
	
	return 0;
}
반응형