【问题标题】:Error while saving JPG/PNG photo to gallery in IOS 11在 IOS 11 中将 JPG/PNG 照片保存到图库时出错
【发布时间】:2017-12-24 11:08:01
【问题描述】:

我正在使用 beta iOS 11 的新设备上测试我们的应用程序,发现一个有趣的错误。 我们正在使用 UIActivityViewController(一些系统共享视图控制器)创建一个可以保存到用户画廊的图像:

NSMutableArray *sharingItems = [NSMutableArray new];
UIImage *screenShot = [self shareViewScreenShot];
NSString *filename = @"notImportant";
NSString *path = [NSString stringWithFormat:@"%@%@.jpg", NSTemporaryDirectory(), filename];
[UIImageJPEGRepresentation(screenShot, 1.0) writeToFile:path atomically:YES];
NSURL *pathUrl = [NSURL fileURLWithPath:path];
[sharingItems addObject:pathUrl];

UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
[self presentViewController:activityController animated:YES completion:nil];

这工作正常,呈现共享对话框,直到用户按下“保存图像”。然后我收到关于不支持此图像格式的错误

2017-07-19 10:51:54.292881+0200 appName[6632:766119] 视频 /private/var/mobile/Containers/Data/Application/29B8C33B-9247-45FE-B51F-A35A035019A9/tmp/notImportant.jpg 无法保存到已保存的相册:错误 Domain=AVFoundationErrorDomain Code=-11828 "Nie można otworzyć" UserInfo={NSUnderlyingError=0x1c08558d0 {错误 域=NSOSStatusErrorDomain 代码=-12847 "(null)"}, NSLocalizedFailureReason=十格式多媒体 NSURL=file:///private/var/mobile/Containers/Data/Application/29B8C33B-9247-45FE-B51F-A35A035019A9/tmp/notImportant.jpg, NSLocalizedDescription=Nie można otworzyć}

当我使用 png/UIImagePNGRepresentation 时也会发生同样的情况。 所以问题是:

  1. iOS 11 是否支持 png/jpg?

  2. 对于操作系统版本 >= 11 的设备,我应该/以及如何使用 HEIF(新的苹果图像格式)?

【问题讨论】:

  • 请注意,该错误还显示“视频”。我建议报告错误并继续前进。这就是 SW 仍处于测试阶段的原因。
  • 2015 年似乎同样的问题:stackoverflow.com/questions/31705767/…

标签: ios objective-c ios11 heif


【解决方案1】:

NSOSStatusErrorDomain 代码表示属性数据大小不正确。

OSStatus 是 OS X 和 iOS 中常用的错误代码类型。如果代码量级小于 100 万,那么代码很可能在 CarbonCore 框架中的 MacErrors.h 中列出。否则,它可能是在与返回它的函数相同的标题中列出的四字符代码。您可以通过在 Xcode 中通过命令单击来找到函数的标题。这些代码很可能会列在顶部附近,并组合在一起。要将数字转换为代码,请使用开发人员视图中的计算器应用程序将其转换为十六进制并将每个字节转换为字符。

【讨论】:

    【解决方案2】:

    iOS 将图像视为视频?这是 iOS 上的错误还是缺少某些权限。

    解决方案:

    添加 Info.plist 文件中缺少的权限:

    <key>NSPhotoLibraryUsageDescription</key>

    <string>Application needs to access photos</string>

    适用于 iOS 11+

    <key>NSPhotoLibraryAddUsageDescription</key>

    <string>Application needs to access photos</string>

    现在保存图像操作正常。

    【讨论】:

      猜你喜欢
      • 2010-11-28
      • 2012-10-15
      • 2020-06-07
      • 1970-01-01
      • 2013-12-11
      • 2017-10-11
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多