2016-04-28 15 views
1

私は電話カメラから写真を撮るためのアプリを開発しました。しかし、今私は、私が作成したフォルダに電話のメモリに画像を格納する必要があります。イメージをカスタムフォルダに保存チタン

var filename = Titanium.Filesystem.resourcesDirectory + "/newImageFile.jpg"; 
var imageFile = Titanium.Filesystem.getFile(filename); 
imageFile.write(capturedImg); 

をしかし、それはギャラリーにつくれません。

私はこれを試してみました。画像を電話機のメモリに保存するにはどうしたらいいですか?画像を保存するために電話機のメモリにコスチュームフォルダを作成するにはどうすればよいですか?

答えて

0

これはフォトアルバムを作成し、このアルバムに保存します。

私はそれを処理するために、このシングルトンクラスを思い付いた:

import Photos 

class CustomPhotoAlbum { 

static let albumName = "Titanium" 
static let sharedInstance = CustomPhotoAlbum() 

var assetCollection: PHAssetCollection! 

init() { 

    func fetchAssetCollectionForAlbum() -> PHAssetCollection! { 

     let fetchOptions = PHFetchOptions() 
     fetchOptions.predicate = NSPredicate(format: "title = %@", CustomPhotoAlbum.albumName) 
     let collection = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions) 

     if let firstObject: AnyObject = collection.firstObject { 
      return collection.firstObject as! PHAssetCollection 
     } 

     return nil 
    } 

    if let assetCollection = fetchAssetCollectionForAlbum() { 
     self.assetCollection = assetCollection 
     return 
    } 

    PHPhotoLibrary.sharedPhotoLibrary().performChanges({ 
     PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(CustomPhotoAlbum.albumName) 
    }) { success, _ in 
     if success { 
      self.assetCollection = fetchAssetCollectionForAlbum() 
     } 
    } 
} 

func saveImage(image: UIImage) { 

    if assetCollection == nil { 
     return // If there was an error upstream, skip the save. 
    } 

    PHPhotoLibrary.sharedPhotoLibrary().performChanges({ 
     let assetChangeRequest = PHAssetChangeRequest.creationRequestForAssetFromImage(image) 
     let assetPlaceholder = assetChangeRequest.placeholderForCreatedAsset 
     let albumChangeRequest = PHAssetCollectionChangeRequest(forAssetCollection: self.assetCollection) 
     albumChangeRequest.addAssets([assetPlaceholder]) 
    }, completionHandler: nil) 
} 

}

あなたが最初のクラスをインスタンス化するとき、それはまだ存在しない場合は、カスタムアルバムが作成されます。

CustomPhotoAlbum.sharedInstance.saveImage(image) 

:あなたはこのように画像を保存することができますCustomPhotoAlbumクラスアプリは、すでにフォトライブラリにアクセスする権限を持っている前提としています。パーミッションを扱うことは、この質問/回答の範囲外です。 PHPhotoLibrary.authorizationStatus()== .Authorizeを使用する前に確認してください。必要に応じて承認を求めてください。

0
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info 
      { 
      NSData *imageData = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    if(picker.sourceType==UIImagePickerControllerSourceTypeCamera) 
     { 
     //to save camera roll 
      [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{ 
      [PHAssetChangeRequest creationRequestForAssetFromImage:image]; 
              } completionHandler:nil]; 
     } 

      } 

これは

によって取得されたカメラロールに画像を保存します
関連する問題