1. 程式人生 > >iOS 儲存圖片到相簿

iOS 儲存圖片到相簿

//方法呼叫

NSMutableData *data = [NSMutableDatadataWithContentsOfFile:_SaveFilepath];

UIImage *myImage = [UIImageimageWithData:data];

STAlbumManager *stabumManager = [STAlbumManagersharedManager];

[stabumManager saveImage:myImage toAlbum:@"電子發票"completionHandler:^(UIImage *image, NSError *error){}];

//類實現

//

//  STAlbumManager.h

//  BSbracelet

//

//  Created by Christopher on 17/4/28.

//  Copyright © 2017 ZTracy. All rights reserved.

//

#import <Foundation/Foundation.h>

#import <AssetsLibrary/AssetsLibrary.h>

@classUIImage;

typedefvoid (^STAlbumSaveHandler)(UIImage *image, NSError *error);

/**

 * @brief 將圖片寫入相簿,使用ALAssetLibrary

 *

 * @param  image    需要寫入的圖片

 * @param  album    相簿名稱,如果相簿不存在,則新建相簿

 * @param  completionHandler 回撥

 */

externvoid STImageWriteToPhotosAlbum(UIImage *image, NSString *album, STAlbumSaveHandler completionHandler);

@interface STAlbumManager : NSObject

+ (instancetype)sharedManager;

/**

 * @brief 將圖片寫入相簿,使用ALAssetLibrary

 *

 * @param  image    需要寫入的圖片

 * @param  album    相簿名稱,如果相簿不存在,則新建相簿

 * @param  completionHandler 回撥

 */

- (void)saveImage:(UIImage *)image toAlbum:(NSString *)album completionHandler:(STAlbumSaveHandler)completionHandler;

@end

@interface ALAssetsLibrary (STAssetsLibrary)

- (void)writeImage:(UIImage *)image toAlbum:(NSString *)album completionHandler:(STAlbumSaveHandler)completionHandler;

@end


//

//  STAlbumManager.m

//  BSbracelet

//

//  Created by Christopher on 17/4/28.

//  Copyright © 2017 ZTracy. All rights reserved.

//

#import "STAlbumManager.h"

#import <UIKit/UIKit.h>

void STImageWriteToPhotosAlbum(UIImage *image, NSString *album, STAlbumSaveHandler completionHandler) {

    [[STAlbumManager sharedManager] saveImage:image toAlbum:album completionHandler:completionHandler];

}

@interface STAlbumManager ()

@property(nonatomic, strong) ALAssetsLibrary *assetsLibrary;

@end

@implementation STAlbumManager

static STAlbumManager *_sharedManager;

+ (instancetype)sharedManager {

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{ _sharedManager = [[selfalloc] init]; });

return_sharedManager;

}

- (instancetype)init {

self = [superinit];

if (self) {

    }

returnself;

}

- (ALAssetsLibrary *)assetsLibrary {

if (!_assetsLibrary) {

_assetsLibrary = [[ALAssetsLibraryalloc] init];

    }

return_assetsLibrary;

}

- (void)saveImage:(UIImage *)image toAlbum:(NSString *)album completionHandler:(STAlbumSaveHandler)completionHandler {

    [self.assetsLibrarywriteImage:image

toAlbum:album

completionHandler:^(UIImage *image, NSError *error) {

if (completionHandler) {

                         completionHandler(image, error);

                     }

/// 注意,這裡每次都置空是因為期間如果操作相簿了,下次儲存之前希望能取到最新狀態。

self.assetsLibrary = nil;

                 }];

}

@end

@implementation ALAssetsLibrary (STAssetsLibrary)

- (void)writeImage:(UIImage *)image toAlbum:(NSString *)album completionHandler:(STAlbumSaveHandler)completionHandler {

    [self writeImageToSavedPhotosAlbum:image.CGImage

                           orientation:(ALAssetOrientation)image.imageOrientation

                       completionBlock:^(NSURL *assetURL, NSError *error) {

if (error) {

if (completionHandler) {

                                   completionHandler(image, error);

                               }

                           } else {

                               [self addAssetURL:assetURL

                                         toAlbum:album

                               completionHandler:^(NSError *error) {

if (completionHandler) {

                                       completionHandler(image, error);

                                   }

                               }];

                           }

                       }];

}

- (void)addAssetURL:(NSURL *)assetURL toAlbum:(NSString *)album completionHandler:(ALAssetsLibraryAccessFailureBlock)completionHandler {

void (^assetForURLBlock)(NSURL *, ALAssetsGroup *) = ^(NSURL *URL, ALAssetsGroup *group) {

        [self assetForURL:assetURL

              resultBlock:^(ALAsset *asset) {

                  [group addAsset:asset];

                  completionHandler(nil);

              }

             failureBlock:^(NSError *error) { completionHandler(error); }];

    };

__block ALAssetsGroup *group;

    [self enumerateGroupsWithTypes:ALAssetsGroupAlbum

                        usingBlock:^(ALAssetsGroup *_group, BOOL *stop) {

if ([album isEqualToString:[_group valueForProperty:ALAssetsGroupPropertyName]]) {

                                group = _group;

                            }

if (!_group) {

/// 迴圈結束

if (group) {

                                    assetForURLBlock(assetURL, group);

                                } else {

                                    [self addAssetsGroupAlbumWithName:album

                                                          resultBlock:^(ALAssetsGroup *group) { assetForURLBlock(assetURL, group); }

                                                         failureBlock:completionHandler];

                                }

                            }

                        }

                      failureBlock:completionHandler];

}

@end


相關推薦

iOS-儲存圖片到(自定義)相簿步驟

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC"; color: #000000; background-color: #ffffff } 儲存到相簿步驟: 1.儲存圖片到【相機膠捲】 2.擁有一個【自定義相簿】 3.將剛

IOS 儲存圖片相簿

應用中有時我們會有儲存圖片的需求,如利用UIImagePickerController用IOS裝置內建的相機拍照,或是有時我們在應用程式中利用UIKit的 UIGraphicsBeginImageContext,UIGraphicsEndImageContext,UIGr

iOS 儲存圖片相簿, 儲存到指定的路徑

程式碼很簡單隻有一句話 不多說上程式碼: <span style="font-size:24px;">UIImage *newImage = UIGraphicsGetImageFrom

iOS 儲存圖片相簿

//方法呼叫 NSMutableData *data = [NSMutableDatadataWithContentsOfFile:_SaveFilepath]; UIImage *myImage = [UIImageimageWithData:data]; STA

iOS儲存圖片到新建相簿(iOS Photos)

1.直接儲存圖片相簿中(不需要自己建立新的相簿) - (void)saveImage2Photo:(UIImage *)img { UIImageWriteToSavedPhoto

【學習ios之路:UI系列】獲取通過UIImagePackerController獲取的系統相簿圖片的名稱資訊及儲存系統相簿到本地

通過IUImagePickerController方法獲取系統的相簿,而想要得到從系統相簿得到的圖片的資訊需要以下幾步: 1:獲得從UIImagePicker選擇的照片的Assert; 2:得到Assert的ALAssertRepresentation; 3:ALAsser

儲存圖片/視訊到相簿 儲存完成後通知事件 IOS

// 官方提供的說明//  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;UIKIT_EXTERN voi

iOS儲存圖片相簿中的兩種方式

方式一: UIImageWriteToSavedPhotosAlbum(self.imageV.image, self, @selector(image:didFinishSavingWithEr

儲存圖片相簿圖片變黑問題

今天寫一下儲存圖片到手機相簿的功能! 整個儲存圖片的程式碼如下: public void saveImageToGallery(Context context, Bitmap bmp) { if (!Environment.getExternalStorageSt

微信公眾號 IOS圖片上傳只儲存一張

wx.chooseImage({ count:imgCount, needResult: 1, sizeType:['original', 'compressed'], sourceType:['album', 'camera'], success:function(res){ ShowOKbt(false

IOS儲存多張圖片 多執行緒處理

儲存多張圖片的時候,既要控制不丟圖片,又要控制圖片可以多執行緒。提高儲存速度,防止程式崩潰,防止使用者等待時間過久 這裡我們可以使用Photos框架的PHPhotoLibrary類,這個可以幫助你多執行緒儲存圖片 -(void)saveBtn { [SSGOTools againRe

ionic2 儲存圖片到手機相簿

ionic2 儲存圖片到手機相簿需要2個原生外掛 一、原生外掛安裝     1、Android Permissions         通過以下命令下載   &nb

小程式儲存圖片相簿功能實現

  專案中有個儲存二維碼到相簿的功能,所以涉及到使用者是否授權相簿許可權的問題。廢話不多說,直接上乾貨...    功能邏輯:     先檢查使用者請求過的許可權中是否允許"儲存到相簿"許可權,如果沒有請求過這個許可權,應該向使用者發起授權請求(彈窗授權),如果請求過這個許可權,並且授權了,那就

iOS-對圖片操作---新增到自定義相簿

轉自:https://www.jianshu.com/p/7113c2c15e2c   圖片操作---新增到自定義相簿 實際上,自定義相簿中的圖片並不是實際的圖片,而是對系統【相機膠捲】這個相簿中的圖片進行一個引用,所以將圖片儲存到自定義相簿的第一步就是先儲存到系統的【相機膠捲

微信小程式儲存圖片相簿功能實現

專案中有個儲存二維碼到相簿的功能,所以涉及到使用者是否授權相簿許可權的問題。廢話不多說,直接上乾貨… 功能邏輯: 先檢查使用者請求過的許可權中是否允許"儲存到相簿"許可權,如果沒有請求過這個許可權,應該向使用者發起授權請求(彈窗授權),如果請求過這個許可權,並且授權了,那就儲存圖片,

【小程式】儲存圖片到本地相簿

在小程式的開發中,會經常遇見把小程式內的圖片儲存到本地。 現在就為大家講解圖片儲存到本地的方法 常見的儲存圖片觸發事件型別: 長按圖片觸發函式儲存到本地,點選按鈕觸發函式儲存到本地 回撥函式程式碼如下: //獲取圖片資訊 wx.getImageInfo({ src: this.da

iOS 常用的儲存圖片的兩個方法

第一種、就是儲存到系統相簿中,這個也是最簡單的,當然使用者想要訪問系統相簿也是需要許可權的,需要使用者同意。 在Plist檔案加入下面的鍵值對就可以了 key : Privacy - Photo Library Usage Description          val

微信小程式生成二維碼、生成圖片儲存圖片到本地相簿

<!--畫布遮罩--> <!--生成二維碼的畫布--> <canvas canvas-id="myCanvas" style='width:{{ercode_canvasWidth}}px;height:{{ercode_canvasHeight

vue2.0 webApp儲存圖片相簿

ios下a標籤不能直接下載圖片。為了相容android和ios找到了h5plus。裡面有個儲存到相簿的功能。 程式碼很簡單,如下: saveImage{ if(!window.plus) re

ionic2/3 圖片儲存相簿---利用cordova-plugin-photo-library外掛

ionic中很多功能都是可以利用外掛完成的,而且簡捷方便,此次圖片儲存到相簿就是利用cordova-plugin-photo-library完成的。 官方文件         ionic: https://ionicframework.com/d