HEIF/HEVC简介
HEIF
HEIF 全称 High Efficiency Image Format (HEIF)。是由 Moving Picture Experts Group 于2013年制定的,存储图片和图片序列的格式。HEIF是一个容器的图片格式,他可以包含图片和图片序列(一个文件可以包含不止一个图片)。高效率图像格式(High Efficiency Image Format ,HEIF)最早被苹果公司的 iPhone 所使用,并且也将用于 Google 的 Android P 手机系统。接下来简单的讲解一下HEIF的理解。
一种格式的文件,可以对应多种文件的扩展名,同样HEIF是一种高效图像格式,这种格式对应多种文件扩展名。.heic 只是一个HEIF文件格式的一种扩展名,言外之意是:HEIF不仅有 .heic 这种扩展名,还有其它的,比如说:.heif 和 .avci,它们都是属于HEIF文件格式。当然,常见的只有 .heif 和 .heic 这两种,而 .avci 很少见。
HEVC
HEVC是High Efficiency Video Coding的缩写,是一种新的视频压缩标准,用来以替代H.264/AVC编码标准,2013年1月26号,HEVC正式成为国际标准。
HEIF/HEVC优劣
HEIF 图像格式的优势还不仅限于优化的文件大小,它还提供了诸多 JPEG 不可用的各种功能,如:支持透明图层和 16 位色彩。由于 iPhone 的相机是可以拍色 10 位彩色照片的,所以 iOS 从仅支持 8 位色的 JPEG 图片升级到支持 16 位色的 HEIF 也无可厚非了。同时HEIF的兼容性,一些设备和软件并不能想JPEG一样无缝支持。
HEVC又称为H.265,是H.264视频格式的升级。压缩算法更强大、视频更小、清晰度更高等优势。
应用:heic图片在IOS中使用
// Read a heic image from file
let inputURL = URL(fileURLWithPath: "/tmp/image.heic")
// 获取图片的资源
let source = CGImageSourceCreateWithURL(inputURL as CFURL, nil)
// 获取Heic文件的详细信息
let imageProperties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) as? [String: Any]
// 获取Heic 文件的图片
let image = CGImageSourceCreateImageAtIndex(source, 0, nil)
let options = [kCGImageSourceCreateThumbnailFromImageIfAbsent as String: true, kCGImageSourceThumbnailMaxPixelSize as String: 320] as [String: Any]
// 缩略图
let thumb = CGImageSourceCreateThumbnailAtIndex(source, 0, options as CFDictionary)
// 获取heic图片的详情信息
let imageProperties = CGImageSourceCopyPropertiesAtIndex(source, 0, nil) as? [String: Any]
// 获取Heic文件的详细信息 conslog
"{TIFF}" = {
DateTime = "2017:04:01 22:50:24";
Make = Apple;
Model = "iPhone 7 Plus";
Orientation = 1;
ResolutionUnit = 2;
Software = "11.0";
TileLength = 512;
TileWidth = 512;
XResolution = 72;
YResolution = 72;
};