2012-07-17 4 views
4

저는 setImageData:metadata:completionBlock:ALAsset인데 자산의 exif (메타 데이터)를 업데이트합니다.이미지를 변경하지 않고 ALAsset의 exif를 업데이트하는 방법은 무엇입니까?

메타 데이터를 업데이트하기 만하지만이 메서드는 첫 번째 매개 변수로 imageData이 필요합니다. 아래 코드를 사용하여 imageData을 생성했지만 내 이미지를 수정했습니다 (파일 크기와 파일 해시를 확인).

ALAssetRepresentation *dr = asset.defaultRepresentation; 
UIImage *image = [UIImage imageWithCGImage:dr.fullResolutionImage scale:dr.scale orientation:dr.orientation]; 
NSData *data = UIImageJPEGRepresentation(image, 1); 

내가 ALAsset 단지 EXIF를 업데이트하는 데 사용할 수있는 다른 방법이 있습니까? 또는 방법 setImageData:metadata:completionBlock:에 대해 오른쪽 imageData을 생성하는 방법은 무엇입니까?

답변

1

imageData을 생성하는 방법을 찾았습니다. 아래 코드 :

Byte *buffer = (Byte *)malloc(dr.size); 
NSUInteger k = [dr getBytes:buffer fromOffset:0.0 length:dr.size error:nil]; 
NSData *data = [NSData dataWithBytesNoCopy:buffer length:k freeWhenDone:YES]; 

그래서 나는 ALAsset 만 EXIF를 업데이트 할 setImageData:metadata:completionBlock:와 위의 데이터를 사용할 수 있습니다.

+0

누군가가 이것을 설명 할 수 있습니까? 어떻게 이미지를 업데이트하지 않습니까? – akaru

+0

@akaru, 위의 코드는 CGImage가되기 전에 원시 이미지 데이터를 가져옵니다. 'setImageData : ... '를 통해 쓸 때 이미지는 수정되지 않습니다. –