私は現在、HTML5でiPhone用のカメラを使用してアプリケーションを開発しています
<input type="file" accept="capture=camera">
問題は、ライブラリとカメラのどちらかを選択できる小さなリストがあることです。
私のアイデアは、ライブラリ用とカメラ用の2つのボタンを用意することです。
私はライブラリだけを与える方法を知っていますが、カメラには与えません。
質問: 2つのタイプを分離する方法はありますか?
残念ながらできません:/
HTML Media Captureからの抜粋- セキュリティとプライバシーに関する考慮事項:
さらに、ユーザー エージェントの実装では、入力デバイスが有効になったときにユーザーに通知を提供し、ユーザーがそのようなキャプチャを終了できるようにすることをお勧めします。同様に、ユーザー エージェントは、ユーザーに次のことを許可するなど、ユーザー コントロールを提供することをお勧めします。
同じタイプのデバイスが複数存在する場合は、使用する正確なメディア キャプチャ デバイスを選択します(たとえば 、プライマリ カメラに加えて
前面カメラ)。
ビデオ キャプチャ モードでは、サウンド キャプチャを無効にします。
私もこの問題を抱えていましたが、解決策は見つかりませんでした。これは不可能であると述べている非公式の情報源しか見つかりませんでした。あなたができることは、いずれvideo/*
かを要求するか、属性image/*
を介して行うことだけです。accept
iOS6 ~ 10 ではできません。Android 3.0 以降では動作します。
HTML Media Captureによって導入されたcapture
属性は、iOS を強制的にカム アプリに直接ジャンプさせる必要がありますが、サポートされていません。
仕様から:
キャプチャー属性はブール属性であり、指定されている場合、デバイスの環境から直接メディアをキャプチャーすることが優先されることを示します。
PS: あなたのコードは少し間違っています。次のように使用
<input accept="video/*,image/*" capture >
する必要があります。
詳細については、正しい HTML メディア キャプチャ構文を参照してください。
次の 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 と指定したため、写真のサイズ変更は許可されています)。これは、特に元の画像と編集された画像 (タグ UIImagePickerControllerEditedImage を介してアクセス可能) を含む NSDictionary です。
(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.imageView.image = chosenImage;
[picker dismissViewControllerAnimated:YES completion:NULL];
}