[c++] libpng 압축

libpng은 Portable Network Graphics(PNG) 이미지 파일 형식을 생성하고 처리하기 위한 라이브러리입니다. libpng을 사용하면 이미지를 저장할 때 압축을 적용하여 파일 크기를 줄일 수 있습니다.

libpng을 사용하여 이미지를 압축하는 방법

libpng을 사용하여 이미지를 압축하는 방법은 다음과 같습니다.

  1. 이미지를 읽어들인다: 먼저 libpng을 사용하여 이미지를 메모리로 읽어들입니다.
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
png_infop info_ptr = png_create_info_struct(png_ptr);
png_init_io(png_ptr, file);
png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
  1. 압축 수준 설정: libpng을 사용하여 이미지를 저장할 때 압축 수준을 설정합니다.
png_set_compression_level(png_ptr, 9); // 0부터 9까지의 값을 설정할 수 있으며, 9가 가장 높은 수준의 압축을 의미합니다.
  1. 이미지를 저장한다: 설정한 압축 수준을 적용하여 이미지를 저장합니다.
png_set_filter(png_ptr, 0, PNG_FILTER_NONE); // 필요에 따라 필터를 적용하거나 적용하지 않을 수 있습니다.
png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);

결론

libpng을 사용하여 이미지를 압축하는 방법은 위와 같습니다. 적절한 압축 수준을 선택하여 이미지를 저장하면 파일 크기를 줄일 수 있고, 저장된 이미지를 더 효율적으로 사용할 수 있습니다.

참고: libpng 공식 문서