探索 iOS 多媒体技术|青训营笔记

67 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

相册权限控制

typedef NS_ENUM(NSInteger, PHAuthorizationStatus) {
    // 暂未获取权限
    PHAuthorizationStatusNotDetermined = 0  
    // 受限状态, 没有授权访问相册, 用户也无法修改状态
    PHAuthorizationStatusRestricted,
    // 拒绝授权相册
    PHAuthorizationStatusDenied,
    // 同意授权
    PHAuthorizationStatusAuthorized,
    // 受限相册访问, 部分访问
    PHAuthorizationStatusLimited,
  • 系统相册选择器

    • PHPickerViewController iOS14.0+
    • UIImagePickerController iOS2.0+
    • ALAssetsLibrary 废弃
  • 系统选择器是独立进程,独立权限,不需要单独申请

  • 自定义选择器需要单独申请,影响范围仅在App内

OpenGL状态机

状态机可以理解为一台保存状态,并根据当前状态进行相应输出的机器 当进入特殊状态时,不再接受输入,停止工作

  • 渲染管线 Render Pipeline
    • 顶点着色器
      • 顶点元素,通过CPU传给GPU
      • 顶点坐标通过顶点着色器的处理得到最终的顶点
    • 图元装配
      • 将顶点着色器输出的所有顶点作为输入,并所有的点装配成指定图元的形状
    • 栅格化
      • 把顶点数据转换为片元的过程。具有将图转化为一个个栅格组成的图像的作用,特点是每个元素对应帧缓冲区中的一像素
    • 片元着色器
      • 计算一个像素的最终颜色,这也是所有OpenGL高级效果产生的地方。通常,片段着色器包含3D场景的数据(比如光照、阴影、光的颜色),这些数据可以被用来计算最终的颜色
    • 测试与混合
      • Alpha测试和Blending阶段。这个阶段检测片段的对应的深度和模版值,用它们来判断这个像素是其他物体的前面还是后面,决定是否应该丢弃。这个阶段也会检查alpha值并对颜色进行混合

滤镜

灵魂出窍的方法

  • 首先将图片减去一定值让图片放到中间
  • 截取中间一部分
  • 恢复到原来位置
  • 将截取的部分随时间放大
  • 再配合透明度的变化