1

私は iOS アプリに取り組んでおり、最近、ユーザーが写真やビデオを記録できるようにするポップオーバーに imagePicker を実装しました。これらを iPad のフォト ロールに保存して、ユーザーが後で iTunes で同期できるようにしたいと考えています。これはうまくいきましたが、後で読み込むことができるように、写真とビデオに関する有用な情報を含む一意の名前を各写真とビデオに付けたいと思います。具体的には、クラスのプロパティ live_trial_id をファイル名として使用して写真を保存したいと考えています。以下は、写真とビデオを写真ロールに保存するために現在使用しているコードです。写真のメタデータでこれを行うことができることは理解していますが、ビデオの場合はわかりません。この問題についてご協力いただきありがとうございます。

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

NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
UIImage *originalImage, *editedImage, *imageToSave;

// Handle a still image capture
if( [mediaType isEqualToString:@"public.image"]){

    editedImage = (UIImage *) [info objectForKey:
                               UIImagePickerControllerEditedImage];
    originalImage = (UIImage *) [info objectForKey:
                                 UIImagePickerControllerOriginalImage];

    if (editedImage) {
        imageToSave = editedImage;
    } else {
        imageToSave = originalImage;
    }

    // Get the image metadata
    UIImagePickerControllerSourceType pickerType = picker.sourceType;
    if(pickerType == UIImagePickerControllerSourceTypeCamera)
    {
        NSDictionary *imageMetadata = [info objectForKey:
                                       UIImagePickerControllerMediaMetadata];
        // Get the assets library
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        ALAssetsLibraryWriteImageCompletionBlock imageWriteCompletionBlock =
        ^(NSURL *newURL, NSError *error) {
            if (error) {
                NSLog( @"Error writing image with metadata to Photo Library: %@", error );
            } else {
                NSLog( @"Wrote image with metadata to Photo Library");
            }
        };

        // Save the new image (original or edited) to the Camera Roll
        [library writeImageToSavedPhotosAlbum:[imageToSave CGImage]
                                     metadata:imageMetadata
                              completionBlock:imageWriteCompletionBlock];
    }
}

if ([mediaType isEqualToString:@"public.movie"]) {
    UIImagePickerControllerSourceType pickerType = picker.sourceType;
    if(pickerType == UIImagePickerControllerSourceTypeCamera)
    {
        NSURL *mediaURL = [info objectForKey:UIImagePickerControllerMediaURL];
        // Get the assets library
        ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
        ALAssetsLibraryWriteVideoCompletionBlock videoWriteCompletionBlock =
        ^(NSURL *newURL, NSError *error) {
            if (error) {
                NSLog( @"Error writing image with metadata to Photo Library: %@", error );
            } else {
                NSLog( @"Wrote image with metadata to Photo Library");
            }
        };

        // Save the new image (original or edited) to the Camera Roll
        [library writeVideoAtPathToSavedPhotosAlbum:mediaURL
                              completionBlock:videoWriteCompletionBlock];

    }
}

また、カスタム ライブラリまたはカスタム メタデータを作成することは、可能な限り避けたいと考えています。フォトロールの途中でファイル名を変更したかっただけです

4

1 に答える 1