[c++] libjpeg-turbo와 이미지 변형

libjpeg-turbo는 JPEG 이미지를 빠르게 압축하고 푸는 라이브러리이다. 이 라이브러리를 사용하여 이미지를 압축하는 방법에 대해 알아보고, 이미지에 효과를 적용하여 변형하는 방법을 살펴보겠다.

libjpeg-turbo 라이브러리 설치

libjpeg-turbo 라이브러리를 설치하려면 다음 명령을 사용하면 된다.

sudo apt-get install libjpeg-turbo

이미지 압축

libjpeg-turbo를 사용하여 이미지를 압축하려면 다음과 같은 단계를 따라야 한다.

  1. jpeg_compress_struct 구조체를 초기화한다.
  2. 입력 이미지를 로드하고 jpeg_create_compress 함수를 사용하여 JPEG 압축 세션을 초기화한다.
  3. jpeg_set_defaultsjpeg_set_quality 함수를 사용하여 JPEG 압축 옵션을 설정한다.
  4. jpeg_start_compressjpeg_write_scanlines 함수를 사용하여 이미지를 압축한다.
  5. jpeg_finish_compressjpeg_destroy_compress 함수를 사용하여 압축을 종료한다.

예를 들어, 다음과 같이 C++ 코드로 이미지를 압축할 수 있다.

#include <jpeglib.h>

// ... 이미지 데이터를 가져오는 코드 ...

jpeg_compress_struct cinfo;
jpeg_create_compress(&cinfo);
// ... 압축 옵션 설정 ...
jpeg_start_compress(&cinfo, TRUE);
// ... 이미지 압축 ...
jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);

이미지 변형

libjpeg-turbo를 사용하여 이미지를 변형하려면 cjpegdjpeg 유틸리티를 사용할 수 있다.

예를 들어, 이미지를 뒤집거나 회전시키려면 다음과 같이 사용할 수 있다.

djpeg -outfile output.jpg input.jpg | cjpeg -grayscale -rotate 90 -outfile output_transformed.jpg

위의 명령은 input.jpg 파일을 읽어 회색조로 변환한 후 90도 회전시킨 뒤 output_transformed.jpg 파일로 저장한다.

libjpeg-turbo 라이브러리를 사용하여 이미지를 압축하고 변형하는 방법을 살펴보았다. 더 많은 세부 정보는 libjpeg-turbo 공식 웹사이트에서 확인할 수 있다.

참고 자료: