0

に表示されている画像を保存したいUIImage。ただし、野菜、肉、レタスなどのジャンルで分類したい.

私はそれを行う方法を見つけることができません。
これを行うための最良かつ最も簡単な方法は何ですか?

また、ピッカーコントローラーを使用して保存するカテゴリをユーザーに選択させて保存したいと考えています。ありがとうございました!本当に助けが必要です!!

更新 2
保存されているかどうかを確認するために、さらにコレクション ビュー コントローラーを作成しました[arrayCollectionImages addObject:image];。この最後のコードについて説明してもらえますか。arrayCollectionImages には、arrayCollectionImages のローカル宣言がインスタンス変数を非表示にするという警告もあります。–</p>

@interface CollectionViewController (){
    NSArray *arrayCollectionImages;
}


@end

@implementation CollectionViewController

- (void)viewDidLoad {
        dispatch_queue_t searchQ = dispatch_queue_create("com.awesome", 0);
        dispatch_async(searchQ, ^{
            NSArray *arrayCollectionImages = [[NSArray alloc ]init];
            NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];
            NSString *location=@"Hats";
            NSString *fPath = [documentsDirectory stringByAppendingPathComponent:location];
            NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: fPath];
            for(NSString *str in directoryContent){
                NSString *finalFilePath = [fPath stringByAppendingPathComponent:str];
                NSData *data = [NSData dataWithContentsOfFile:finalFilePath];
                if(data)
                {   dispatch_async(dispatch_get_main_queue(),^{
                    UIImage *image = [UIImage imageWithData:data];
                });
                    [arrayCollectionImages addObject:images];
                }
            }
        });

    [super viewDidLoad];
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ReuseID" forIndexPath:indexPath];
    [[cell collectionImageView]setImage:[UIImage imageNamed:[arrayCollectionImages objectAtindex:indexPath.item]]];
    return cell;
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return [arrayCollectionImages count];
}
@end
4

1 に答える 1

0

ステップ 1:
ピッカー コントローラーをセットアップします。公式リファレンス
はこちら。 ここにチュートリアルがあります。

必要なすべてのジャンル値を設定してみてください。そのデリゲート メソッドについて学習します。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

選択したジャンルを返します。

ステップ 2:
各画像に保存アイコンまたは保存ボタンを提供します。そのアイコン/ボタンをクリックすると、ピッカービューが表示され、ユーザーに任意の行を選択させる必要があります。画像は、後でデリゲートメソッドで参照できるように、ここでプライベート変数またはプロパティにコピーする必要があります。

ステップ 3: ユーザーが行を選択すると、このデリゲート メソッドが呼び出されます。ここでは、UIPickerView で選択されたジャンルに従って、まだ存在しない場合は、新しいディレクトリを作成します。次に、イメージをパスに書き込む必要があります。

   - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
            NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDirectory = [paths objectAtIndex:0];
            //fetch Category Name from the array used to fill the Picker View 
            NSString *categoryName= [array objectAtIndex:row];
            NSString *fPath = [documentsDirectory stringByAppendingPathComponent:categoryName];
            NSFileManager *fileManager=[[NSFileManager alloc]init];
            [fileManager createDirectoryAtPath:fPath withIntermediateDirectories:YES attributes:NO error:NO];

            UIImage *image= captureImage;
            NSData *data= UIImagePNGRepresentation(image);
            [data writeToFile:fPath atomically:NO];
}

ドキュメント ディレクトリ内の特定のフォルダから画像を取得するには:
最初にそのフォルダへのパスを作成します。これは特定のジャンルに依存します。ジャンル1としましょう。

 // An array to save all images. You have to do this in some other way if selected images are big in size.
 // For that case I suggest retrieving of images only when you are showing them on screen. 
  NSArray *allImagesArray = [[NSArray alloc ]init];
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0];
  NSString *location=@"Genre1";
  NSString *fPath = [documentsDirectory stringByAppendingPathComponent:location]; 
  NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: fPath];
  for(NSString *str in directoryContent){
   NSString *finalFilePath = [fPath stringByAppendingPathComponent:str]; 
    NSData *data = [NSData dataWithContentsOfFile:finalFilePath];
      if(data)
      {
        UIImage *image = [UIImage imageWithData:data];
        [allImagesArray addObject:image];
      }
  }
于 2013-08-11T13:06:23.267 に答える