인터넷에서 jpeg 파일을 다운로드 한다. 아래의 예시에서는 test.jpg로 이름을 변경한 다음 아래의 코드를 이용하여 테스트 프로그램을 생성하여 테스트한다.
#include <stdio.h>
#include <stdlib.h> // malloc and free
#include <string.h>
#include <jpeglib.h>
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
int main(int argc, char** argv)
{
unsigned char fn[]="test.jpg";
unsigned char *data;
FILE* fp = fopen(fn,"rb");
if (fp == NULL)
{
printf("Failed to open '%'sn", fn);
return 0;
}
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, fp);
jpeg_read_header(&cinfo, TRUE);
int w = cinfo.image_width;
int h = cinfo.image_height;
int d = cinfo.jpeg_color_space;
int out_h = cinfo.output_height;
printf("width:%d height:%d depth:%d out_height:%dn", w, h ,d, out_h);
//unsigned char *data = new unsigned char[w * h * d];
data = (unsigned char*)malloc(w*h*d);
while (cinfo.output_scanline < cinfo.output_height)
{
jpeg_read_scanlines(&cinfo, &data, 1);
data += d * cinfo.output_width;
}
fclose(fp);
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
free(data);
return 0;
}
소스의 입력이 완료되면 다음과 같이 컴파일 한다.
$ gcc -o jpeg_info jpeg_info.c -ljpeg
실행은 다음과 같이 진행한다.
$ ./jpeg_info test.jpeg
"embeddedclub.net을 15년 넘게 운영하고 있지만, H사 퇴사이후 딱히 임베디드 시스템 위주의 개발을 한 것도 아니고, 야근에 밤샘으로 바뻐서 방치만 해놓고 있었는데 올해 10월에 문을 닫기로 하였습니다. 그래도 전에는 접속자수 및 이용량도 있고 해서 예전자료 백업용으로 놔뒀는데 이제는 그럴 이유가 없어졌고, 간혹 예전 자료가 필요한 경우가 있어 이제 개인 블러그로 옮기는 것으로 결정하였습니다. " |
반응형
최근댓글