11

我目前正在使用 HTML5 中的 iPhone 相机开发应用程序

<input type="file" accept="capture=camera">

问题是我有一个小清单,可以让我在图书馆和相机之间进行选择。

在此处输入图像描述

我的想法是有两个按钮,一个用于图书馆,另一个用于相机。

我知道只给图书馆但不给相机的方法。

问题:有没有办法区分这两种类型?

4

4 回答 4

1

不幸的是不可能:/

摘自HTML 媒体捕获 - 安全和隐私注意事项

此外,建议用户代理实现在启用输入设备时向用户提供指示,并使用户可以终止此类捕获。同样,建议用户代理提供用户控制,例如允许用户:

  • 如果存在
    多个相同类型的设备(例如前置摄像头和
    主摄像头),请选择要使用的确切媒体捕获设备。


  • 视频捕获模式下禁用声音捕获。

于 2014-08-08T16:51:06.867 回答
0

我也有这个问题,我没有找到解决方案,我只找到非官方消息来源说这是不可能的。您所能做的就是要求video/*image/*通过accept属性。

于 2012-12-19T10:56:08.497 回答
0

这在 iOS6 到 10 中是不可能的。它确实适用于 Android 3.0+。

capture属性由HTML Media Capture引入,应该强制 iOS 直接跳转到 cam 应用程序,但它不受支持。

规格

capture 属性是一个布尔属性,如果指定,则表明直接从设备环境中捕获媒体是首选的。

PS:您的代码略有错误,您应该使用 <input accept="video/*,image/*" capture >

  1. 捕捉视频和照片
  2. 直接跳转到 cam(支持时)

有关详细信息,请参阅正确的 HTML 媒体捕获语法

于 2016-11-08T23:27:44.170 回答
-3

编写以下 takePhoto 动作方法:

- (IBAction)takePhoto:(UIButton *)sender { 
     UIImagePickerController *picker = [[UIImagePickerController alloc] init];
     picker.delegate = self;
     picker.allowsEditing = YES;
     picker.sourceType = UIImagePickerControllerSourceTypeCamera;
     [self presentViewController:picker animated:YES completion:NULL];
} 

最后,我们对 selectPhoto 操作方法执行相同的操作,但将 sourceType 更改为 UIImagePickerControllerSourceTypePhotoLibrary。

- (IBAction)selectPhoto:(UIButton *)sender {  
     UIImagePickerController *picker = [[UIImagePickerController alloc] init];
     picker.delegate = self;
     picker.allowsEditing = YES;
     picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
     [self presentViewController:picker animated:YES completion:NULL];
} 

实现 UIImagePickerController 的委托方法

当用户用相机拍照并调整图像大小时(允许调整照片大小,因为我们在创建图像选择器时说过allowEditing = YES)。它是一个 NSDictionary,其中包含原始图像和编辑后的图像(可通过标签 UIImagePickerControllerEditedImage 访问)。

(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

     UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
     self.imageView.image = chosenImage;
     [picker dismissViewControllerAnimated:YES completion:NULL];

} 
于 2014-06-16T02:36:41.753 回答