问题标签 [alassetslibrary]
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 - 使用 AssetsLibrary 框架 iPhone 访问库中的视频?
我正在尝试借助以下代码使用 AssetsLibrary Framework 访问 iPhone 库中的视频……但是当我运行应用程序时,代码不起作用……数组资产仍然为空?我究竟做错了什么?
顺便说一句,我的 iPhone 是升级到 iPhone 4.1 的 3G。(但资产框架没有给出任何错误)
iphone - 从 ALAsset 获取视频
使用 iOS 4 中可用的新资产库框架,我看到我可以使用 UIImagePickerControllerReferenceURL 获取给定视频的 url。返回的 url 格式如下:
我正在尝试将此视频上传到网站,以便快速验证概念,我正在尝试以下操作
在这种情况下,数据永远不会被初始化。有没有人设法通过新的资产库直接访问 url?谢谢你的帮助。
objective-c - 使用 ALAssetsLibraryassetForURL:resultBlock:failureBlock 的 EXC_BAD_ACCESS 错误:
我正在尝试从用户选择的图像中读取 EXIF 数据。我为此使用了 ALAssetLibrary。到目前为止,我已经设法获得了该assetForURL:resultBlock:failureBlock:
方法所需的参考 URL,但是当我尝试对参考 URL 执行任何操作时,我得到了一个EXC_BAD_ACCESS
错误。
URL的一个NSLog
,在使用它之前,会产生(据我所知是正确的)字符串:
assets-library://asset/asset.JPG?id=1000000003&ext=JPG
我一直试图弄清楚这一点,但我似乎每次都陷入死胡同。我必须承认我是 Objective-C 的新手,所以请随意批评我的代码。
代码(远非完整的类,但我认为应该足够了):
iphone - ALAssetsLibrary enumerateGroupsWithTypes: - 线程同步
我正在使用 [ALAssetsLibrary enumerateGroupsWithTypes:] 将 ALAssets 存储在一个数组中。由于这是一个异步操作,我需要等待它完成才能继续我的工作。
我在使用 [ALAssetsLibrary enumerateGroupsWithTypes:] 时阅读了Cocoa 线程同步,并尝试了推荐的 NSConditionLock。但是,块总是在主线程中执行,因此如果我使用条件锁等待,主线程被阻塞并且块不会被执行 -> 我被卡住了。我什至尝试在新线程上运行方法 loadAssets,但块仍然在主线程上执行。
我找不到真正等待枚举完成的方法。有没有办法将块强制到与主线程不同的线程或我能做的任何其他事情?
这是代码:
iphone - 使用 ALAssetsLibrary 访问单个图像
请允许我先说这是我第一次使用 ALAssetsLibrary。我需要访问用户保存的照片库中的最新照片。似乎要做到这一点,我必须创建一个 ALAssetsLibrary 实例并在选择最后一个图像之前遍历用户库中的每个项目。这总是最坏的情况。有没有更快/更好的方法来解决这个问题?
objective-c - enumerateGroupsWithTypes 在主线程中轮询时不会执行块
在 iOS 4.x 上,我试图枚举设备上的所有照片,当完成后,再以相同的方法进一步处理该列表。
由于 enumerateGroupsWithTypes 的块在另一个线程上异步运行,我看不到如何阻止主线程继续执行,我的解决方案是保持进一步处理从开始直到准备好是轮询我正在收集的照片数组,直到它看到它通过在最后包含一个 NSNull 对象来完成填充。
在 iOS 4.0 上它工作正常——轮询继续,因为另一个线程枚举照片,然后在完成后在主线程上继续执行。在 iOS 4.1+ 上,轮询是如何阻止另一个线程执行它的任何块,因此轮询陷入无限循环。
除了通过将进一步处理分解为枚举块可以调用的不同方法来接受枚举的异步性质之外,是否有更好的方法来实现这一点?
奖励积分:为什么我的投票方法适用于 4.0 而不是 4.1+?
iphone - ALAssetsLibrary 的 enumerateGroupsWithTypes:usingBlock:failureBlock: 在 iOS 4.3.4 中是否“损坏”?
我正在开发一个基于 ALAssetsLibrary api(自 4.0 起可用)的 iOS 应用程序,我使用它来检索保存在设备上的所有图像和视频,并且这样做非常简单。无论如何,一旦我在 iPhone 4 上安装了 iOS 4.3.4,我的代码就停止了工作。调用获取的行什么也不做!代码如下(在 iOS 4.3.3 上运行良好):
似乎enumerateGroupsWithTypes:usingBlock:failureBlock:永远不会被调用,因为我的块都没有被执行......并且没有引发错误!为什么?我能做些什么?
ps:我试图改变“类型”参数,但这不是问题!
uiimagepickercontroller - iOS5中的UIImagePicker和ALAAssetRepresentation问题
我注意到 UIImagePicker 为相机胶卷返回的 NSDictionary 似乎不再返回 UIImagePickerControllerOriginalImage 对象。相反,我得到了一个 UIImageControllerReferenceURL,要求我使用 ALAAssetLibrary 的assetForURL 通过一个漫长而复杂的过程来创建一个 UIImage。
网上有很多这样的例子,都非常相似,我已经实现了,但是在创建 ALARepresentation 对象后,调用它的任何方法都会导致 EXC_BAD_ACCESS 异常,所以我无法检索图像。有谁知道获取“原始图像”而不是“参考网址”的方法,或者这种行为是否已被默默弃用?
注意:我在iOS 5下工作(因为我喜欢内存管理)和 Xcode 4.2 的故事板功能。回到早期版本似乎是不可能的。代码如下所示:
EXC_BAD_ACCESS 发生在试图创建 CGImageRef 的那一行。我尝试了其他 *rep 方法(包括元数据);这些也抛出异常。唯一“有效”的是从资产中获取缩略图 CGImageRef,但我需要全分辨率图像。
最后,即使它有效,异步特性(使用回调块)也不是我真正想要的,因为它使选取器过程复杂化,在我的情况下没有尽头。有没有其他方法可以从相机胶卷中挑选图像?
iphone - writeImageToSavedPhotosAlbum:metadata:completionBlock:
我使用方法 writeImageToSavedPhotosAlbum:metadata:completionBlock: 将拍摄的照片保存到相册,代码为:
.getLocation方法就是获取用户的当前位置!这样可以保存成功!然后我想从相册中挑选照片使用UIImagePickerController!代码是:
然后记录元数据为空。这就是为什么?以及如何获取我保存的元数据信息?谢谢!
objective-c - 从 ALAsset URL 创建时,AVAsset 没有轨道或持续时间
我正在从 ALAssetsLibrary 中提取所有视频资产(基本上是从本机相机应用程序录制的所有内容)。然后,我对每个视频资产进行枚举,对每个视频执行此操作:
NSLog 报告我从 ALAsset 获得的 AVAsset 有 0 个轨道,持续时间为 0.0 秒。我检查了网址,它是“assets-library://asset/asset.MOV?id=9F482CF8-B4F6-40C2-A687-0D05F5F25529&ext=MOV”,这似乎是正确的。我知道 alAsset 实际上是一个视频,并且是正确的视频,因为我已经显示了 alAsset.thumbnail,并且它显示了视频的正确缩略图。
所有这一切让我相信 avAsset 的初始化出现了问题,但对于我的生活,我无法弄清楚出了什么问题。谁能帮我?
更新:
我想我已经确认 ALAssetRepresentation 给我的 url 是错误的,这很奇怪,因为它给了我正确的缩略图。我在以下位置添加了此代码:
它给了我这个:
我仍然不确定是什么原因造成的。我唯一注意到的是网址,即“assets-library://asset/asset.MOV?id=9F482CF8-B4F6-40C2-A687-0D05F5F25529&ext=MOV”与我所看到的不同一直在寻找这个。我在其他地方看到的那个看起来更像“assets-library://asset/asset.MOV?id=1000000394&ext=MOV”,用数字而不是字母数字、破折号分隔的名称。
如果有帮助,我正在使用 XCode 4.2 Beta 和 iOS5。如果你能想到什么,请告诉我。谢谢。