2012-09-19 2 views
0

OSX 앱은 JPEG 이미지를 읽으며 일부 처리를 수행하며 원본 이미지의 압축률로 이미지를 저장하려고합니다.코코아에서 JPEG 이미지의 압축률을 어떻게 얻습니까?

원본 이미지의 압축률을 얻지 못했습니다. NSImage 클래스에는 비슷한 것이 없습니다.

NSBitmapImageRep 클래스는 편리한 방법이 있습니다

- (void)getCompression:(NSTIFFCompression *)compressionfactor:(float *)factor

을하지만을 NSData에서 NSBitmapImageRep를 얻는 경우가 dataWithContentsOfFile 읽을, 나는 제로 compressionfactor를 얻을.

어떤 아이디어, 코코아에서 JPEG 이미지의 압축률을 어떻게 얻습니까? ImageMagick++ 라이브러리와

+0

압축 계수는 JPEG에 대한 느슨한 개념입니다. 나는 표준 정의가 있다고 생각하지 않는다. 그것은 인코딩하는데 사용 된 소프트웨어에 달려있다. 그것은 간접적으로 파일에 기록 된 값에만 영향을 미치므로 JPEG 파일에서 추출 할 수있는 값은 없습니다. –

+0

P. 다음은 Microsoft가 C#에 관한 주제에 대해 말한 내용입니다. http://support.microsoft.com/kb/324790 –

+0

흠, Microsoft의 기사는 매우 설명입니다. 이미지의 압축률을 검사하거나 계산하는 방법이 있습니다. 키를 가진 ImageMagick suite의 유틸리티를 식별합니다. –

답변

0

는 간단합니다 :

Image magick_image([pathname cStringUsingEncoding:NSUTF8StringEncoding]); 
size_t compressionFactor = magick_image.quality(); // 0..100 

그것은 목표 - C++로 알려진 오브젝티브 C와 C++의 혼합입니다. Magick ++는 이름에서 알 수 있듯이 C 라이브러리 ImageMagick의 래퍼입니다. 위의 코드 스 니펫에서 Image는 Magick ++ 라이브러리의 C++ 클래스입니다. pathname은 NSString Objective-C 클래스의 객체입니다.

0

시도해 볼 수는 있지만 제 경험상 항상 효과가있는 것은 아닙니다.

NSNumber* factor = [imageRep valueForProperty:NSImageCompressionFactor]; 

여기 애플의 설명서는 NSBitmapImageRep입니다.

NSImageCompressionFactor

이미지의 압축 요소를 포함하는의 NSNumber 객체를 식별한다.

JPEG 파일에만 사용됩니다. TIFF 파일의 JPEG 압축은 지원되지 않으며 요인은 무시됩니다. 값은 0.0에서 1.0 사이의 부동 소수점이며 1.0은 압축을 나타내지 않으며 0.0은 최대 압축을 가능하게합니다. 그것은 읽을 때 설정되며 이미지를 쓸 때 사용됩니다.

OS X v10.0 이상에서 사용할 수 있습니다.

관련 문제