我用来UIImagePickerController从用户的图库中选择视频或图像。对于照片来说,没有问题,一切都按其应有的方式显示。当我尝试生成视频缩略图时,问题就出现了。
基本上,缩略图最终可能会颠倒显示或向左或向右 90 度显示。我不知道为什么会发生这种情况。我错过了什么或者做错了什么吗?
extension PostVC : UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let videoUrl = info[UIImagePickerController.InfoKey.mediaURL] as? URL {
if let thumbnail = self.generateThumbnailForImage(videoUrl) {
self.videoUrl = videoUrl
self.photoImageView.image = thumbnail
self.selectedImage = thumbnail
}
}
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
selectedImage = image
photoImageView.image = image
shareButton.isEnabled = true
}
dismiss(animated: true, completion: nil)
}
func generateThumbnailForImage(_ fileUrl: URL) -> UIImage? {
let asset = …Run Code Online (Sandbox Code Playgroud) 我有两个我的应用程序被苹果拒绝,坐在2个月"批准的货架"的,因为这两个应用程序使用的UIImagePickerController,我敢对的UIImagePickerController的顶部添加一个矩形,使用的东西作为
[picker.view addSubView:rectangle];
在另一方面,像CameraZoom和其他应用程序,完全沟的UIImagePickerController规则出现,有其自身的接口,与相机预览的顶部,甚至与放大实时预览图像的能力,自定义图形和滑块.
我的问题是:如何做到这一点而不是被苹果钉死在十字架上?
感谢您的任何见解!
在我的应用程序中,用户可以拍摄来自相机的照片,所以三次拍照后它就崩溃了.我无法调整图像大小(其要求).那么还有其他方法可以避免内存泄漏.
谢谢
如果我不编辑图片会得到什么结果?
(image = nil ? or image = OriginalImage)
picker.allowsImageEditing = YES;
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
}
Run Code Online (Sandbox Code Playgroud) 一旦用户从iPhone照片库中选择视频,是否有任何可用于检查视频文件持续时间的方法?并限制用户选择该视频文件是否超过60秒
这真让我抓狂!
我已成功将照片从相机以及如果从相机胶卷中选择现有照片保存到我的应用程序文档目录中。执行此操作的代码如下。注意,我知道这部分正在工作,因为在模拟器中,我可以浏览至应用程序的Documents文件夹并查看正在保存的文件。
示例“保存”代码:
//Note: code above snipped to keep this part of the question short
case 1:
{
// select from library
NSLog(@"select from camera roll");
if([util_ isPhotoLibraryAvailable])
{
UIImagePickerController *controller = [[UIImagePickerController alloc] init];
controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
NSMutableArray *mediaTypes = [[NSMutableArray alloc] init];
if([util_ canUserPickPhotosFromPhotoLibrary])
{
[mediaTypes addObject:(__bridge NSString *)kUTTypeImage];
}
controller.mediaTypes = mediaTypes;
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
}
} break;
//code below snipped out
Run Code Online (Sandbox Code Playgroud)
拍摄或选择图像后:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"picker returned …Run Code Online (Sandbox Code Playgroud) 我正在创建一个应用程序,让用户可以在"镜像"中看到自己(设备上的前置摄像头).我知道使用视图叠加制作UIImageViewController的多种方法,但我希望我的应用程序具有相反的方式.在我的应用程序中,我希望摄像机视图是主视图的子视图,没有快门动画或捕获照片或拍摄视频的能力,而不是全屏.有任何想法吗?
我使用以下代码进行检查,但它不起作用..即使在横向拍摄的图像上也总是返回纵向
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
//dismiss imagepicker controller
[self dismissViewControllerAnimated:NO completion:nil];
fishingSpotChosenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
if (fishingSpotChosenImage.imageOrientation == UIImageOrientationUp) {
NSLog(@"portrait");
} else if (fishingSpotChosenImage.imageOrientation == UIImageOrientationLeft || fishingSpotChosenImage.imageOrientation == UIImageOrientationRight) {
NSLog(@"landscape");
}
}
Run Code Online (Sandbox Code Playgroud)
我假设它不起作用,因为选择时图像实际上是纵向的,所以我如何检测图像何时具有如下图所示的黑条。
我的代码:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
self.image = image
self.imageStatusLabel.text = "There is a picture"
self.imageStatusLabel.textColor = UIColor.blue()
picker.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
这是错误:
无法覆盖已标记为不可用的'imagePickerController':从iOS 7及更早版本中弃用的API在Swift中不可用
好吧,我试过使用更新的功能:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
// But no image in the parameters
}
Run Code Online (Sandbox Code Playgroud)
但是,参数中没有图像,我可以得到图像.
我该怎么办?
我正在使用UIImagePickerController,因为我正在创建一个应用程序,该应用程序允许通过照片库和照相机发布图像。我创建了一个基本的演示,其中包含一个UIImageView,UIButton和一些用于设置UIImagePickerController的代码。此外,我还在Xcode的plist部分中设置了(NSPhotoLibraryUsageDescription和NSCameraUsageDescription)。图像拾取功能可以很好地运行,但是当我运行模拟器时,没有询问我是否应该让该应用程序允许访问我的相机或照片库。然后,我尝试取消plist语句并再次运行。没有这些,应用程序应该崩溃,但不会崩溃。
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imageView: UIImageView!
@IBAction func importImage(_ sender: UIButton) {
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
let actionSheet = UIAlertController(title: "Add Your Profile Picture", message: "Choose An Option", preferredStyle: . actionSheet)
actionSheet.addAction(UIAlertAction(title: "Camera", style: .default, handler: { (action:UIAlertAction) in
if UIImagePickerController.isSourceTypeAvailable(.camera) {
imagePickerController.sourceType = .camera
self.present(imagePickerController, animated: true, completion: nil)
}
else {
print("Camera not Available")
}
}))
actionSheet.addAction(UIAlertAction(title: "Camera Roll", style: .default, handler:{ (action:UIAlertAction) in imagePickerController.sourceType = .photoLibrary …Run Code Online (Sandbox Code Playgroud)