zoukankan      html  css  js  c++  java
  • Swift

    ALAsset类代表相册中的每个资源文件,可以通过它获取照片的相关信息,及其对应的原图,全屏图,缩略图等。

    当我们想通过一个照片的ALAsset对象,来获取这张照片的原图并将其转换成NSData数据,有如下两种方法:

    方法一:将其转换成UIImage对象,再通过UIImageJPEGRepresentation或UIImagePNGRepresentation方法转成NSData
    这种方法不推荐,因为这个其实对图片进行了压缩转换,不再是图片的原始数据(像如果是gif动态图会变成静态图片),同时照片原来附带的拍摄信息什么的也会丢失。
    1
    2
    3
    var representation =  myAsset.defaultRepresentation()
    var image = UIImage(CGImage:representation.fullResolutionImage().takeUnretainedValue())
    var data:NSData = UIImageJPEGRepresentation(image, 1.0)

    方法二:直接复制图片的字节数据
    推荐,这样得到的是实际的数据
    1
    2
    3
    4
    5
    var representation =  myAsset.defaultRepresentation()
    var imageBuffer = UnsafeMutablePointer<UInt8>.alloc(Int(representation.size()))
    var bufferSize = representation.getBytes(imageBuffer, fromOffset: Int64(0),
        length: Int(representation.size()), error: nil)
    var data:NSData NSData(bytesNoCopy:imageBuffer ,length:bufferSize, freeWhenDone:true)

    附:通过ALAsset获取缩略图

    1
    2
    var image = UIImage(CGImage:myAsset.thumbnail().takeUnretainedValue())
    var data:NSData = UIImageJPEGRepresentation(image, 1.0);
  • 相关阅读:
    数据库面试知识点
    一文搞定数据仓库之拉链表,流水表,全量表,增量表
    Teach Yourself Programming in Ten Years——用十年教会自己编程
    成为一个喜鹊程序员
    查询数据表中最后5条数据
    新系统安装-centos7.4
    时间同步服务器chrony+PPTP
    memcached服务器
    jdk和Tomcat搭建
    Linux服务器-NFS
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4843331.html
Copyright © 2011-2022 走看看