18

ALAssetsLibrary と ALAsset を使用して、NSData オブジェクトの形式で直接画像を抽出したいと考えています。

NSURL を使用して、次の方法で画像を取り出します。

NSURL *referenceURL =newURL;
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:referenceURL resultBlock:^(ALAsset *asset)
{
     UIImage  *copyOfOriginalImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
}

ここでは画像を UIImage として取得しますが、画像を直接 NSData として取得する必要があります。

UIImageで画像を取得すると、画像のEXIFの詳細がすべて失われるため、これを実行したいと思います。

これが、これを行う代わりに、画像を NSData として直接抽出したい理由です。

NSData *webUploadData=UIImageJPEGRepresentation(copyOfOriginalImage, 0.5);

この手順により、すべての EXIF の詳細が失われます。

助けてください。

4

3 に答える 3

33
        ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];
        [assetLibrary assetForURL:[[self.imagedata objectAtIndex:i] resultBlock:^(ALAsset *asset) 
        {
            ALAssetRepresentation *rep = [asset defaultRepresentation];
            Byte *buffer = (Byte*)malloc(rep.size);
            NSUInteger buffered = [rep getBytes:buffer fromOffset:0.0 length:rep.size error:nil];
            NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];//this is NSData may be what you want
            [data writeToFile:photoFile atomically:YES];//you can save image later
        } 
        failureBlock:^(NSError *err) {
            NSLog(@"Error: %@",[err localizedDescription]);
        }];
于 2011-12-12T11:55:42.780 に答える
-1
UIImage * selImage = [UIImage imageWithCGImage:[asset thumbnail]];       
NSData *baseImage=UIImagePNGRepresentation(selImage);
于 2012-11-02T07:11:59.530 に答える