-1

私は1つの問題に直面しています。サポート ファイル グループの下に Album という名前のディレクトリがあります。このディレクトリには、いくつかの画像があります。画像編集アプリで、編集した画像をアルバム ディレクトリに保存したいと考えています。次のコードを使用して、アルバム ディレクトリに画像を保存しようとしました

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSString *albumPath = [bundleRoot stringByAppendingString:@"/Album"];
NSString *savedImagePath = [bundleRoot stringByAppendingPathComponent: @"newImage11.jpeg" ]; UIGraphicsBeginImageContext(drawImage.image.size); 
CGContextRef ctx = UIGraphicsGetCurrentContext();
 [drawImage.layer renderInContext:ctx]; 
UIImage *editedImage = UIGraphicsGetImageFromCurrentImageContext();
NSData *editedImageData = UIImageJPEGRepresentation(editedImage, 1.0); UIGraphicsEndImageContext(); 
[editedImageData writeToFile:savedImagePath atomically:YES];

ここで drawImage は、画像を保持する UIImageView の IBOutlet です。このコードは、同じサイズのファイル newImage11.jpeg をアルバム ディレクトリに保存しました。しかし、アルバムディレクトリから画像を取得すると、空の画像が表示されます。次のコードを使用して画像を取得しました

NSString *img = [onlyJPGs objectAtIndex:currentIndex+numberToAdd]; 
UIImage *tempImage = [UIImage imageNamed:img]; 
imageButton.tag = img; 
[imageButton setImage:tempImage forState:UIControlStateNormal]; 
[imageButton addTarget:nil action:@selector(goToEdit:) forControlEvents:UIControlEventTouchUpInside]; 
currentIndex+=numberToAdd;

onlyJPGs は、Album ディレクトリに含まれるすべての画像の名前を保持する配列です。ターミナルを使用して ImageEditing.app の Album ディレクトリの内容を一覧表示すると、newImage11.jpeg ファイルが表示されるため、アプリが画像を A​​lbum ディレクトリに保存していると確信しています。どんな種類の助けもかなりのものです。

4

2 に答える 2

0

問題は単純で、編集した画像をバンドルに保存しようとしているだけです。実際には、アプリケーション バンドルは「読み取り専用」です。この種類の読み取りおよび書き込みアクセスには、ドキュメント ディレクトリまたはライブラリのいずれかを使用できます。コードのスニペットに従って、ドキュメント ディレクトリ パスを取得できます。

NSString *path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
于 2011-12-06T09:05:41.790 に答える
0

まず、 に書き込むことはできませんbundlePath。ホール アプリケーション バンドルは読み取り専用です。

次に、グループではなく、プロジェクトのリソース グループにディレクトリを作成したことを確認します (グループ フォルダー アイコンは黄色で、フォルダーは青色です)。

グループである黄色のフォルダーは、アプリのビルド時に省略されます。このフォルダー内のすべてのファイルは、アプリケーション バンドルのルートに配置されます。

ドキュメント ディレクトリにファイルを書き込むことができます。

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

これらのディレクトリは自動的に iCould と同期され、Apple によれば、ユーザーが生成したファイルのみを含める必要があります。アプリで再作成または再ダウンロードできるファイルはすべて、キャッシュ ディレクトリに移動する必要があります。

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
于 2011-12-06T08:55:40.190 に答える