Этот плагин определяет глобальный объект navigator.camera
, который предоставляет API для съёмки фотографий и выбора изображений из системной библиотеки изображений.
Хотя объект прикреплен к глобальной области navigator
, он становится доступным только после события deviceready
.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(navigator.camera);
}
```## Установка
Для установки требуется Cordova 5.0+.
```bash
cordova plugin add cordova-plugin-camera
Для старых версий Cordova можно установить через устаревший ID.
cordova plugin add org.apache.cordova.camera
Также возможно установить непосредственно через URL репозитория (неустойчивый).
cordova plugin add https://github.com/apache/cordova-plugin-camera.git
Приветствуем всех желающих принять участие! Мы нуждаемся в ваших вкладах, чтобы двигаться дальше. Вы можете сообщить об ошибках, улучшить документацию или внести изменения в код. Существует конкретный workflow для вкладчиков, который мы рекомендуем. Начните чтение оттуда. Дополнительная информация доступна на нашей вики.
Найдена проблема? Отправьте её на трекер задач JIRA.
Имеете решение? Отправьте pull request.Чтобы ваши изменения были приняты, вам нужно подписать и отправить ICLA (индивидуальному соглашению о правах использования для вкладчиков). После этого ваше имя будет указано в списке поданных ICLA не-членами команды или членами команды Cordova.Не забудьте протестировать и документировать свой код.
Выполните
npm install
в репозитории плагина, чтобы включить автоматическое генерирование документации, если вы планируете отправить pull request.
Jsdoc-to-markdown используется для генерации документов.
Документация состоит из шаблонной и API-документации, созданной из кода плагина JavaScript и должна быть регенерирована перед каждым коммитом (делается автоматически через husky, запуская скрипт npm run gen-docs
как хук precommit
— см. детали в package.json
).
функция
функция
объект
перечисление
перечисление
перечисление
перечисление
перечисление
перечисление
Захватывает фотографию с помощью камеры или получает её изображение из галереи устройств. Изображение передается в функцию успеха как базированная на Base64 строка или как URI файла изображения.
Функция камера.getPicture
открывает стандартное приложение камеры устройства, которое позволяет пользователям делать снимки по умолчанию — это поведение происходит, когда Camera.sourceType
равно Camera.PictureSourceType.CAMERA
.
После того как пользователь сделает фото, приложение камеры закрывается, а приложение восстанавливается.
Если Camera.sourceType
равен Camera.PictureSourceType.PHOTOLIBRARY
или Camera.PictureSourceType.SAVEDPHOTOALBUM
, то отображается диалог, который позволяет пользователям выбрать существующее изображение. Функция камера.getPicture
возвращает объект типа CameraPopoverHandle
, который можно использовать для перестроения диалогового окна выбора изображения, например, когда меняется ориентация устройства.
Результат отправляется в функцию обратного вызова камера.успех
одним из следующих форматов в зависимости от указанных камера.опции
:
Строка, содержащая базированное на Base64 изображение.
Строка, представляющая местоположение файла изображения на локальном хранилище (по умолчанию).Вы можете сделать всё что вам нужно со строкой кодировки изображения или URI, например:
Отобразите изображение в теге <img>
, как показано ниже
Сохраните данные локально (LocalStorage
, Lawnchair, и т.д.)
Отправьте данные на удалённый сервер
Примечание: Разрешение фотографий на новых устройствах очень высокое. Изображения, выбранные из галереи устройства, не уменьшаются до более низкого качества даже если указан параметр качество
. Чтобы избежать общих проблем памяти, установите Camera.destinationType
на значение FILE_URI
вместо DATA_URL
.
Поддерживаемые платформы
Больше примеров здесь. Ошибки здесь.
Тип: статический метод в камера
Параметр | Тип | Описание |
---|---|---|
successCallback | onSuccess |
|
errorCallback | onError |
|
options | КамераOptions |
КамераOptions |
Пример
navigator.camera.getPicture(камераSuccess, камераError, камераOptions);
Удаляет промежуточные файлы изображений, хранящиеся в временной папке после вызова метода камера.getPicture
. Применимо только когда значение параметра Camera.sourceType
равно Camera.PictureSourceType.CAMERA
, а параметр Camera.destinationType
равен Camera.DestinationType.FILE_URI
.Поддерживаемые платформы
Тип: статический метод в камера
Пример
navigator.camera.cleanup(onSuccess, onFail);
function onSuccess() {
console.log("Удаление временных файлов камеры завершено успешно.");
}
function onFail(message) {
alert('Ошибка удаления временных файлов камеры: ' + message);
}
функция
Функция обратного вызова, которая предоставляет сообщение об ошибке.
Тип: статическая типизация в камера
Параметр | Тип | Описание |
---|---|---|
message | строка |
Сообщение предоставляется нативным кодом устройства. |
функция
Функция обратного вызова, которая предоставляет данные изображения.
Тип: статическая типизация в камера
Параметр | Тип | Описание |
---|---|---|
imageData | строка |
Базовая шестнадцатеричная закодированная информация об изображении, или URI файла изображения, в зависимости от действующих параметров камераOptions . |
Пример
// Отображение изображения
//
function cameraCallback(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}
Объект
Необязательные параметры для настройки параметров камеры.
камера
число
| 50
| Качество сохраняемого изображения, выраженное в диапазоне от 0 до 100, где Yöntem 100 обычно соответствует полному разрешению камеры с минимальной потерей качества из-за сжатия файла. (Обратите внимание, что информация о разрешении камеры недоступна.) |
| типЦелевогоУказателя | [ТипЦелевогоУказателя](#module_Camera. ТипЦелевогоУказателя)
| FILE_URI
| Выберите формат возвращаемого значения. |
| источникИзображения | [ТипИсточникаКартинки](#module_Camera. ТипИсточникаКартинки)
| КАМЕРА
| Установите источник изображения. |
| разрешениеРедактирования | Логическое
| истина
| Разрешите простое редактирование изображения перед выбором. |
| типШифрования | [ТипШифрования](#module_Camera. ТипШифрования)
| JPEG
| Выберите тип шифрования возвращаемого изображения. |
| целевойШирина | число
| | Ширина в пикселях для масштабирования изображения. Должна использоваться вместе с целевойВысотой
. Соотношение сторон остаётся постоянным. |
| целевойВысота | число
| | Высота в пикселях для масштабирования изображения. Должна использоваться вместе с целевойШириной
. Соотношение сторон остаётся постоянным. |
| типСредства | ТипСредства
| ПОДХОДЯЩАЯ_ФОТОГРАФИЯ
| Установите тип медиа для выбора. Только работает при ТипИсточникаКартинки
равном БИБЛИОТЕКА_ФОТОГРАФИЙ
или СПИСОК_СОХРАНЕННЫХ_ФОТОГРАФИЙ
. || коррекцияОриентации | Логическое
| | Вращайте изображение для компенсации ориентации устройства во время захвата. |
| сохранениеВФотоальбом | Логическое
| | Сохраните изображение в фотоальбом устройства после захвата. |
| опцииПодпопапа | ОпцииПодпопапа
| | iOS-специфические опции, указывающие местоположение подпопапа на iPad. |
| направлениеКамеры | Направление
Yöntem | ЗАДНИЙ
| Выберите камеру для использования (фронтальная или задняя). |---
перечисление
Тип: статическое перечисление свойства Камера
Элементы перечисления:| Название | Тип | По умолчанию | Описание |
| --- | --- | --- | --- |
| DATA_URL | number
| 0
| Возвращает закодированную в Base64 строку. DATA_URL может быть очень затратной по памяти и вызвать аварийное завершение работы приложения или ошибки "out of memory". При возможности используйте FILE_URI или NATIVE_URI |
| FILE_URI | number
| 1
| Возвращает URI файла (например, content://media/external/images/media/2 для Android) |
| NATIVE_URI | number
| 2
| Возвращает нативный URI (например, asset-library://... для iOS) |
перечисление
Тип: статическое перечисление свойства Камера
Свойства
Название | Тип | По умолчанию | Описание |
---|---|---|---|
JPEG | number |
0 |
Возвращает закодированное в JPEG изображение |
PNG | number |
1 |
Возвращает закодированное в PNG изображение |
перечисление
Тип: статическое перечисление свойства Камера
Свойства| Название | Тип | По умолчанию | Описание |
| --- | --- | --- | --- |
| PICTURE | number
| 0
| Разрешает выбор только статических фотографий. ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ. Будет возвращаться формат, указанный через DestinationType |
| VIDEO | number
| 1
| Разрешает выбор видео только, ВОЗВРАЩАЕТСЯ ТОЛЬКО URL |
| ALLMEDIA | number
| 2
| Разрешает выбор из всех типов медиа |
Перевод:
Название | Тип | По умолчанию | Описание |
---|---|---|---|
PICTURE | number |
0 |
Разрешает выбор только статических фотографий. Значение по умолчанию. Будет возвращаться формат, указанный через DestinationType |
VIDEO | number |
1 |
Разрешает выбор видео только, Возвращает только URL |
ALLMEDIA | number |
2 |
Разрешает выбор из всех типов медиа |
enum
Тип: статическое перечисление свойства Camera
Свойства
Название | Тип | По умолчанию | Описание |
---|---|---|---|
PHOTOLIBRARY | number |
0 |
Выбор изображения из библиотеки фотографий (такое же значение как SAVEDPHOTOALBUM для Android) |
CAMERA | number |
1 |
Сфотографировать с камеры |
SAVEDPHOTOALBUM | number |
2 |
Выбор изображения из библиотеки сохранённых фотографий (такое же значение как PHOTOLIBRARY для Android) |
enum
Соответствует константам UIPopoverArrowDirection из iOS для указания местоположения стрелки на попапе.
Тип: статическое перечисление свойства Camera
Свойства
Название | Тип | По умолчанию |
---|---|---|
ARROW_UP | number |
1 |
ARROW_DOWN | number |
2 |
ARROW_LEFT | number |
4 |
ARROW_RIGHT | number |
8 |
ARROW_ANY | number |
15 |
enum
Тип: статическое перечисление свойства Camera
Свойства
Название | Тип | По умолчанию | Описание |
---|---|---|---|
BACK | number |
0 |
Используйте заднюю камеру |
FRONT | number |
1 |
Используйте переднюю камеру |
Параметры, доступные только для iOS, которые указывают местоположение элемента-контейнера и направление стрелки всплывающего окна при выборе изображений из библиотеки или альбома iPad.
Обратите внимание, что размер всплывающего окна может изменяться для корректировки направления стрелки и ориентации экрана. Убедитесь, что учтены изменения ориентации при указании местоположения элемента-контейнера.| Параметр | Тип | По умолчанию | Описание |
| --- | --- | --- | --- |
| [x] | Number
| 0
| X-координата пикселей элемента экрана, на который будет закреплено всплывающее окно. |
| [y] | Number
| 32
| Y-координата пикселей элемента экрана, на который будет закреплено всплывающее окно. |
| [ширина] | Number
| 320
| Ширина, в пикселях, элемента экрана, на который будет закреплено всплывающее окно. |
| [высота] | Number
| 480
| Высота, в пикселях, элемента экрана, на который будет закреплено всплывающее окно. |
| [arrowDir] | PopoverArrowDirection
| ARROW_ANY
| Направление стрелки всплывающего окна. |
Объект-обрабатчик для всплывающего окна изображения.
Поддерживаемые платформы
Пример
var cameraPopoverHandle = navigator.camera.getPicture(onSuccess, onFail,
{
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY)
});
// Перезакрепляем всплывающее окно при смене ориентации.
window.onorientationchange = function() {
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
cameraPopoverHandle.setPosition(cameraPopoverOptions);
}
camera.getPicture
ПримечаниеСделайте фотографию и получите расположение файла изображения:
Получение фотографии и её получения в виде Base64-кодированного изображения:
``````javascript
/**
* Предупреждение: использование DATA_URL не рекомендовано! Целевой тип данных
* очень требователен к памяти, даже при низком качестве. Его использование может
* привести к ошибкам недостатка памяти и аварийному завершению работы приложения.
* Вместо этого используйте FILE_URI или NATIVE_URI.
*/
navigator.camera.getPicture(onSuccess, onFail, { quality: 25,
destinationType: Camera.DestinationType.DATA_URL
});
function onSuccess(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message) {
alert('Не удалось из-за: ' + message);
}
false
). Для захвата JPEG установите значение в true
для получения данных геолокации в заголовке EXIF. Это вызовет запрос на разрешение использования геолокации, если установлено значение true
.<preference name="CameraUsesGeolocation" value="false" />
Amazon Fire OS использует намерения для запуска активности камеры на устройстве для захвата изображений. На устройствах с малым объемом оперативной памяти активность Cordova может быть завершена. В этом случае изображение может не отобразиться при восстановлении активности Cordova.
pendingResult.result
будет содержать значение, которое было бы передано обратно в коллбэках (либо URI/URL, либо сообщение об ошибке). Проверьте pendingResult.pluginStatus
, чтобы определить успех вызова.### Уникальные особенности браузераМожет вернуть только фотографии в виде Base64-кодированного изображения.
Плагин камеры реализован с помощью [Web Activities][web_activities].
#### Квирк iOS
Включение JavaScript `alert()` в одном из обратных вызовов может вызвать проблемы. Оберните `alert` внутри `setTimeout()`, чтобы позволить iOS-изображению выборнику или попапу полностью закрыться перед тем как будет отображен `alert`:
```javascript
setTimeout(function() {
// делайте что хотите здесь!
}, 0);
Вызов нативной программы камеры при подключении устройства через Zune не работает и запускает обратный вызов ошибки.
Tizen поддерживает только значение destinationType
равное Camera.DestinationType.FILE_URI
и значение sourceType
равное Camera.PictureSourceType.PHOTOLIBRARY
.
CameraOptions
Любое значение cameraDirection
приведёт к фотографии с тыльной стороны камеры.
Пропускает параметр allowEdit
.
Camera.PictureSourceType.PHOTOLIBRARY
и Camera.PictureSourceType.SAVEDPHOTOALBUM
отображают одинаковый альбом фотографий.
Любое значение cameraDirection
приведёт к фотографии с тыльной стороны камеры.- allowEdit
непредсказуем на Android и его следует избегать! Реализация этого плагина на Android пытается найти и использовать приложение на устройстве пользователя для обработки изображений. Плагин не имеет контроля над тем, какое приложение выбирает пользователь для выполнения обработки изображений, поэтому очень возможно, что пользователь выберет неконфигурируемый вариант, что приведёт к неудаче плагина. Это иногда работает, поскольку большинство устройств имеют приложения, которые обрабатывают изображения способом совместимым с этим плагином (например, Google Plus Photos), но полагаться на то, что это всегда так — неуместно. Если редактирование изображений обязательно для вашего приложения, рассмотрите возможность использования сторонней библиотеки или плагина, который предоставляет свои собственные средства для редактирования изображений для более надёжного решения.- Camera.PictureSourceType.PHOTOLIBRARY
и Camera.PictureSourceType.SAVEDPHOTOALBUM
отображают один и тот же альбом фотографий.
Пропускает параметр encodingType
, если изображение не было отредактировано (то есть quality
равно 100, correctOrientation
равно false, и нет значений targetHeight
или targetWidth
). Исходник CAMERA
всегда вернёт JPEG-файл, предоставленный нативной камерой, а источники PHOTOLIBRARY
и SAVEDPHOTOALBUM
вернут выбранный файл в существующем кодировании.
Пропускает параметр quality
.
Пропускает параметр allowEdit
.
Поддержка Camera.MediaType
отсутствует.
Пропускает параметр correctOrientation
.
Пропускает параметр cameraDirection
.
Пропускает параметр quality
.
Camera.DestinationType
игнорируется и равен 1
(URI файла изображения).
Пропускает параметр allowEdit
.
Пропускает параметр PictureSourceType
. Пользователь выбирает его в диалоговом окне.
Пропускает параметр encodingType
.
Пропускает параметры targetWidth
и targetHeight
.
Поддержка Camera.MediaType
отсутствует.
Пропускает параметр correctOrientation
.
Пропускает параметр cameraDirection
.
При использовании destinationType.FILE_URI
фотографии сохраняются в временном каталоге приложения. Содержимое временного каталога приложения удаляется при завершении работы приложения.
При использовании destinationType.NATIVE_URI
и sourceType.CAMERA
фотографии сохраняются в альбоме снимков независимо от значения параметра saveToPhotoAlbum
.#### Ошибки Tizen
Несколько опций не поддерживаются.
Всегда возвращает FILE URI.
Пропускает параметр allowEdit
.
Пропускает параметр correctOrientation
.
Пропускает параметр cameraDirection
.
Пропускает параметр saveToPhotoAlbum
. ВАЖНО: Все изображения, созданные с помощью API камеры Cordova для WP8/8, всегда копируются в раздел фотографий телефона. В зависимости от настроек пользователя это может также означать автоматическую загрузку изображения на OneDrive. Это может привести к тому, что изображение станет доступным для более широкой аудитории, чем было запланировано вашим приложением. Если это является препятствием для вашего приложения, вам потребуется реализовать CameraCaptureTask как описано на MSDN. Вы можете также оставить комментарий или проголосовать за связанный баг в трекере ошибок.
Пропускает свойство mediaType
параметров cameraOptions
, так как SDK Windows Phone не предоставляет способ выбора видео из PHOTOLIBRARY.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )