[c++] libjpeg-turbo의 사용 예

libjpeg-turbo는 JPEG 이미지를 처리하기 위한 빠르고 효율적인 라이브러리입니다. 이 라이브러리를 사용하면 JPEG 이미지를 빠르게 압축하고 해제할 수 있으며, 다양한 응용 프로그램에서 이미지 처리에 활용할 수 있습니다.

이 블로그에서는 libjpeg-turbo를 사용하여 이미지를 압축하고 해제하는 간단한 예제를 다루겠습니다.

libjpeg-turbo 설치하기

libjpeg-turbo를 설치하려면 다음과 같은 명령을 사용합니다.

sudo apt-get install libjpeg-turbo8-dev

libjpeg-turbo를 사용한 이미지 압축하기

아래의 C++ 코드는 libjpeg-turbo를 사용하여 이미지를 압축하는 간단한 예제입니다.

#include <turbojpeg.h>
#include <iostream>

int main() {
    // 이미지 데이터를 읽어온다고 가정
    unsigned char* imgData; 
    // 이미지 데이터의 가로 길이와 세로 길이
    int width, height; 

    // libjpeg-turbo 객체 생성
    tjhandle compressor = tjInitCompress();
    // 압축된 이미지 데이터를 저장할 버퍼 생성
    unsigned char* compressedBuf;
    // 압축된 이미지 데이터 크기
    unsigned long compressedSize;

    // 이미지를 압축
    tjCompress2(compressor, imgData, width, 0, height, TJPF_RGB, &compressedBuf, &compressedSize, TJSAMP_444, 90, 0);

    // 압축된 이미지 데이터를 사용하여 필요한 작업을 수행

    // libjpeg-turbo 객체 해제
    tjDestroy(compressor);

    return 0;
}

위의 예제에서 tjInitCompress() 함수로 libjpeg-turbo를 초기화하고, tjCompress2() 함수로 이미지를 압축합니다. 압축된 이미지는 compressedBuf에 저장되며, 이후 원하는 작업을 수행할 수 있습니다.

libjpeg-turbo를 사용한 이미지 해제하기

이제 libjpeg-turbo를 사용하여 이미지를 해제하는 방법을 알아보겠습니다.

#include <turbojpeg.h>
#include <iostream>

int main() {
    // 압축 해제할 이미지 데이터를 읽어온다고 가정
    unsigned char* compressedData;
    // 압축된 이미지 데이터 크기
    unsigned long compressedSize;
    // 압축 해제된 이미지 데이터의 가로 길이와 세로 길이
    int width, height;
    
    // libjpeg-turbo 객체 생성
    tjhandle decompressor = tjInitDecompress();

    // 이미지를 해제
    tjDecompress2(decompressor, compressedData, compressedSize, imgData, width, 0, height, TJPF_RGB, 0);

    // 해제된 이미지 데이터를 사용하여 필요한 작업을 수행

    // libjpeg-turbo 객체 해제
    tjDestroy(decompressor);

    return 0;
}

앞서의 예제와 마찬가지로 tjInitDecompress() 함수로 libjpeg-turbo를 초기화하고, tjDecompress2() 함수로 이미지를 해제합니다. 해제된 이미지 데이터는 imgData에 저장됩니다.

libjpeg-turbo를 이용하면 이미지를 효율적으로 압축하고 해제할 수 있으며, 이미지 처리에 필요한 다양한 작업을 수행할 수 있습니다.

결론

이번 글에서는 libjpeg-turbo를 사용하여 이미지를 압축하고 해제하는 간단한 예제를 살펴보았습니다. libjpeg-turbo는 높은 성능과 효율성을 제공하므로 이미지 처리 프로그램을 개발할 때 매우 유용하게 활용할 수 있습니다. 여기서 다룬 내용을 참고하여 이미지 처리에 libjpeg-turbo를 적극 활용해 보시기 바랍니다.

참고문헌