1

iPhone ライブラリ/カメラ ロールからリモート Web サーバーにファイル (画像) をアップロードすることに興味があります。電話から Web サーバーに任意のファイルをアップロードするスクリプトが既に動作しています。ただし、iPhone から画像をアップロードするには、その画像への PATH が必要だと思います。ユーザーがカメラロールからその画像を選択したら、これを行う方法はありますか? つまり、カメラ ロールで選択した画像のファイル パスを取得するにはどうすればよいですか?

私は無駄にしようとしました。

ありがとう!

4

1 に答える 1

6

ALAssetsLibrary関数を確認することをお勧めします。これらの関数を使用すると、iOSデバイスの写真とビデオのライブラリに保存されている写真とビデオにアクセスできます。

具体的には、次のようなものです。

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

[assets enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
    usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) {
            //the ALAsset should be one of your photos - stick it in an array and after this runs, use it however you need
        }
    }
    failureBlock:^(NSError *error) {
        //something went wrong, you can't access the photo gallery
    }
];

編集

純粋にプログラム的なアプローチではなくUIImagePickerControllerを使用している場合、これにより大幅に簡素化されます。

の:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];
    //you can use UIImagePickerControllerOriginalImage for the original image

    //Now, save the image to your apps temp folder, 

    NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"upload-image.tmp"];
    NSData *imageData = UIImagePNGRepresentation(img);
    //you can also use UIImageJPEGRepresentation(img,1); for jpegs
    [imageData writeToFile:path atomically:YES];

    //now call your method
    [someClass uploadMyImageToTheWebFromPath:path];
}
于 2012-07-19T22:10:27.497 に答える