https://www.codingnext.com/CodingNEXT2024-03-28T14:51:21.430Zhttps://github.com/jpmonette/feedadowadow@reynoldqin@gmail.comhttps://www.codingnext.comhttps://www.codingnext.com/favicon.svgAll rights reserved 2024, adowhttps://www.codingnext.com/using-time-machine2021-09-11T00:00:00.000Z
Apple Time Machine 本来是用来帮助我们备份系统的。但是我相信很多人都和我一样有时觉得他就是烦人的存在
官方文档上,是将 RAW 的格式内容先保存到一个临时文件上,然后等待全部照片都获取完成后,使用 PHAssetCreationRequest 创建一个 PHAsset。他包含两个 Resource, 一个是压缩后的照片数据(JPEG/HEIF/HEVC 之类的格式),另一个是 RAW 数据。
PHPhotoLibrary.shared().performChanges({// Add the compressed (HEIF) data as the main resource for the Photos asset.let creationRequest = PHAssetCreationRequest.forAsset()
creationRequest.addResource(with:.photo,data: compressedData,options: nil)// Add the RAW (DNG) file as an altenate resource.let options =PHAssetResourceCreationOptions()
options.shouldMoveFile =true
creationRequest.addResource(with:.alternatePhoto,fileURL: rawURL,options: options)},completionHandler: self.handlePhotoLibraryError)
完整的代码请参考前面的官方文档。
显示 RAW 照片
在 iOS 显示 RAW 比存储他更加麻烦,因为 iOS 的系统相册根本没法显示出来。
在拍摄的时候, RAW 数据是以 alternatePhoto 保存在 PHAsset 中的,所以系统相册显示的其实是那张压缩后的照片(JPEG/HEIF/HEVC)。 从系统相册中我们甚至都不知道这是一张以 RAW 格式拍摄的照片。
我们可以将他理解为未完成显影的胶片。将 RAW 显示出来的过程就好像是显影的过程。所以,如何显示 RAW 取决于解析数据的程序。
在 macOS 上显示 RAW 照片
要显示和获取到 RAW 文件的最方便的方法是在 macOS 上的相册 App 中打开这张相片。 他会在右上角显示 J 或者 R 。 前者表示现在显示的是 JPEG格式,后者表示现在正在显示的是 RAW 格式。 在 macOS 的系统相册中可以对着这张照片点击右键选择将 JPEG 作为原片 或者 将 RAW 作为原片。 并且可以将此照片作为 dng 格式导出。 然后就可以用后期软件打开进行编辑了。
在 iOS 上显示 RAW 照片
虽然系统相册无法显示 RAW 格式,但是很多第三方的 App 是可以正确的现实和编辑 RAW 照片的,比如知名相机 App: Halide。 我自己开发的手动相机 App (Clara) 也可以正确的拍摄和显示 RAW 格式照片。
在 iOS 中,正确的现实 RAW 数据只有一个方法,即使使用 CIFilter。
显示相册中的流程大致是这样的:
获取 PHAsset, 每个 PHAsset 表示一张照片;
使用 PHCachingImageManager 获取这个 PHAsset 的内容,他的数据包含在 Data 类型中,同时还可以获取到对应的 UTI (用于表示这个数据的格式),如果这个照片是 RAW 格式,他会是 com.adobe.raw-image;
下半年开始的第一天发现通过 gitlab ci 往k8s 集群部署应用时错误了,原因是证书过期了。这是一个小型的集群,我直接建在了我们的虚拟化集群里面。建立这个集群的初衷只是当时学习完docker后顺便看了一下这方面的文章,照着官方文档就居然直接给安装上了。所以后期也没有认真去研究如何运维它。上面跑着的都是一些我自己写的和数据分析相关的应用。虽然证书过期了,运行中的容器到不受影响。