iOS 瀏覽iphone相冊(cè)中g(shù)if圖片

前言:
鑒于最近業(yè)內(nèi)bug數(shù)量的急劇減少装悲,遂決定寫(xiě)點(diǎn)什么。

概述:
iphone相冊(cè)不支持gif瀏覽,雖然相冊(cè)中的gif是靜止圖但是保存的是gif格式和敬。
這里大概講下我的思路:

  • 1.先通過(guò)assetslibrary取得gif圖片的data格式,然后保存到本地文件夾中(因?yàn)樵?ALAssetsLibraryAssetForURLResultBlock外取的值為空戏阅,我用_ _block也不行昼弟,有其他方案的歡迎指教),然后當(dāng)從相冊(cè)取到圖片并返回到你的控制器的時(shí)候(相冊(cè)代理中的[self dismissViewControllerAnimated:YES completion:^() { }中)奕筐,取得你保存在本地的imgData舱痘。
  • 2.加載gif的思路有兩種,一種是通過(guò)幀動(dòng)畫(huà)加載离赫,另一種通過(guò)webView加載芭逝。本文是通過(guò)webView加載。將剛?cè)〉玫膇mgData通過(guò)webView加載并顯示出來(lái)渊胸。
  • 3.webView中圖片過(guò)大問(wèn)題處理旬盯。設(shè)置web屬性頁(yè)面自適應(yīng),禁止?jié)L動(dòng)翎猛;并在web加載完成代理中胖翰,控制web的contentSize;
    _webView.scalesPageToFit = YES;
    _webView.scrollView.scrollEnabled = NO;
  • 4.最后办成,在appDelegate中泡态,設(shè)置程序打開(kāi)及退出時(shí),刪除本地保存的圖片迂卢。

通過(guò)assetslibrary 框架獲取相冊(cè)中g(shù)if圖片(注意獲取gif圖片需要將其轉(zhuǎn)換為data某弦,直接獲取圖片是第一幀的靜止圖片。)

        -(void)getGifData:(NSDictionary *)info//獲取圖片并寫(xiě)入文件中
        {
            NSURL *imageRefURL = [info valueForKey:UIImagePickerControllerReferenceURL];
    
            ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
            __block NSData *imgData = nil;
            void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *) = ^(ALAsset *asset) {

            if (asset != nil) {

            ALAssetRepresentation *rep = [asset defaultRepresentation];
            Byte *imageBuffer = (Byte*)malloc(rep.size);
            NSUInteger bufferSize = [rep getBytes:imageBuffer fromOffset:0.0 length:rep.size error:nil];
            NSData *imageData = [NSData dataWithBytesNoCopy:imageBuffer length:bufferSize freeWhenDone:YES];

            imgData = imageData;
            [imgData writeToFile:[self getImgDataPath] atomically:YES];
            //此處講圖片轉(zhuǎn)為 data格式并保存到本地文件夾中而克,因?yàn)樵谶@個(gè)block塊結(jié)束時(shí)靶壮,ALAsset對(duì)象銷(xiāo)毀,imageData所指向的是他對(duì)應(yīng)的指針员萍,也會(huì)銷(xiāo)毀腾降,在block外取值為空。
            }
            else {

            //未獲取到gif
            }
            };

            [assetsLibrary assetForURL:imageRefURL
            resultBlock:ALAssetsLibraryAssetForURLResultBlock
            failureBlock:^(NSError *error){
            }];
        }

結(jié)語(yǔ):通過(guò)本demo只能實(shí)現(xiàn)一張圖一換碎绎,如果要實(shí)現(xiàn)滾動(dòng)播放相冊(cè)所有圖片螃壤,可通過(guò)assetsLibrary的group方法實(shí)現(xiàn),具體的我也沒(méi)做(為啥筋帖?我笨奸晴、我懶、我還要寫(xiě)bug呢日麸。)寄啼,有興趣的可以自己去做。

·
·
·
·
·
·
·
·
等等,請(qǐng)放下您手中的磚頭墩划,什么事情是不可以商量的呢涕刚?求您別再砸了,再砸乙帮,我都快變成釋迦摩尼了杜漠,我這滿(mǎn)頭的包啊??。您看看我這晶瑩察净、清澈的眼睛碑幅,您看看我這陽(yáng)光、爽朗的面龐塞绿,我這不是正在寫(xiě)呢嗎沟涨。您看,寫(xiě)好了的异吻,下面就是裹赴。

ShowAllPhotosVC 部分:(查看所有圖片)

    追求完美的用戶(hù)體驗(yàn),是我們的職業(yè)素養(yǎng)诀浪。每一個(gè)功能都可以通過(guò)不同的方法實(shí)現(xiàn)棋返,但是,程序員的職責(zé)是尋找最優(yōu)雅的一種雷猪。
    如果說(shuō)睛竣,教育的目的,當(dāng)是傳遞生命的氣息求摇。
    那么射沟,編程的目的,當(dāng)是灌注心靈的詩(shī)句与境。
 
    [self getGroupArray];//獲取所有圖片------這里只為效果验夯,實(shí)際中,獲取圖片當(dāng)在進(jìn)入此頁(yè)面前就完成摔刁,避免用戶(hù)進(jìn)入當(dāng)前頁(yè)面的等待時(shí)間挥转。

1.通過(guò) -(void)getGroupArray;方法和 -(void)getImgArr;方法,獲取相冊(cè)中各組子相冊(cè)和相冊(cè)中所有圖片;

2.-(void)getGifData:(NSURL *)url forWeb:(UIWebView *)webView;//獲取圖片并加載;

3.創(chuàng)建三個(gè)webview共屈,加載到scrollview上绑谣,并通過(guò)三圖實(shí)現(xiàn)無(wú)限輪播(模擬器可以不這樣做,但是手機(jī)的話(huà)拗引,相冊(cè)中圖片數(shù)量可能很大借宵,會(huì)導(dǎo)致內(nèi)存問(wèn)題。)

4.但是還有個(gè)問(wèn)題寺擂,就是滑動(dòng)切換圖片的時(shí)候暇务,會(huì)有閃爍。(可能是在圖片適配webview大小的方法中的問(wèn)題:|-(void)webViewDidStartLoad:(UIWebView *)webView;中和方法:-(void)webViewDidFinishLoad:(UIWebView *)webView中|未解決怔软。歡迎指教垦细。)

呼~,摸著我這滿(mǎn)頭的智慧的疙瘩挡逼,我在想:佛祖啊括改,您的大智慧,這樣常年保持著家坎。是誰(shuí)在不停地敲打著您呢嘱能?是這信仰、訴求您的蕓蕓眾生嗎虱疏?還是您自己叭锹睢? 哎做瞪,我是懶惰了吧对粪。
最后是demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市装蓬,隨后出現(xiàn)的幾起案子著拭,更是在濱河造成了極大的恐慌,老刑警劉巖牍帚,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儡遮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡暗赶,警方通過(guò)查閱死者的電腦和手機(jī)鄙币,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蹂随,“玉大人爱榔,你說(shuō)我怎么就攤上這事〔诩埃” “怎么了详幽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)浸锨。 經(jīng)常有香客問(wèn)我唇聘,道長(zhǎng),這世上最難降的妖魔是什么柱搜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任迟郎,我火速辦了婚禮,結(jié)果婚禮上聪蘸,老公的妹妹穿的比我還像新娘宪肖。我一直安慰自己表制,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布控乾。 她就那樣靜靜地躺著么介,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜕衡。 梳的紋絲不亂的頭發(fā)上壤短,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音慨仿,去河邊找鬼久脯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镰吆,可吹牛的內(nèi)容都是我干的帘撰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼万皿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼骡和!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起相寇,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤慰于,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后唤衫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體婆赠,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年佳励,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了休里。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赃承,死狀恐怖妙黍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瞧剖,我是刑警寧澤拭嫁,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站抓于,受9級(jí)特大地震影響做粤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捉撮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一怕品、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巾遭,春花似錦肉康、人聲如沸闯估。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涨薪。三九已至,卻和暖如春纹安,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背砂豌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工厢岂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阳距。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓塔粒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親筐摘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卒茬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356