문제

C ++에서 JPEG의 이미지 크기를 가져와야합니다. 나는 그것을하는 상당히 간단한 방법이나 그 기능을 제공하는 작은 라이브러리를 찾고 있습니다. 나는 OpenVMS에서 C ++에서 일하고 있으므로 모든 외부 라이브러리는 시스템을 컴파일하기 위해 조정되어야 할 수도 있습니다. 따라서 크고 닫힌 소스 라이브러리에 링크를 게시하지 마십시오!

누군가가 트릭을 수행하거나 JPEG 파일 형식을 이해할 수있는 모든 것을 발견 한 사람이 있습니까 (여기서 JFIF 파일 형식을 의미한다고 생각합니다).

도움이 되었습니까?

해결책

당신은 이것을 가지고 있습니다 C 기능 관련 데이터를 추출 할 수 있습니다.

이것은 C 루틴이지만 C ++로 잘 컴파일해야합니다.
정상 파일 포인터 (Fopen에서)에서 JPEG 파일의 시작 부분으로 전달하고 이미지 높이와 너비로 설정할 두 개의 int 포인터를 전달하십시오.

또는 당신은에서 찾을 수 있습니다 부스트 라이브러리 올바른 함수가있는 JPEG 클래스 ( 어도비 벽돌 일반 이미지 라이브러리).

JPEG_READ_DIMENSIONS

boost::gil::jpeg_read_dimensions (const char *filename)

지정된 위치에서 JPEG 파일의 너비와 높이를 반환합니다. 위치가 유효한 jpeg 파일에 해당하지 않으면 std :: ios_base :: 실패를 던집니다.

다른 팁

libjpeg는 합리적으로 작고 오픈 소스이며 OpenVMS에서 사용할 수 있습니다. JPEG를 직접 처리하는 것보다 설치하는 것이 더 빠릅니다.

아마도 libjpeg?

이것을 사용할 수 있어야합니다 JPEG LIB 이것으로 OpenVMS의 패치

이 정보를 얻기 위해 전체 libjpeg 라이브러리가 필요하지 않습니다 (이미지로 다른 작업을 수행 할 필요가없는 한). ImageInfo 도움이 될 수 있습니다. Java 클래스이지만 C ++를 포함한 다른 언어의 포트가 있습니다.
지적한 바와 같이, EXIF는 이러한 정보를 변경할 수 있습니다 (예 : 방향 설정).

당신은 시도하고 싶을 수도 있습니다 gdal 많은 수의 래스터 데이터 형식에 대한 추상화 레이어 역할을하는 라이브러리는 주로 GIS/Rs에 대한 지리 공간 응용 프로그램에 사용됩니다.

GDAL은 C, C ++ 및 스크립팅 언어에 대한 API 수를 제공합니다. 물론 지원됩니다 JPEG 이미지와 그 변형과 같은 변형 JPEG2000 그리고 더.

다음은 JPEG 이미지를 열고 차원을 쿼리하는 방법이 매우 간단한 예입니다.

#include <gdal_priv.h>

GDALAllRegister(); // call ones in your application

GDALDataset* ds = (GDALDataset*)GDALOpen("my.jpeg", GA_ReadOnly);
int width  = ds->GetRasterXSize();
int height = ds->GetRasterYSize(),
int nbands = ds->GetRasterCount();

확인하다 GDAL API 튜토리얼 더 완전한 예를 위해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top