3

이것은 간단하지만 확실하지 않을 것입니다.CGImageDestinationCreateWithData가 CGImageDestinationRef 객체를 생성하지 않음

CGImageDestinationCreateWithData 함수를 사용하여 CGImageDestinationRef을 만들려고 시도했지만 해당 값이 0이되었습니다.

기능 문서 :

http://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGImageDestination/Reference/reference.html#//apple_ref/c/func/CGImageDestinationCreateWithData

기능은 매우 간단하지만, 나는 그것이 나에게 개체를 반환받을 수없는 것. 나는 ARC 클래스에있어 함수 주위에 브리징 래퍼가있다.

내 코드 : 나는 매우 어리석은 일을 저를 관광 명소 누군가로부터 도움을 부탁드립니다

NSMutableData *data = [[NSMutableData alloc] init]; 
CGImageDestinationRef imageDestination = nil; 

imageDestination = (__bridge CGImageDestinationRef) CFBridgingRelease(CGImageDestinationCreateWithData ((__bridge CFMutableDataRef)data, (__bridge CFStringRef)type, 1, NULL)); 

if (!imageDestination) 
    NSLog(@"This is always called. :-("); 

!

답변

3

나는 다른 사람들에게 도움이 될 수 있으므로 여기에 답을 게시했습니다.

형식이 @ "image/jpg"로 설정되어있어 작동하지 않는 것 같습니다 (설명서에 나와 있습니다).

형식을 @ "public.jpeg"로 변경하면 함수가 예상대로 작동하기 시작했습니다. 아래의 코멘트에 짐의 힌트를 사용

이 내가 URL에서 올바른 UTI 유형을 찾는 일을 결국 무엇을 :

NSString *uti = CFBridgingRelease(UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (__bridge CFStringRef)[NSString stringWithFormat:@"image/%@", url.pathExtension], kUTTypeImage));

+2

당신은'이미지/jpeg' 같은 MIME 유형이있는 경우 UTI API를 사용하여 (''가져 오기) 정렬 할 수 있습니다 : NSString * uti = CFBridgingRelease (UTTypeCreatePreferredIdentifierForTag (kUTTagClassMIMEType, (__bridge CFStringRef) mimeType, NULL); 또한 일치를 좁히십시오 : 예를 들어, 이미지 유형을 기대한다고 말하기 위해'kUTTypeImage'를 전달하십시오. –

+0

감사합니다 Jim. 거기에 핸디 기능이 있습니다 . – Damien

+0

Hehe, 당신을 인식하지 못했습니다. 여기 : o) EPUBProtocol.m 또는 AQHTTPResponseOperation.m을 살펴보면 파일 확장자에서 MIME 유형을 가져 오는 방법을 볼 수 있습니다. 아주 좋은 & 유용한 API. –

관련 문제