ImageIO实战
来源:互联网 发布:键盘按键修改软件 编辑:程序博客网 时间:2024/05/16 08:47
ImageIO框架基于C语言读写UIImage,同时也支持颜色管理和访问图像元数据。
下面为大家展示获取照片缩略图的源代码代码。
//// YJUtilsImageIO.swift// YJImageIO//// CSDN:http://blog.csdn.net/y550918116j// GitHub:https://github.com/937447974/Blog//// Created by yangjun on 16/1/14.// Copyright © 2016年 阳君. All rights reserved.//import UIKitimport ImageIO/// ImageIO库工具类public struct YJUtilsImageIO { // MARK: - /// 获取UIImage的缩略图 static func createThumbnailImageFromImage(image: UIImage) -> UIImage? { guard let data = UIImagePNGRepresentation(image) else { return nil } guard let cgImage = YJUtilsImageIO.createThumbnailImageFromData(data, imageSize: data.length) else { return nil } return UIImage(CGImage: cgImage) } /// 获取UIImage的缩略图 static func createThumbnailImageFromData(data: NSData, var imageSize: Int) -> CGImageRef? { // Create an image source from NSData; no options. // Make sure the image source exists before continuing. guard let imageSource = CGImageSourceCreateWithData(data as CFDataRef, nil) else { print("Image source is NULL.") return nil } // Package the integer as a CFNumber object. Using CFTypes allows you to more easily create the options dictionary later. let thumbnailSize: CFNumberRef = CFNumberCreate(kCFAllocatorDefault, CFNumberType.IntType, &imageSize) // Set up the thumbnail options. let keys: [CFStringRef] = [kCGImageSourceCreateThumbnailWithTransform, kCGImageSourceCreateThumbnailFromImageIfAbsent, kCGImageSourceThumbnailMaxPixelSize] let values:[CFTypeRef] = [kCFBooleanTrue, kCFBooleanTrue , thumbnailSize] var kcBacks = kCFTypeDictionaryKeyCallBacks var vcBacks = kCFTypeDictionaryValueCallBacks let options: CFDictionaryRef = CFDictionaryCreate(kCFAllocatorDefault, UnsafeMutablePointer(UnsafePointer<Void>(keys)), UnsafeMutablePointer(UnsafePointer<Void>(values)), 2, &kcBacks, &vcBacks) // Create the thumbnail image using the specified options. let thumbnailImage = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options) // Release the options dictionary and the image source, when you no longer need them. /* swift 废弃 CFRelease(thumbnailSize) CFRelease(options) CFRelease(imageSource) */ // Make sure the thumbnail image exists before continuing. guard thumbnailImage != nil else { print("Thumbnail image not created from image source.") return nil } return thumbnailImage }}
你还可以使用swift的高级封装实现,可参考如下方法。
// return image as PNG. May return nil if image has no CGImageRef or invalid bitmap formatpublic func UIImagePNGRepresentation(image: UIImage) -> NSData? // return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)public func UIImageJPEGRepresentation(image: UIImage, _ compressionQuality: CGFloat) -> NSData?
Appendix
Sample Code
Swift
Related Documentation
Image I/O Programming Guide
Revision History
Copyright
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog
0 0
- ImageIO实战
- 13.2-全栈Java笔记:打飞机游戏实战项目|Graphics|ImageIO|GameUtil
- ImageIO.framework
- ImageIo类
- 安装imageio
- eclipse 不能引用 javax.imageio.ImageIO
- javax.imageio.ImageIO.read(file) 内存溢出
- eclipse 不能引用 javax.imageio.ImageIO
- ImageIO javax.imageio;读取图片问题
- javax.ImageIO使用指导
- java ImageIO处理
- Java imageIO处理图像
- java ImageIO处理
- 使用ImageIO输入输出位图
- Java ImageIO 图片操作
- ImageIO操作图片
- Java imageIO处理图像
- Java imageIO处理图像
- Android模拟器2.0初探
- bootstrap-datetimepicker控件位置异常
- 需求 - 4 - 滚动广播文字 - 2
- 交换机MIB浏览器ifType、ifDescr、ifMtu、ifInOctets等的含义
- Java中单例模式和静态类的区别
- ImageIO实战
- 多线程的总结
- Android开发--RecyclerView使用
- 【哈工大oj】1073 - 病毒(并查集,水)
- java设计模式之策略模式篇
- JS控制生成缩略图
- linux命令------crontab命令
- 应用安全技术趋势之 Top 5
- php str_replace技巧-避免重复替换