问题标签 [photosframework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 在 iOS 8.3 中向 PHImageManager 请求图像会导致错误的图像
语境
我正在使用Photos 框架在我正在处理的 iOS 应用程序中显示用户图片。
作为参考,我将一些图像上传到 imgur,您可以在其中找到我正在测试的原始图像,以及我拍摄的带有粉红色背景的 UIImageView 的屏幕截图,其中显示了使用“Aspect Fit”配置获取的图像。这是链接:http: //imgur.com/a/VPJ9J
我正在使用两个测试场景:首先,一个风景图像,其imageOrientation
为UIImageOrientation.Up
(0);其次,肖像图像,与UIImageOrientation.Right
(3)。您可以查看文档(我会将链接放在这里,但我没有足够的声誉,抱歉)。
问题
iPhone 4S(iOS 8.1.2)在粉红色的 UIImageView 内以横向布局显示横向图像,而在纵向布局中显示纵向图像,如预期的那样。但 iPhone 5 和 6 Plus(均为 iOS 8.3)以横向布局显示这两个图像。
代码
这是我用来请求图像的代码:
测试
以下是我在使用这两个图像执行测试时得到的日志:
案例一:iPhone 4S (8.1.2)
景观:
肖像:
案例 2:iPhone 5 (8.3)
景观:
肖像:
案例 3:iPhone 6 Plus (8.3)
景观:
肖像:
结论
您可以通过日志看到 iOS 8.1.2 版本尊重targetSize
两个图像的指定,但 8.3 版本正在获取具有倒置尺寸的图像(已请求(1000.0, 1333.33)
但已接收(1334.0, 1000.0)
)。
现在,似乎我唯一的选择是检查正在运行的 iOS 版本,然后在请求具有旋转方向的图像时反转参数(我只测试了UIImageOrientation.Right
,但也有.Left
,.LeftMirrored
和.RightMirrored
)。
不幸的是,PHAsset
不包含图像的方向。我只有在向 请求图像后才能知道它PHImageManager
,所以我必须对这些图像发出两个请求,一个是获取方向,另一个是获取正确的图像。
问题
是不是我的逻辑有问题?或者这是iOS中的错误?如果这是一个错误,哪一个是正确的行为,iOS 8.3 还是旧版本?任何人都可以提供其他选择来处理这个问题吗?
对不起,很长的帖子,以及糟糕的英语。提前致谢!
ios - 如何在我的 iOS 8 应用程序中使用照片编辑工具?
我正在编写一个使用UIImagePickerController
. 如何使用 iOS 8 照片应用程序编辑此图像?
ios - 将关键字元数据添加到 iOS 中的图像
我一直在努力寻找一种将关键字元数据添加到 iOS 中的图像的方法。我已经搜索了互联网和 stackoverflow,但没有找到任何特定于在 iOS 中向图像添加关键字的内容。我已经看到 Photoshop 和 Aperture 等不同的应用程序允许你做这种类型的事情,所以图像的功能通常是存在的,但有没有办法在 iOS 中实现这一点?
具体来说,是否可以创建一个新的键/值对并将其嵌套在图像元数据中?
ios - 图像在云中时的 iOS 照片框架数据 UTI 或格式
我正在升级我的 GIF 应用程序以使用 iOS 8 照片框架,基本上我想在他们的照片库中找到所有用户的 GIF 并显示它们。在 iCloud 照片库的“优化存储”发挥作用之前工作得很好,ALAssetLibrary
因为现在用户可以在云中拥有大量图像,因此需要使用照片框架来获取它们不幸的是,您似乎无法判断是否aPHAsset
是 GIF 或普通静态图像,直到您从云端下载它....当您的网络连接为零或网络连接不佳时,这将使我的应用程序变得非常糟糕...
这是我用来尝试仅获取 GIF 的代码:
info 字典包含一些未记录的键:
PHImageResultDeliveredImageFormatKey
PHImageResultWantedImageFormat
我见过的值为 9999、9998 和 40xx。但它们似乎与图像是否是 GIF 并没有特别相关,因此必须完全与其他东西相关......
有任何想法吗??
ios - 切换访问相机和照片时崩溃
我有一个集合视图(标准流程布局),其中第一个单元格显示实时相机源,其余单元格使用 iOS 8 的新照片框架显示用户库中的照片。一切渲染和工作都很棒。
第一次打开时,系统会提示我访问相机和照片库,正如预期的那样。如果我为任一提示选择是或否,我的应用程序运行良好。
但是,如果我在后台运行应用程序,进入设置 > 隐私 > 照片|相机并切换访问权限,我的应用程序就会崩溃。当连接到 Xcode 时,我没有收到任何关于应用程序崩溃原因的反馈。
不幸的是,Apple 的照片框架示例应用程序做同样的事情。
我怎样才能防止这种情况发生?我订阅了、 和on的通知AVCaptureDeviceWasConnectedNotification
,但这些通知似乎从未被调用过。AVCaptureDeviceWasDisconnectedNotification
registerChangeObserver
PHPhotoLibrary
同样,这里是使用 Apple 的示例应用程序和模拟器的步骤:
- 在模拟器中,转到设置 > 常规 > 重置 > 重置位置和隐私
- 运行应用程序
- 允许该应用访问您的照片库
- 后台示例应用程序并打开设置
- 转到隐私>照片并关闭设置
- 观看 Xcode 崩溃
在第 3 步中,如果您拒绝访问您的照片,并在第 5 步中启用访问权限,应用程序也会崩溃。
ios - How to use PHCachingImageManager
I know that there is already this question on SO, but I don't think that the given answer is satisfying/complete: How can IOS Photos app can show hundreds of photos in one screen?
What I want to achieve
I want something like the image selection in whatsapp (iOS) (see screenshot). When you open the camera, there is also a horizontal slider where you can see all images from your gallery.
What I tried
Right now I have the following code in my appDelegate:
Later I load the images in a UITableViewController and call the following function on scroll:
This works well but I have the problem that on every app start all my assets get cached. Is this the right approach for my problem? How can I display the gallery photos in realtime like whatsapp does?
ios - PHFetchResult 获取所有照片并按日期排序不一致
我正在尝试构建一个简单的照片选择器,目前有两个选项:最近和收藏夹。我正在做的是尝试获取所有照片,creationDate
但这会在我的数据源中以错误的顺序返回图像。数据源开头有几年前的照片,还有不到几分钟的照片散落在各处。我认为问题是我需要先告诉主 fetchResult 排序顺序,但是我认为这是不可能的:Unsupported sort descriptor in fetch options: (creationDate, ascending, compare:
我将不胜感激提供的任何帮助。代码:
ios - PHPhotoLibrary 获取相册名称
我一直在尝试寻找在 iOS 8 中使用 Photos API 获取专辑名称的替代方法。使用 ALAssets,我们可以使用:valueForProperty:ALAssetsGroupPropertyName
但是使用 Photos API,我似乎找不到替代方法。有:localizedTitle
在下面,PHAssetCollection
但这也不对,它只是给了我城市名称。我正在寻找可以返回组的实际名称的东西,包括与 iTunes 同步的组。
对于您如何在应用程序中执行此操作,我将不胜感激。Apple 鼓励我们仅将 Photos API 用于与 8.0 链接的应用程序,因此我宁愿不要同时使用 ALAssetLibrary 和 Photos。
代码:
ios - Photos API 将 PHFetchResultChangeDetails 索引转换为 NSMutableOrderedSet
我在尝试在PHChange
事件发生后更改我的数据源时遇到问题。我正在使用一个NSMutableOrderedSet
作为我的数据源类型。当 aPHChange
发生时,它可以返回三个可能的索引:removedIndexes
、insertedIndexes
和changedIndexes
。
问题是我不确定如何在先前的数据源中反映这些变化。有人可以解释一下我如何转换中给出的索引PHChange
来更新我的recentsCollectionDataSource
. 我UICollectionView
用作recentsCollectionDataSource
它的数据源。
现在我在想唯一的方法是手动枚举和构建我自己更改的索引,而不是使用PHFetchResultChangeDetails
那些。
我将不胜感激提供的任何帮助。也欢迎任何有关制作我的数据源的替代方法的建议。
代码:
ios - iOS Photos 框架无法获取图像数据/UTI
当从照片框架中请求图像时,我设法正确地获取了除最后 64 个之外的所有图像。在下面的代码中,最后一个总是为dataUTI
and返回 nil 。imageData
在试图弄清楚发生了什么的同时,我发现他们PHAsset
确切地知道 UTI 是什么,但向我报告它是零。
还有人看到这个吗?
您可以看到我已经让我的代码在它被报告为 nil 时访问资产的 UTI,以便我的应用程序可以确定它是否是 gif,但这不是一个可取的方法,而且我从来没有得到它imageData
,所以它不是大量的帮助!
编辑:我忘了提到丢失的图像创建日期不是最新的图像,并且似乎分散了。实际上,根据它们的创建日期,即使是照片应用程序似乎也没有显示它们。但是,他们的位置似乎没有什么应该在他们的位置上查看他们的创建日期将放置它们的相邻图像。