objccn-图片格式

图像格式存储:位图和矢量图像。位图把值存在阵列中,矢量格式存储的是绘图图像的指令。还有混合格式PostScript能够排布字母甚至位图,使其成为了一个非常灵活的方式。衍生格式pdf。

xcdoe6已经支持了PDF格式,但是迄今扔不完善,只是在编译时将其创建成了位图图像。最常见的矢量图为SVG,在iOS中也有一个渲染SVG文件的库,SVGKit。

位图:表达位图最简单的方法是讲二进制作为每个像素的值,一个像素只有开、管两种状态,我们可以在一个字节中存储8个像素,效率非常高。但是只能存储两种颜色。gif有一个颜色表只能存256种颜色,png有个与之色板,每个像素的颜色分量都是直接指定的。gif和png的压缩是无损的。jpeg压缩是有损的,但是在照片中不存在这个问题。恩,这里有一个色彩深度的问题jepg的深度是8bit,raw的色彩深度是14bit。

综上,就放大缩小而言,矢量格式svg最好,对比鲜明切颜色数量有限的线条图适合gif或png,而照片应该使用jpeg。

处理图像数据:iOS有几个类是用来处理位图数据的,UIImage(UIKit),CGImage(CoreGraphics)和CIImage(CoreImage)这几个类源自不同的框架,对图像的储存优化方式也各有侧重。通常情况下,不同类型之间是可以轻松转换的。

从相机捕获图像:可以创建AVCaptureStillImageOutput静态对象,可以调整曝光控制或聚焦设定,光补偿,闪光灯,甚至ISO设置。

用程序操作对象:简单的可以使用UIGraphicsBeginImageContext方法。UIGraphicsGetImageFromCurrentImageContext();

元数据:用于存储图像信息的标准格式是Exif,可交换图像文件格式。iOS中可以使用CGImageSourceCopyPropertiesAtIndex方法访问Exif信息。有些信息可能会丢失,有些可能被删除。NSA就在收割XKeyscore程序中的Exif数据。

总结:图像的来源很多,每个来源都会需要处理特定且不同的边界问题。不过iOS中最大的问题其实是内存,随着相机和屏幕分辨率越来越好,图像的尺寸也开始变大。iPhone5s有一个800万像素的摄像头;如果每个像素被存储在4个字节(分别用于三个颜色信道,加上一个不透明性),就会产生32兆的数据、如果需要添加几个工作副本或图像预览,我们会很快在处理多张图片或幻灯片时遇到麻烦。再加上文件系统的写入也不是非常快,所以很有必要进行一些优化,以确保iOS应用程序运行流畅。

原文地址:https://www.cnblogs.com/encoreMiao/p/5207860.html