如何使用 PHPicker 从图库中获取 WebP 图像

2024-07-03

我有一个 PHPIckerViewController,自 iOS 14 起可用。我想从画廊获取 WEBP 格式的图像。但是 PHPicker 中的项目提供程序无法加载这种格式的图像。请告诉我如何使用新的选择器在 UIButton 上选择和设置图像。

code:

extension SixStepRegistrationViewController: PHPickerViewControllerDelegate {
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
 
        
        let supportedRepresentations = [UTType.rawImage.identifier,
                                        UTType.tiff.identifier,
                                        UTType.bmp.identifier,
                                        UTType.png.identifier,
                                        UTType.jpeg.identifier,
                                        UTType.webP.identifier,
        ]
        for representation in supportedRepresentations {
            if results[0].itemProvider.hasRepresentationConforming(toTypeIdentifier: representation, fileOptions: .init()) {
                print(representation, " repr")
                
                    results[0].itemProvider.loadInPlaceFileRepresentation(forTypeIdentifier: representation) { (originalUrl, inPlace, error) in
                        
                            DispatchQueue.main.async {
                                print(originalUrl, "  ", inPlace)

                                self.addPhotoButton.setImage(UIImage(contentsOfFile: originalUrl!.path), for: .normal)
                            //self.dismiss(animated: true, completion: nil)
                        }
                    }
                }
       }
        

}

Thanks


你应该使用itemProvider.loadDataRepresentation加载webp image:

import PhotosUI
class Coordinator: PHPickerViewControllerDelegate {
  init(handler: @escaping (UIImage) -> Void) {self.handler = handler}
  
  let handler: (UIImage) -> Void
  
  func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    for itemProvider in results.map({$0.itemProvider}) {
      if itemProvider.hasItemConformingToTypeIdentifier(UTType.webP.identifier) {
        itemProvider.loadDataRepresentation(forTypeIdentifier: UTType.webP.identifier) {data, err in
          if let data = data, let img = UIImage.init(data: data) {
            self.handler(img)
          }
        }
      } else {
        itemProvider.loadObject(ofClass: UIImage.self) {reading, err in
          if let img = reading as? UIImage {
            self.handler(img)
          }
        }
      }
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 PHPicker 从图库中获取 WebP 图像 的相关文章

  • 如何测试为 SKProductsRequest 设置不同的区域设置

    我正在 iPhone 应用程序中实现 IAP 并在沙盒环境中工作 我有我的代码设置要处理SKProducts由返回SKProductsRequest获取定价信息 我想测试检索不同区域设置中的价格值 例如欧元或日元 以测试我的格式化代码 我怎
  • 如何在 Swift 中将数据转换为双精度型、整数型和字符串型等类型?

    我正在努力在 iOS Swift 中为 shapefile 一种 GIS 格式 与这个问题不是特别相关 构建一个自定义文件打开器 这些文件有一个 100 字节长的标头 我可以将其读入 4 字节数组 其中存储我想要的信息 我可以将这些数组转换
  • 在 iOS 模拟器上重复请求麦克风权限

    我正在使用 Xcode 10 1 10B61 开发一个需要使用麦克风权限的应用程序 几乎 每次我从 Xcode 在模拟器中 启动应用程序时 我都会收到一个系统弹出窗口 Appname 想要访问麦克风 隐私 麦克风使用说明 gt 我选择 不允
  • 将按钮与 ScrollView 中的底部对齐

    我正在尝试将按钮与 ScrollView 底部对齐并使 ScrollView 填充页面 第一张截图是它的样子 第二张截图是我想要的 在屏幕截图中 未使用 ScrollView 因为没有足够的项目 但 ScrollView 内的项目数量不固定
  • sqlite+fmdbvacuum命令后内存泄漏(?)

    我通过 FMDB 包装器在我的应用程序中使用 sqlite 在调用 VACUUM 之前 我的应用程序中的内存使用量为 2 25 MB myFmdb executeUpdate VACUUM 后记是 5 8 MB 我似乎无法回收内存 真空后
  • App Store Connect 添加用户时允许开发人员资源复选框

    I am trying to add a User to my App Store Connect so they can upload a build but in the portal it does not allow me to g
  • iOS 9 中的触觉

    您可以在 iPhone 6s 上使用 iOS 9 中的 Taptic 引擎吗 WatchOS2 和 OS X 能够使用触觉引擎 所以我认为 iOS 9 中也会有 但我找不到任何 API 是的 我对内部进行了逆向工程UIKit我发现了另一种
  • 表格视图单元格作为按钮

    我正在尝试将已分组的表视图单元格设置为按钮 但我似乎无法在 XCode 4 2 的界面生成器中或以编程方式找到执行此操作的位置 我尝试将表视图单元格链接到 IBAction 但它只允许我创建或链接到 IBOutlet 作为临时修复 我在单元
  • 应用程序删除后的iOS应用程序持久设置

    我们正在创建一个应用程序 如下所示 用户从 2 个免费 代币 开始 用户可以通过应用内购买 0 99 美元购买一包 10 个代币 我们已经实现了这个使用NSUserDefaults保存令牌数量 有没有办法让我们的免费 2 令牌设置持久化 即
  • 不要在 iOS 上显示蜂窝数据警告

    如果用户决定不允许应用程序在每次尝试打开应用程序时访问蜂窝数据 则会显示一条警告 告诉他们蜂窝数据已关闭 SDK中有没有办法停止显示此消息或控制其显示的时间 位置 如果您在权限被撤销的情况下尝试访问互联网 系统将显示此消息 为了防止它出现
  • iOS Swift:谷歌登录错误

    我正在关注this https developers google com identity sign in ios sign in ver swift before you begin使用 swift 在我的 iOS 应用程序中添加 go
  • 嵌入式Python,导入数学错误

    首先我使用的是 Mac OSX 10 12 6 我想在我的 C 应用程序中嵌入 python 环境 我把 github python 项目放在https github com python cpython https github com
  • 删除/重置核心数据中的所有条目?

    您知道有什么方法可以删除存储在核心数据中的所有条目吗 我的架构应该保持不变 我只是想将其重置为空白 Edit 我希望以编程方式执行此操作 以便用户基本上可以点击reset button 您仍然可以使用 NSFileManager remov
  • 为什么 UIPickerView 是半透明的

    Why UIPickerView 100不是不透明的吗 当我将文本颜色设置为白色并将 UIPickerView 放在红色背景上时 UIPickerView 项目有一个红白色文字颜色 我尝试使用自定义视图viewForRow 但还是没有效果
  • 是否可以使用 Firebase 云消息传递 (FCM) 直接从设备将 PushNotifications 发送到特殊 UDID?

    我正在考虑将所有注册 ID 推送令牌 保留在数据库中并从 iPhone 向用户发送通知 我尝试了类似的操作 但没有收到任何通知 func sendPNMessage FIRMessaging messaging sendMessage bo
  • 在类型中找不到枚举大小写开关

    有人可以帮我解决这个问题吗 我有以下内容public enum public enum OfferViewRow case Candidates case Expiration case Description case Timing ca
  • 如何仅针对一项特定修改器更改应用动画?

    如何只申请 animation to offset同时保持其他修改器更改不受其影响 添加 animation偏移后也会使字体大小发生变化 Main view var body some View GeometryReader geo in
  • 以编程方式 Swift 在 UIView 上添加 UITextField

    我是 Swift 和 iOS 编程新手 我试图创建一个UITextField以编程方式使用 Swift 但无法完全正确 另外 如何将其更改为半透明效果以淡入背景 var myField UITextField UITextField fra
  • 删除 iOS 中的后台位置警报?

    我正在编写一个跟踪用户位置的导航应用程序 为了继续显示有关路线的通知 当手机锁定 接听电话等时 我还需要在应用程序处于后台时继续跟踪位置 Capabilities gt Background Modes gt Location update
  • 界面生成器中 UIView 的边框颜色不起作用?

    我正在尝试通过 IB 设置视图的图层属性 除了边框的颜色之外 一切正常 属性layer borderColor 我记得一年前遇到过这个问题 最终我以编程方式解决了这个问题 而且 我仍然可以以编程方式执行此操作 但我很好奇为什么layer b

随机推荐