2012-08-23 3 views
2

나는 PNG 파일을 열 때. 하지만 대신에 항상 3 채널 (RGB) 이미지를 얻습니다 (이미지가 반투명 한 경우에도). image.spectrum()은 4 대신 3을 반환합니다.알파 채널을 잃지 않고 CImg 라이브러리로 PNG를 여는 방법은 무엇입니까? 나는 4 채널 (RGBA) 이미지를 얻을 것으로 예상 ...</p> <pre><code>CImg<unsigned char> image("image.png"); </code></pre> <p>:

내 애플리케이션에서는 PNG를 열 때 항상 4 채널을 가져와야합니다. 파일. CImg은 많은 유용한 기능이있는 인기있는 라이브러리처럼 보이지만 (일부는 내 이미지 처리 응용 프로그램에서 나중에 유용 할 수 있습니다) 따라서 알파 채널로 PNG 파일을 열지 않고도 열 수 없다고 생각하는 것이 어렵습니다. 어떤 제안?

CImg이 PNG 파일 작업을위한 아주 좋은 도구가 아니라면 다른 간단한 라이브러리를 제안 해보십시오. 이 순간 중요한 것은 PNG를 4 채널 unsigned char 이미지로 읽고 쓸 수 있으며 이미지 크기 및 데이터 (예 : image.width() 또는 image.data())를 가져 오는 기능을 가질 수 있다는 것입니다. 다른 라이브러리에 대한

답변

3

CIMG 파일 .png를 작동 할 수있는 아주 좋은 라이브러리 (포함 4 채널.). CImg이 png 파일을 네이티브로 지원하려면 코드를 libpng 라이브러리와 연결해야합니다. 그렇지 않으면 CImg이 ImageMagick의 변환 도구에 대한 외부 호출을 사용하여 .png 파일을 읽습니다. 은 정의 된 'cimg_use_png'매크로 코드를 컴파일, CIMG에서 전체 .PNG 지원을 활성화하고,의 libpng와 연결, 당신은 완료하려면

g++ -o foo foo.cpp -Dcimg_use_png -lpng -lz -lX11 -lpthread 

내가 중 하나가 될 CIMG 발견 .png 및 .tiff 파일을 가장 완벽하게 지원하는 라이브러리의 경우 적절한 라이브러리를 사용하도록 구성 플래그 만 정의하면됩니다. 기본적으로 CImg은 최소한의 라이브러리 집합을 사용하도록 구성됩니다.