4

iPhoneギャラリーから画像をアップロードする必要がありますが、選択した画像のパスを取得できません(画像ピッカーを使用)

イメージピッカーデリゲートメソッドでは、次のことを行っています

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];
    imageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    NSString *strImagePath = [info valueForKey:UIImagePickerControllerReferenceURL];
    NSString *strImagePath1 = [info valueForKey:UIImagePickerControllerMediaURL];
    NSLog(@"%@",strImagePath);
    NSLog(@"%@",strImagePath1);
    NSLog(@"%@",info);

}

情報辞書には次のキー値が含まれています

{
    UIImagePickerControllerMediaType = "public.image";
    UIImagePickerControllerOriginalImage = "<UIImage: 0x16adc0>";
    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.PNG?id=1000000153&ext=PNG";
}

キーUIImagePickerControllerReferenceURLの値をFTPにアップロードするための画像パスとして使用しましたが、ファイルをアップロードできませんでした。おそらく、取得したパスが正しくありません。

画像ピッカーを使用して、選択した画像の実際のパスを取得する方法を教えてください。

4

2 に答える 2

13

それはあなたのために役立つかもしれません

[picker dismissModalViewControllerAnimated:YES];
imageView.image= [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSData *webData = UIImagePNGRepresentation(imageView.image);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:png];
[webData writeToFile:localFilePath atomically:YES];
NSLog(@"localFilePath.%@",localFilePath);

UIImage *image = [UIImage imageWithContentsOfFile:localFilePath];
于 2012-12-13T07:48:29.813 に答える
1

画像をに変換してNSDataから、これをアップロードしNSDataます。

NSDataの画像

NSData *dataImage = UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"],1);

NSDataまたは、を使用してyourImageを変換できます

NSData *dataImage = UIImagePNGRepresentation(yourImageView.image);

詳細については、NSDataクラスリファレンスを参照してください

于 2012-12-13T07:15:13.393 に答える