- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到 UIImagePicker 为相机胶卷返回的 NSDictionary 似乎不再返回 UIImagePickerControllerOriginalImage 对象。相反,我得到了一个 UIImageControllerReferenceURL,要求我使用 ALAAssetLibrary 的 assetForURL 通过一个漫长而复杂的过程来创建一个 UIImage。
网络上有足够多的例子,都非常相似,我已经实现了,但是在创建 ALARepresentation 对象后,调用它的任何方法都会导致 EXC_BAD_ACCESS 异常,所以我无法检索图像。有谁知道找回“原始图片”而不是“引用网址”的方法,或者这种行为是否已被默默弃用?
注意:我在 iOS 5 下工作(因为我喜欢内存管理)和 Xcode 4.2 的 Storyboard功能。回到早期版本似乎是不可能的。代码如下所示:
// in the header
#import <AssetsLibrary/AssetsLibtrary.h>
typedef void (^ALAAssetsLibraryAssetForURLReferenceBlock)(ALAAsset *asset);
typedef void (^AlAAssetsLibraryAccessForFailureBlock)(NSError *error);
// in the implementation
-(void) ImagePickerController:(UIImagePickerController*)picker
didFinishPickingMediaWithInfo:(NSDictionary*)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if (mediaType isEqualToString:(NSString*)kUTTypeImage]) {
NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL];
if (url) {
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *asset) {
ALAssetRepresentation *rep = [asset defaultRepresentation];
CGImageRef iref = [rep fullResolutionImage];
if (iref) {
UIImage *image = [UIImage imageWithCGImage:iref];
[self displayImage:image];
}
};
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *error) {
// handle error
};
ALAssetsLibrary *assetsLib = [[ALAssetLibrary alloc]init];
[assetsLib assetForURL:url resultBlock:resultblock failureBlock:failureblock];
}
}
}
EXC_BAD_ACCESS 发生在试图创建 CGImageRef 的那一行。我试过其他 *rep 方法(包括元数据);这些也会抛出异常。唯一“有效”的是从 Assets 中获取缩略图 CGImageRef,但我需要全分辨率图像。
最后,即使有效,异步性质(使用回调 block )也不是我真正想要的,因为在我的案例中它使选择器过程变得复杂到无休止。有没有其他方法可以从相机胶卷中选择图像?
最佳答案
我前段时间在网上的某个地方发现了这个,它适用于 ios5,并且与你想做的一样,希望它能帮助你
-(void)readExifDataFromSelectedImage:(NSURL *)imageRefURL
{
void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *) = ^(ALAsset *asset)
{
};
ALAssetsLibrary *myAssetLib;
NSLog(@"%@",imageRefURL);
[myAssetLib assetForURL:imageRefURL
resultBlock:ALAssetsLibraryAssetForURLResultBlock
failureBlock:^(NSError *error){NSLog(@"test:Fail");}];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
self.referenceURL = [info valueForKey:@"UIImagePickerControllerReferenceURL"];
NSString *mediaType = [info
objectForKey:UIImagePickerControllerMediaType];
[self dismissModalViewControllerAnimated:YES];
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
myUIImageView.image = selectedImage;
myUIImageView.hidden = NO;
[alert release];
}
}
关于uiimagepickercontroller - iOS5中的UIImagePicker和ALAAssetRepresentation问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852176/
是否可以保存视频并将其添加到自定义 ALAsset,以 mp4 格式从 UIImagePicker 捕获?或者我必须将它保存在 .mov 中并通过 AVAssetExportSession 进行压缩?
我正在构建一个应用程序,它有几个不同的部分,所有这些部分都非常注重图像。它与我客户的网站相关,他们是“高设计”类型的服装。 该应用程序的一部分是从相机或库上传的图像,以及显示缩略图网格的表格 View
有什么好的方法可以将UIImagePicker设置为横向吗?我尝试在 presentModalViewController 之后调用 setStatusBarOrientation,如下所示, [se
我正在 iPad 上使用覆盖按钮开始视频录制。 当我调用 [imagePickerController startVideoCapture] 时,我得到“拍摄视频事件指示器已清除” iPad 不开始录
工作场所 我在模拟器中有一个大小为 53kb 的图像(.JPG 格式)。 现在我使用 UIImagePickerController 选择这张图片并将其保存到本地。 选择图片并保存到本地的代码如下:
这是我的代码。我已经实现了 UIImagePicker,但在运行时它没有向我显示用于访问模拟器中图库的权限的对话框 @IBOutlet var uploadImage: UIImageView! @I
我正在使用以下方法关闭我的 UIImagePicker: func imagePickerControllerDidCancel(picker: UIImagePickerController!)
我有一个非常适合 UIImagePickerControllerSourceTypePhotoLibrary 类型的 UIImagePicker,但是当我使用 UIImagePickerControl
我正在为我的 swift 应用程序创建一个注册页面,其中包含一个允许用户选择个人资料图片的按钮,一旦用户选择了该图片,该图片就应替换占位符“添加图片”按钮,方法是将button.setImage()
我使用 UIImagePickerController 从相册中选择了一个视频,并尝试使用以下函数从中生成缩略图: func getThumbnailFrom(path: URL) -> UIImag
在我的应用程序中,在使用 uiimagepicker 选择图像后,它会通过网络服务进行处理。 Web 处理需要一秒钟,所以我想创建一个带有事件指示器 View 的灰色叠加层。 我的问题是,在处理完成之
我正在使用以下代码在模拟器上选择视频: if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) // for ipad only {
我有一个非常适合 UIImagePickerControllerSourceTypePhotoLibrary 类型的 UIImagePicker,但是当我使用 UIImagePickerControl
我尝试使用 UIImagePicker 来编辑图像,代码运行良好,但不允许编辑,这里是我的代码: 在myFile.h @interface MyCameraPickerController : UIV
我正在使用 UIImagepickerController 在我的应用程序中捕获视频。有时它的行为很奇怪 - 图像捕获即将到来。大多数情况下,当新用户注册并 try catch 视频或安装并测试新的
当 Controller 处于纵向模式时,UIImagePicker 始终以横向模式打开照片应用程序,并且设备方向也是纵向。有人可以帮忙吗? func actionSheet(_ actionShee
我正在尝试使用我的 iPad 应用程序拍照,但当我启动 UIImagePickerController 时,相机以错误的方向显示图像。 这是我调用 UIImagePickerController 的代
在我的应用程序中,我使用 UiImagePicker 还实现了 UiNavigationControllerDelegate 以进行一些自定义,如删除键和后退按钮。 当用户浏览其库中的图像并选择一个图
我有一个 UIImagePicker,它在我选择图像后不断出现。我的代码正在检查摄像头,然后根据模拟器中没有摄像头的事实显示 UIImagePicker。 - (void)viewWillAppear
为了开发应用,我设置了一个带有 .savedPhotosAlbum 的 UIImagePicker 作为源类型。 import UIKit class PictureViewController: U
我是一名优秀的程序员,十分优秀!