热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS开发问题之:如何将相册中的动态GIF图转化成NSData类型?

从Safari上保存了一张动态GIF到本地的相册中可以确定,保存到本地相册的动态GIF没有问题,只是iPhone的相册不能显示动态GIF然后在自己的应
从Safari上保存了一张动态 GIF 到本地的相册中

可以确定,保存到本地相册的动态 GIF 没有问题,只是iPhone的相册不能显示动态 GIF

然后在自己的应用中,要可以选择 GIF 图片上传到服务器

用UIImagePickerController得到的信息是如下的格式
    UIImagePickerCOntrollerCropRect= "NSRect: {{0, 0}, {640, 480}}";
    UIImagePickerCOntrollerEditedImage= "";
    UIImagePickerCOntrollerMediaType= "public.image";
    UIImagePickerCOntrollerOriginalImage= "";
    UIImagePickerCOntrollerReferenceURL= "assets-library://asset/asset.GIF?id=B6703C91-CD81-4940-A5B0-D3B649FDD015&ext=GIF";

UIImagePickerControllerReferenceURL这个属性的路径没用办法使用,用这个路径得到的NSData是nil

UIImagePickerControllerOriginalImage这个属性虽然能得到UIImage

但是UIImage转NSData的方法,只有UIImagePNGRepresentation和UIImageJPEGRepresentation
这两个方法得到的图片数据都不是原图片的真正数据

有没有什么办法能将UIImagePickerController得到的图片转换成原始NSData的方法呢?


========================华丽的分割线=========================

START

#import


                    NSURL *imageRefURL = [info valueForKey:UIImagePickerControllerReferenceURL];
                    
                    ALAssetsLibrary* assetLibrary = [[ALAssetsLibrary alloc] init];
                    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];

                            [self setPrevImage];
                        }
                        else {
                        }                        
                    };
                    
                    [assetLibrary assetForURL:imageRefURL
                                  resultBlock:ALAssetsLibraryAssetForURLResultBlock 
                                 failureBlock:^(NSError *error){
                                 }];


END




原文链接:http://www.cocoachina.com/bbs/read.php?tid-151776-keyword-gif%7Cdata.html


推荐阅读
author-avatar
__wolf狼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有