1. 程式人生 > >劉偉Derick-IOS應用開發(iPhone iPad 應用、遊戲)瀟灑的程式設計師

劉偉Derick-IOS應用開發(iPhone iPad 應用、遊戲)瀟灑的程式設計師

儲存圖片到photo library與儲存video到photo library的API差不多,但也有所不同。圖片是可以直接把資料寫入photo library,而video需要先把資料存到臨時檔案然後,然後通過臨時檔案的路徑去轉存到photo library。

我們直接來看相應的API:

// These methods can be used to add photos or videos to the saved photos album.

// With a UIImage, the API user can use -[UIImage CGImage] to get a CGImageRef, and cast -[UIImage imageOrientation] to ALAssetOrientation.
- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef orientation:(ALAssetOrientation)orientation completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock;

// The API user will have to specify the orientation key in the metadata dictionary to preserve the orientation of the image
- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1);

// If there is a conflict between the metadata in the image data and the metadata dictionary, the image data metadata values will be overwritten
- (void)writeImageDataToSavedPhotosAlbum:(NSData *)imageData metadata:(NSDictionary *)metadata completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1);

- (void)writeVideoAtPathToSavedPhotosAlbum:(NSURL *)videoPathURL completionBlock:(ALAssetsLibraryWriteVideoCompletionBlock)completionBlock;

前三個都是存圖片的,通過引數我們可以發現,第一個使用了我們傳進去的方向,第二個可以通過傳入image的metadata保留image的metadata,前兩個都是把圖片轉成 CGImageRef 再儲存,第三個是傳入NSData所以可以完整保留image的資訊,同時也有metadata傳進去,如果image自帶的資訊與metadata衝突那metadata會覆蓋圖片本身所帶的metadata。

最後一個是儲存視訊的API,可以看到引數是一個NSURL,這個只要穿一個本地臨時檔案的file URL 就好了。

儲存圖片根據你的需求選擇適當的API,比如我們獲取到的是UIImage的例項,那麼我們用第一個或者第二個比較方便,如果我們從本地臨時檔案讀取image的資料那麼我們直接用第三個就比較方便。

下面來一段簡單的程式碼:

- (void)saveImage:(UIImage*)image{
    ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc]init];
    [assetsLibrary writeImageToSavedPhotosAlbum:[image CGImage] orientation:(ALAssetOrientation)image.imageOrientation completionBlock:^(NSURL *assetURL, NSError *error) {
        if (error) {
            NSLog(@"Save image fail:%@",error);
        }else{
            NSLog(@"Save image succeed.");
        }
    }];
}

儲存video就麻煩點了,你需要先把video寫入本地檔案然後,獲取到本地臨時檔案的路徑,然後呼叫上面的第四個API寫入photo library。

關於寫入臨時檔案,我之前寫過一篇關於檔案讀寫的文章,可以去看看。

我這裡奉上一個把工程資源庫的video寫入photo library的demo,這樣你就可以把video匯入模擬器了,方便有些時候測試。

主要程式碼如下,整個工程可以再文尾連結下載:

- (void)save:(NSString*)urlString{
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library writeVideoAtPathToSavedPhotosAlbum:[NSURL fileURLWithPath:urlString]
                                completionBlock:^(NSURL *assetURL, NSError *error) {
                                    if (error) {
                                        NSLog(@"Save video fail:%@",error);
                                    } else {
                                        NSLog(@"Save video succeed.");
                                    }
                                }];
}
整個工程附在後面:

相關推薦

Derick-IOS應用開發(iPhone iPad 應用遊戲)瀟灑程式設計師

儲存圖片到photo library與儲存video到photo library的API差不多,但也有所不同。圖片是可以直接把資料寫入photo library,而video需要先把資料存到臨時檔案然後,然後通過臨時檔案的路徑去轉存到photo library。我們直接來看相

利用Citrix實現虛擬化應用IPHONE,IPAD實現企業級應用

 前言: 剛開始虛擬化研究目的只是實現手機的移動辦公。應用場景很簡單,就是想利用當前流行的IPHONE或者IPAD能進行各種企業級的應用操作,比如老闆能用IPAD使用B/S結構的OA程式。剛開始很自然的就聯想到遠端終端連線軟體還有供應商提供的IPAD版應用程式。前者有著名的

技術部落格】專注軟體架構設計模式重構UML和OOAD!

個人簡介 劉偉(Sunny),中南大學計算機應用技術博士,國家認證系統分析師(2005年),國家認證系統架構設計師(2009年,全國第四名),高階程式設計師,資料庫系統工程師,MCSE,MCDBA,CASI專業顧問與企業內訓講師。具有十多年軟體開發、專案管理及教育培訓經驗,

iOS混合開發庫(GICXMLLayout)三建立工程

這篇文章主要是提供一個通用的使用GIC進行開發的專案結構,包括如何引入HotReload功能。 我已經將基礎的專案框架提交到git中,你也可以直接下載檢視。git連結 一、基本的專案搭建 首先是建立一個全新的iOS單頁面應用。 。 在專案的根目錄下新增podf

iOS混合開發庫(GICXMLLayout)二功能架構介紹

如果你已經下載了專案原始碼,並且在模擬器或者真機中執行過了,你會發現GIC還是提供了較多的功能的,通過這些功能基本能夠滿足大多數的開發需求了。 這篇文章主要分享下GIC的整體功能以及架構設計介紹。 GIC的佈局系統以及UI元素是基於Texture實現的,資料繫結中的單向和雙向繫結是基於RAC實現的,而動畫

iOS混合開發庫(GICXMLLayout)八熱更新

GIC在UI上支援直接以XML來寫,而業務邏輯支援使用JavaScript來寫,因此具備了應用熱更新的能力。 本篇將會重點介紹如何使用GIC來實現應用的熱更新。 如果你不想看下面內容,也可以直接使用腳手架來建立一個具有HotUpdate功能的工程模板。你可以按照腳手架的提示直接執行這個模板來檢視hotUp

iOS混合開發庫(GICXMLLayout)七JavaScript篇

介紹 GIC從0.3.0版本開始正式支援JavaScript,也就意味你可以直接使用JavaScript來寫業務邏輯,至此開始,結合XML、js檔案、圖片資源等靜態檔案,完全可以將整個的APP做成一個可以熱更新的應用。另外,在開發的時候也可以通過HotReload的方式,無需編譯整個APP就能實時重新整理應

iOS混合開發庫(GICXMLLayout)四腳手架IDE

在前一篇文章中介紹瞭如何一步一步建立GIC應用,並且給出了一個大概的工程結構的參考,而這一篇文章將會介紹如何使用腳手架直接建立GIC工程以及如何使用使用VSCode來開發專案。 GICXMLLayout現在已經有了配套的腳手架工具,以及IDE的支援。這將進一步的提升你的開發效率。 腳手架 腳手架是基於N

iOS混合開發庫(GICXMLLayout)六資料繫結原理

各位對於MVVM這種架構應該多多少少有一定的瞭解了,而提到MVVM那麼資料繫結應該是繞不過去的一個話題。資料繫結是MVVM架構中的一個重要組成部分,可以做到View跟ViewModel之間的解耦,真正的做到UI、邏輯的分離。 在iOS上要是實現MVVM,那麼一般使用RAC或者RXSwift來實現資料繫結的功

iOS混合開發庫(GICXMLLayout)五Texture篇

GIC在UI元素以及佈局系統都是基於Texture開發的,這裡可能需要做下說明。 . UI元素指的是lable、list、image這些可以直接顯示內容的元素。 . 佈局系統指的是專門用來佈局的面板,同時也是一種特殊的UI,你可以理解為一個一種佈局面板就是一種UIView,因此也可以設定backgroun

AWS CodeStar 雲應用開發_雲應用部署

AWS CodeStar 可以讓您在 AWS 上快速開發、構建和部署應用程式。AWS CodeStar 提供一個統一的使用者介面,您可以在此介面輕鬆管理您的軟體開發活動。藉助 AWS CodeStar,您可以在幾分鐘內建立完整的持續交付工具鏈,從而以更快的速度開始釋出程式碼。AWS Cod

IOS學習】iPhone螢幕尺寸解析度及適配

1.iPhone尺寸規格 裝置 iPhone 寬 Width 高 Height 對角線 Diagonal 邏輯解析度(point) Scale Factor 裝置解析度(pixel) PPI 3GS 2.4

除錯大叔V2.0.2(2018.11.18)|http/s介面除錯資料分析程式設計師輔助開發神器

2018.11.18 - 除錯大叔 V2.0.2*支援http/https協議的get/post除錯與反饋;*可儲存請求協議的記錄;*內建一批動態引數,可應用於Referer、URL、引數;支援自定義常量引數;支援自定義UA資訊(解決模擬不同網站或手機請求); *可自由管理cookie;*支援請求的代理與模擬

混合開發的大趨勢之 一個Android程式設計師眼中的 React.js 塊級作用域 和 let

最近都有事幹然後,快到月底了這個月給CSDN的博文也就兩篇,想想也蠻多天沒更了,那就來一篇。 學了一段時間的RN,公司專案的部分模組也遷移到了RN。 我自己是會SE的東西卻對JS不太熟,所以生產效率並不是太高,正好微信的小程式也是類似的實現,讓我覺得

iOS-資料返回欄位null導致的程式crash問題解決

在iOS開發過程中經常需要與伺服器進行資料處理,但是在資料接通過程中會出現:null “”等問題導致莫名其妙的崩潰。相信你一定會寫各種判斷來處理這些異常,甚至你還會一個一個介面的去改,折讓我們實在是心灰意冷。 再者可能你會寫個分類 調它。這樣也會讓你非常的苦惱

【Android開發經驗】LayoutInflater——80%的Android程式設計師對它並不瞭解甚至錯誤使用

這個標題起的有點誇張哈,但是LayoutInflater這個類的一些用法,在Android開發者使用的過程中,確實存在著一些很普遍的誤區,最起碼我研究的這麼多小專案的原始碼,基本上都在錯誤的使用這個類。今天,看到了一篇文章講LayoutInflater的用法,瞬間感覺自己對

強東:錢並不能帶來任何快樂,京東程式設計師:你這樣會失去我的c

此前一直有這麼一個不是段子的段子在網路瘋傳:“普通家庭馬化騰,悔創阿里傑克馬,中等意思王健林,不識妻美劉強東”,近日,劉強東在泰國一個創業者活動中又爆出了金句“錢並不能帶來任何快樂, 有時錢越多越糟糕引入各種熱議,我們在來看看哪些大佬都說過什麼金句!11月2日,劉強東在泰國一

iOS開發之獲取iPhone/iPad/Android 介面和icon尺寸規範

注意:iOS所有圖示的圓角效果由系統生成,給到的圖示本身不能是圓角的。1. 桌面圖示 (app icon)for iPhone6 plus(@3x) : 180 x 180for iPhone 6/5s

iOS越獄開發】怎樣將應用打包成.ipa文件

ria font 配置文件 例如 方法 col stat pack 應該 在項目開發中。我們經常須要將project文件打包成.ipa文件。提供給越獄的iphone安裝。 以下是一種方法: 1、首先應該給project安裝好配置文件(這裏不再敖述),在ios de

iOS 9應用開發教程之ios9中實現button的響應

ins color cto div eve class sub avi src iOS 9應用開發教程之ios9中實現button的響應 IOS9實現button的響應 button主要是實現用戶交互的。即實現響應。button實現響應的方式能夠依據