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应用程序运行流畅。
objccn-图片格式的更多相关文章
- PPM图片格式及其C读写代码
PPM图像格式介绍 PPM图像格式是由Jef Poskanzer 大叔,在我出生那一年,也就是1991年所创造的,碰巧的是PPM也是天蝎座. PPM(Portable Pixmap Format)还有 ...
- 【VC++技术杂谈007】使用GDI+进行图片格式转换
本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...
- JS验证图片格式和大小并预览
用于上传图片的js验证: <%@ page language="java" contentType="text/html; charset=UTF-8"p ...
- PNG和Gif及JPEG图片格式比较
Gif格式特点 透明性Gif是一种布尔透明类型,既它可以是全透明,也可以是全不透明,但是它并没有半透明(alpha 透明). 动画Gif这种格式支持动画. 无损耗性Gif是一种无损耗的图像格式,这也意 ...
- JavaScript校验图片格式及大小
<!DOCTYPE html> <html> <head> <title>JavaScript校验图片格式及大小</title> <s ...
- 前端工程师技能之photoshop巧用系列第四篇——图片格式
× 目录 [1]图片格式 [2]保存设置 前面的话 对于前端来说,图片格式是需要重要掌握的知识.本文是photoshop巧用系列第四篇——图片格式 图片格式 目前在前端的开发中常用的图片格式有jpg. ...
- 利用PhotoShop将Font-Awesome转为图片格式
介绍如何将Font-Awesome等字体图标转换为图片格式,使用PHOTPSHOP很简单. 网上找了很多,都比较麻烦.别问为什么要这么做,因为你还没遇到需要的时候. 下载Font-Awesome字体库 ...
- 【faster-rcnn】训练自己的数据——修改图片格式、类别
修改图片格式 matlab代码 其实内部一些代码是用了rbg的fast-rcnn代码的. \datasets\VOCdevkit2007\VOCcode\VOCinit.m里面,查找'jpg',改成' ...
- BMP图片格式
BMP图片 BMP采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大.BMP文件的图像深度可选lbit.4bit.8bit及24bit和32bit.BMP文 ...
- C#验证是否是真的图片格式
做图片上传功能时,我们要限制用户上传的图片格式和大小. 但是,还有一种情况就是验证用户伪造的符合要求的图片,这种情况就必须要验证文件的真正格式. C#的办法时可以通过将文件读成二进制流,取前两个字节判 ...
随机推荐
- [LeetCode] Implement Trie (Prefix Tree)
Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...
- 新项目,WebTest
最近为了给Jumony for ASP.NET进行单元测试有点伤神,ASP.NET因为环境特殊,一直是单元测试的禁地,传统的单元测试工具由于运行在非ASP.NET环境,可谓是举步维艰.当然,微软在搞A ...
- RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描
现在的 CPU 都提供了单指令流多数据流(single instruction multiple data, SIMD)指令集.最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面. 其中,S ...
- php设置浏览器响应时间
ini_set('max_execution_time', '0'); ‘0’表示不受时间限制,一般默认30s;
- 利用Microsoft.Practices.Unity的拦截技术,实现.NET中的AOP
1.记住这个单词的意思:Interception(拦截) 2.首先说一下原理和背景 原理:所谓的AOP就是面向切面编程,这里不多说,百度搜索. 目的:个人认为是为了解耦,部分代码跟业务代码分离,业务代 ...
- maven 生成可执行的jar文件
微服务的热潮,慢慢讲jar引入了码农的视线之中,从传统web开发中过来的人面对这个东西也算是个新鲜事了,接下来聊一聊在maven下生成可运行jar的那些事. Maven可以使用mvn package指 ...
- Django用已有的数据库
python mysite/manage.py inspectdb 会按照你的数据库生成Model 拷贝进去用就可以了!
- Mac上更新Ruby
因为准备在项目中使用bootstrap,在安装bootstrap过程中提示需要Ruby的版本在1.9.2以上,而目前使用的Ruby版本是Mac系统自带的1.8.7.所以需要对Ruby进行升级.这里使用 ...
- c#线程间操作UI-Invoke和BeginInvoke
利用Invoke和或BeginInvoke实现线程间操作UI的简单例子. /* 窗体包含一个button和一个richtextbox控件 * 注:必须在子线程中执行Invoke和或BeginInvok ...
- [Android]Volley源码分析(五)
前面几篇通过源码分析了Volley是怎样进行请求调度及请求是如何被实际执行的,这篇最后来看下请求结果是如何交付给请求者的(一般是Android的UI主线程). 类图: