iOS 浏览iphone相册中gif图片

前言:
鉴于最近业内bug数量的急剧减少,遂决定写点什么。

概述:
iphone相册不支持gif浏览,虽然相册中的gif是静止图但是保存的是gif格式。
这里大概讲下我的思路:

  • 1.先通过assetslibrary取得gif图片的data格式,然后保存到本地文件夹中(因为在 ALAssetsLibraryAssetForURLResultBlock外取的值为空,我用_ _block也不行,有其他方案的欢迎指教),然后当从相册取到图片并返回到你的控制器的时候(相册代理中的[self dismissViewControllerAnimated:YES completion:^() { }中),取得你保存在本地的imgData。
  • 2.加载gif的思路有两种,一种是通过帧动画加载,另一种通过webView加载。本文是通过webView加载。将刚取得的imgData通过webView加载并显示出来。
  • 3.webView中图片过大问题处理。设置web属性页面自适应,禁止滚动;并在web加载完成代理中,控制web的contentSize;
    _webView.scalesPageToFit = YES;
    _webView.scrollView.scrollEnabled = NO;
  • 4.最后,在appDelegate中,设置程序打开及退出时,删除本地保存的图片。

通过assetslibrary 框架获取相册中gif图片(注意获取gif图片需要将其转换为data,直接获取图片是第一帧的静止图片。)

        -(void)getGifData:(NSDictionary *)info//获取图片并写入文件中
        {
            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];
            //此处讲图片转为 data格式并保存到本地文件夹中,因为在这个block块结束时,ALAsset对象销毁,imageData所指向的是他对应的指针,也会销毁,在block外取值为空。
            }
            else {

            //未获取到gif
            }
            };

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

结语:通过本demo只能实现一张图一换,如果要实现滚动播放相册所有图片,可通过assetsLibrary的group方法实现,具体的我也没做(为啥?我笨、我懒、我还要写bug呢。),有兴趣的可以自己去做。

·
·
·
·
·
·
·
·
等等,请放下您手中的砖头,什么事情是不可以商量的呢?求您别再砸了,再砸,我都快变成释迦摩尼了,我这满头的包啊😭。您看看我这晶莹、清澈的眼睛,您看看我这阳光、爽朗的面庞,我这不是正在写呢吗。您看,写好了的,下面就是。

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

    追求完美的用户体验,是我们的职业素养。每一个功能都可以通过不同的方法实现,但是,程序员的职责是寻找最优雅的一种。
    如果说,教育的目的,当是传递生命的气息。
    那么,编程的目的,当是灌注心灵的诗句。
 
    [self getGroupArray];//获取所有图片------这里只为效果,实际中,获取图片当在进入此页面前就完成,避免用户进入当前页面的等待时间。

1.通过 -(void)getGroupArray;方法和 -(void)getImgArr;方法,获取相册中各组子相册和相册中所有图片;

2.-(void)getGifData:(NSURL *)url forWeb:(UIWebView *)webView;//获取图片并加载;

3.创建三个webview,加载到scrollview上,并通过三图实现无限轮播(模拟器可以不这样做,但是手机的话,相册中图片数量可能很大,会导致内存问题。)

4.但是还有个问题,就是滑动切换图片的时候,会有闪烁。(可能是在图片适配webview大小的方法中的问题:|-(void)webViewDidStartLoad:(UIWebView *)webView;中和方法:-(void)webViewDidFinishLoad:(UIWebView *)webView中|未解决。欢迎指教。)

呼~,摸着我这满头的智慧的疙瘩,我在想:佛祖啊,您的大智慧,这样常年保持着。是谁在不停地敲打着您呢?是这信仰、诉求您的芸芸众生吗?还是您自己啊? 哎,我是懒惰了吧。
最后是demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342