1

私は 2 つのビュー コントローラーを持っています。1 つはフォト ライブラリから画像を選び、それを画像プロパティに割り当てます。このピッカーで:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo

しかし、代わりに、最初のコントローラーのピッカーから画像のアドレス/データを取得し、次のビューコントローラーをプッシュして、そのアドレスで画像を開きたいと思います。それで、私は次のことをします:

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

写真の情報を印刷すると、次のようになります。

assets-library://asset/asset.JPG?id=52219875-C221-4F60-B9D4-984AAADB6E63&ext=JPG

問題は、UIImage にメソッドがあることですinitWithDataimageWithData、これらは NSDictionary ではなく NSData を受け入れます。

データを使用してフォト ライブラリから画像を開くにはどうすればよいですか?

4

3 に答える 3

2

この方法:

- (void)imagePickerController:(UIImagePickerController *)picker 
        didFinishPickingImage:(UIImage *)img 
                  editingInfo:(NSDictionary *)editInfo

使用すべきではありません。ios3 から廃止されました。

この方法:

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

あなたが報告するように、辞書を返します。

イメージ ポインターは、このディクショナリ内のオブジェクトの 1 つです。次のように取得します。

  UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
于 2013-02-01T02:21:28.007 に答える
1

その方法に関するAppleのドキュメントは次のとおりです。

基本的に、その辞書にはいくつかのキーがあります。ここで聞いてください:

NSString *const UIImagePickerControllerMediaType;
NSString *const UIImagePickerControllerOriginalImage;
NSString *const UIImagePickerControllerEditedImage;
NSString *const UIImagePickerControllerCropRect;
NSString *const UIImagePickerControllerMediaURL;
NSString *const UIImagePickerControllerReferenceURL;
NSString *const UIImagePickerControllerMediaMetadata;

あなたはおそらくしたいですUIImagePickerControllerEditedImage。だから、これはあなたが探しているものです:

UIImage *theImage = [info valueForKey:UIImagePickerControllerEditedImage];

もちろん、辞書内の他のキーを使用して、画像から他の情報を取得することもできます。

于 2013-02-01T02:20:47.943 に答える
0

ディクショナリは、画像の URL を提供します。したがって、データをロードします

NSData *imageData = [NSData dataWithContentsOfURL:[info valueForKey: UIImagePickerControllerReferenceURL]];

このデータをNSImage initWithDataメソッドに使用します。

于 2013-02-01T02:20:22.100 に答える