ALAsset Library在将图像保存到照片库时缩小了图像的大小

时间:2012-12-10 13:48:03

标签: image alassetslibrary

我正在创建一个应用程序,让用户使用UIImagePickerController从照片库中选择图像,然后使用ALAssets Library保存图像。 但是我的应用程序保存的图像的质量和大小之间存在差异。与从照片库中挑选的原始图像相比较。

我添加了日志记录,以使用ALAsset库检查所拾取图像的大小和保存在照片库中的图像。

-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
   UIImage *image = [info
                     objectForKey:UIImagePickerControllerOriginalImage];
   NSLog(@"Size of the image picked in bytes: %i",[UIImageJPEGRepresentation(image,1.0f) length]);
}

-(void)methodToSaveImage:(UIImage*)image metadata:(NSMutableDictionary*)info
{
    @autoreleasepool {
        NSLog(@"Size of image passed to be saved: %i",[UIImageJPEGRepresentation(image,1.0f) length]);
        [self writeImageToSavedPhotosAlbum:image.CGImage metadata:info
                           completionBlock:^(NSURL* assetURL, NSError* error) {

                               //error handling
                               if (error!=nil) {
                                   return;
                               }
                               ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
                               {
                                   NSLog(@"Size of image after being saved in photo library : %i",[myasset defaultRepresentation].size);
                               };

                               //
                               ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
                               {
                                   NSLog(@"cant get image - %@",[myerror localizedDescription]);
                               };

                               [self assetForURL:assetURL
                                    resultBlock:resultblock
                                    failureBlock:failureblock];


        }];
    }
}

拾取和传递以保存图像时的字节大小相等,大约为4 MB。但保存在照片库中的图像大小只有2 MB多一点。请让我知道为什么图像有差异?我该怎么做才能保存原始图像尺寸精确的图像?

1 个答案:

答案 0 :(得分:0)

同样的答案我也在搜索。但是如果你想生成两个图像的校验和(在写入之前和写入之后)。然后使用:

NSData* data =  UIImageJPEGRepresentation(copyOfOriginalImage, 1);
NSLog(@"The Read Image MD5: %@",[data MD5]);

Checsum将保持不变。但仍有尺寸差异。