8

私が開発しているアプリでは、ユーザーがフォトアルバムから選択した画像を使用しています。その写真の高解像度バージョンをサーバーにアップロードする必要があります。

imagePickerControllerを使用していますが、2つのオプションがあると判断しました

  • UIImagePickerControllerOriginalImageのUIImageを使用します
  • UIImagePickerControllerReferenceURLとALAssetsLibraryassetForURLを使用して元のアセットを取得します(ユーザーに現在の場所を使用するように求めるので、これは好きではありませんが、必要ありません)

私の質問は...最初のオプションと2番目のオプションを使用した場合、画像の品質に違いはありますか?

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

    //option 1
            UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
            NSData *imgData = UIImagePNGRepresentation(image);

    // option 2 (will prompt user to allow use of current location)
            NSURL *imgURL = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
            __block NSData* imgData;

            ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init];

            [assetLibrary assetForURL:img 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];
                 imgData = [NSData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES]; 
             }
                       failureBlock:^(NSError *err) {
                             NSLog(@"Error: %@",[err localizedDescription]);
                         }]; 
        }
4

1 に答える 1

13

両方のオプションを使用して画像を比較するテストを実行しました。オプション1を使用すると、画像は2倍の大きさになりました(4.22MB対2.04MB)。Photoshopで写真を見ると、品質に大きな違いは見られませんでした。レベルを見ると、オプション1で作成されたレベルはそれほどスムーズではありませんでした(下の画像)。ファイルのプロパティを見ると、オプション1で作成されたものには、オプション2で作成されたファイルにあった「元の」、「カメラ」、「高度な写真」のオプションがいくつかありませんでした。どちらの方法を使用するかは決めていませんが、この情報が他の人の役に立つことを願っています。

Photoshopのレベル

于 2012-09-19T19:10:24.557 に答える