1

ええと、私はアルバムから写真を撮っています。絵を描いていて、完成したらアルバムに保存します。それは完全にうまく機能します。問題はもちろん、この新しい画像を保存すると、デバイスがそれを別の画像に保存することです。私が疑問に思っていたのは、既存の画像を変更することは可能ですか? 代わりにそれを置き換えて新しいものを作成しますか?または、可能でない場合は、ライブラリ内の画像を削除して、新しい画像を作成できますか?

完璧な方法は、URL を操作することです。

// I take the image
ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
[assetLibrary assetForURL:asseturl
       resultBlock:^(ALAsset *asset){NSLog(@"I got my image");}
      failureBlock:^(NSError *error){NSLog(@"Error");}];

// その後、新しいものに置き換えますか ???

前もって感謝します

4

2 に答える 2

4

コンビナトリアルに感謝します。あなたなしでは決して見つけることができませんでした。したがって、コードは、アプリがアセットを作成する場合にのみ機能します。これは方法です:

- (void)replaceImageWithUrl:(NSString *)url withImage:(UIImage*)image
{
   ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
   NSURL *asseturl = [NSURL URLWithString:url];
   [assetLibrary assetForURL:asseturl
              resultBlock:^(ALAsset *asset)
{

           ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation];
           NSLog(@"Image name : %@",assetRepresentation.filename);

           if([asset isEditable])
           {
               NSLog(@"Asset editable");

               [asset setImageData:UIImageJPEGRepresentation(image, 1.0) metadata:asset.defaultRepresentation.metadata completionBlock:^(NSURL *assetURL, NSError *error)
               {
                   if (error)
                       NSLog(@"error %@",error);
                   else
                       NSLog(@"assetURL %@", assetURL);
           }];
           }
           else
           {
               NSLog(@"Not editable");
           }
       }
      failureBlock:^(NSError *error){NSLog(@"FAILED");
}];
}

以前のイメージを削除して、新しい名前で新しいイメージを作成するようです。最適化ではありませんが、機能します...

于 2012-10-18T18:50:58.243 に答える