3

UIImageWriteToSavedPhotosAlbumはたまにしか機能しません。動作する場合と動作しない場合がありますが、まったく同じ機能です。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }

UIImagePickerコントローラーを使用して、その関数を呼び出す画像を取得しています。

カメラロールに保存する場合もあれば、保存しない場合もあります。

誰かが何か考えを持っていますか?

前もって感謝します。

編集:

UIImageWriteToSavedPhotosAlbumの完了メソッドは、次のエラーを返す場合があります。

wait_fences: failed to receive reply: 10004003
4

2 に答える 2

17

この回答が遅すぎて役に立たないことを願っています。私はまったく同じ問題に遭遇しました。結局のところ、問題は 2 つあります。まず、UIImageWriteToSavedPhotosAlbum に送信する前に画像を保持する必要があります。第 2 に、iPhone4 より前のデバイスでは、この機能を実行するのに非常に長い時間がかかることがあります。私が見つけた修正は、コールバック関数を実装することでした。これについては、UIImageWriteToSavedPhotosAlbum のドキュメントを参照してください。関数は正しい形式でなければなりません。古い関数をそのまま使用することはできません。この関数では、保持したイメージを必ず解放してください。そうしないと、メモリ リークが発生します。これを使用して、画像の保存がいつ完了したかを追跡することもできます。以下は私の基本的なコードです:

    -(void)processImage:(UIImage *)image {
        [image retain];
        UIImageWriteToSavedPhotosAlbum(reconstructedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}


    - (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
        NSLog(@"SAVE IMAGE COMPLETE");
        if(error != nil) {
            NSLog(@"ERROR SAVING:%@",[error localizedDescription]);
        }
        [image autorelease];
    }
于 2010-07-07T01:54:41.633 に答える
0

まず、save 呼び出しに完了ターゲット メソッドを追加して、エラーが発生しているかどうかを確認します。詳細については、UIImageWriteToSavedPhotosAlbumドキュメントを参照してください。

編集:

返された時間の 1 つ... wait_fences: 応答を受信できませんでした: 10004003

つまり、操作がタイムアウトしました。これには多くの原因があります。

  1. メモリ不足: ログを入力didReceiveMemoryWarningして、これが原因かどうかを確認してください。
  2. システムが保存できない破損したファイル。画像が毎回生成されると、毎回正しく表示されない場合があります。
  3. 不適切に報告されたディスク フル エラー。

私は(1)が最も可能性が高く、断続的な性質を説明していると思います。十分なメモリがある場合はメソッドが機能し、そうでない場合は失敗します。

さらに、コンパイル時に表示されるすべての警告を解決します。これらは、実行時まで表示されない単なるエラーです。あなたの問題はそこにリストされているかもしれません

于 2010-06-10T20:12:26.707 に答える