【发布时间】:2012-10-05 15:53:45
【问题描述】:
我正在使用 ALAssets 在 iPad 中编写图像。完成后,我尝试使用返回的 URL 创建一个 UIImage,但它不会加载。这是代码:
LAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[anImage CGImage] orientation:(ALAssetOrientation)[anImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){
if (!error) {
CGImageSourceRef src = CGImageSourceCreateWithURL((CFURLRef) [NSURL fileURLWithPath:[assetURL absoluteString]], NULL);
我的目的是将图像保存到设备,然后使用 ImageIO 将其转换为另一种格式,最后将其发送到 Web 服务。 CGImageSourceRef 为空,我也尝试使用标准 UIImage 得到相同的结果。
我在这里做错了什么?
编辑:问题出在创建 CFURLRef 时。 如果我这样做了
CGImageSourceCreateWithURL((CFURLRef) assetURL, NULL);
我收到了这个错误
ImageIO: CGImageSourceCreateWithURL CFURLCreateDataAndPropertiesFromResource 失败,错误代码为 -11。
但如果我尝试用
转换网址[NSURL fileURLWithPath:[assetURL absoluteString]]
路径改为
assets-library:/asset/asset.JPG%3Fid=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG -- file://localhost/
我找不到如何正确创建该方法所需的 CFURLRef。我尝试打印所有我能想到的转换,这就是结果
[assetURL relativePath]
[assetURL relativeString]
[assetURL absoluteURL]
[assetURL absoluteString]
/asset.JPG ,
assets-library://asset/asset.JPG?id=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG
assets-library://asset/asset.JPG?id=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG
assets-library://asset/asset.JPG?id=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG
[NSURL fileURLWithPath:[assetURL relativePath]]
[NSURL fileURLWithPath:[assetURL relativeString]]
[NSURL fileURLWithPath:[assetURL absoluteString]]
file://localhost/asset.JPG
assets-library:/asset/asset.JPG%3Fid=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG -- file://localhost/
assets-library:/asset/asset.JPG%3Fid=57BBBA99-E7BF-4DB7-839E-F915005E6DFA&ext=JPG -- file://localhost/
请帮忙,我被这个卡住了:-(
【问题讨论】: