mirror of
https://gitee.com/shuto/cordova-plugin-camera.git
synced 2026-02-03 00:06:46 +08:00
Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
823eb5d27a | ||
|
|
0d63ac27ca | ||
|
|
c696f6e0b3 | ||
|
|
e8cbb106ae | ||
|
|
9a26e97ac8 | ||
|
|
f8d5ef643e | ||
|
|
98749a611b | ||
|
|
08acf7bc49 | ||
|
|
e4ab155fd0 | ||
|
|
f20703de20 | ||
|
|
543c4198d8 | ||
|
|
1650dce693 | ||
|
|
5b8324e984 | ||
|
|
4aa85de064 | ||
|
|
fa93b534d1 | ||
|
|
c1683000d2 | ||
|
|
1a495492c6 | ||
|
|
a07c85e8b4 | ||
|
|
06ecc91fd1 | ||
|
|
05e3eed60e | ||
|
|
ffd46c4ef5 | ||
|
|
1cf38cd775 | ||
|
|
4fa934e06f | ||
|
|
1f51a3b61d | ||
|
|
4bdb990b77 | ||
|
|
d00464e9d3 | ||
|
|
7b60a0b6d1 | ||
|
|
4c901d56be | ||
|
|
5af2653f18 | ||
|
|
9de98fcc0d | ||
|
|
68453f2492 | ||
|
|
61325f4620 | ||
|
|
8ff4d3f16e | ||
|
|
6e93ebbf90 | ||
|
|
8719cb7342 | ||
|
|
d5405ba2e0 | ||
|
|
8760c99b31 | ||
|
|
2eb71f648f | ||
|
|
199732845e | ||
|
|
707426ece2 | ||
|
|
10e5455356 | ||
|
|
30a75e3fa7 | ||
|
|
7e9f099301 | ||
|
|
9e0d943971 | ||
|
|
87a5030771 | ||
|
|
0c9de56da5 | ||
|
|
e8596fbc8e | ||
|
|
d899d7a4b8 | ||
|
|
c7d88e8b34 | ||
|
|
d6af2098c1 | ||
|
|
b76b5ae670 | ||
|
|
f2a41e4b5e | ||
|
|
85a986f589 | ||
|
|
4c2c567fd8 | ||
|
|
fe6dc72a75 | ||
|
|
ae2acd9ab2 | ||
|
|
f6e8548381 | ||
|
|
e7a3d70fe9 | ||
|
|
91d6e10b29 | ||
|
|
6fb63fede5 | ||
|
|
c9bab1f94c | ||
|
|
5393a28191 | ||
|
|
2d3f10ea3f | ||
|
|
2a7520112e | ||
|
|
61a963d6fb | ||
|
|
3be1802c9e | ||
|
|
19a44608b8 | ||
|
|
80205f41e3 | ||
|
|
92dd3eeee3 |
37
CONTRIBUTING.md
Normal file
37
CONTRIBUTING.md
Normal file
@@ -0,0 +1,37 @@
|
||||
<!--
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
-->
|
||||
|
||||
# Contributing to Apache Cordova
|
||||
|
||||
Anyone can contribute to Cordova. And we need your contributions.
|
||||
|
||||
There are multiple ways to contribute: report bugs, improve the docs, and
|
||||
contribute code.
|
||||
|
||||
For instructions on this, start with the
|
||||
[contribution overview](http://cordova.apache.org/#contribute).
|
||||
|
||||
The details are explained there, but the important items are:
|
||||
- Sign and submit an Apache ICLA (Contributor License Agreement).
|
||||
- Have a Jira issue open that corresponds to your contribution.
|
||||
- Run the tests so your patch doesn't break existing functionality.
|
||||
|
||||
We look forward to your contributions!
|
||||
@@ -71,3 +71,46 @@
|
||||
|
||||
### 0.2.8 (Feb 26, 2014)
|
||||
* CB-1826 Catch OOM on gallery image resize
|
||||
|
||||
### 0.2.9 (Apr 17, 2014)
|
||||
* CB-6460: Update license headers
|
||||
* CB-6422: [windows8] use cordova/exec/proxy
|
||||
* [WP8] When only targetWidth or targetHeight is provided, use it as the only bound
|
||||
* CB-4027, CB-5102, CB-2737, CB-2387: [WP] Fix camera issues, cropping, memory leaks
|
||||
* CB-6212: [iOS] fix warnings compiled under arm64 64-bit
|
||||
* [BlackBerry10] Add rim xml namespaces declaration
|
||||
* Add NOTICE file
|
||||
|
||||
### 0.3.0 (Jun 05, 2014)
|
||||
* CB-2083 documented saveToPhotoAlbum quirk on WP8
|
||||
* CB-5895 documented saveToPhotoAlbum quirk on WP8
|
||||
* Remove deprecated symbols for iOS < 6
|
||||
* documentation translation: cordova-plugin-camera
|
||||
* Lisa testing pulling in plugins for plugin: cordova-plugin-camera
|
||||
* Lisa testing pulling in plugins for plugin: cordova-plugin-camera
|
||||
* Lisa testing pulling in plugins for plugin: cordova-plugin-camera
|
||||
* Lisa testing pulling in plugins for plugin: cordova-plugin-camera
|
||||
* ubuntu: use application directory for images
|
||||
* CB-6795 Add license
|
||||
* Little fix in code formatting
|
||||
* CB-6613 Use WinJS functionality to get base64-encoded content of image instead of File plugin functionality
|
||||
* CB-6612 camera.getPicture now always returns encoded JPEG image
|
||||
* Removed invalid note from CB-5398
|
||||
* CB-6576 - Returns a specific error message when app has no access to library.
|
||||
* CB-6491 add CONTRIBUTING.md
|
||||
* CB-6546 android: Fix a couple bugs with allowEdit pull request
|
||||
* CB-6546 android: Add support for allowEdit Camera option
|
||||
|
||||
### 0.3.1 (Aug 06, 2014)
|
||||
* **FFOS** update CameraProxy.js
|
||||
* CB-7187 ios: Add explicit dependency on CoreLocation.framework
|
||||
* [BlackBerry10] Doc correction - sourceType is supported
|
||||
* CB-7071 android: Fix callback firing before CROP intent is sent when allowEdit=true
|
||||
* CB-6875 android: Handle exception when SDCard is not mounted
|
||||
* ios: Delete postImage (dead code)
|
||||
* Prevent NPE on processResiultFromGallery when intent comes null
|
||||
* Remove iOS doc reference to non-existing navigator.fileMgr API
|
||||
* Docs updated with some default values
|
||||
* Removes File plugin dependency from windows8 code.
|
||||
* Use WinJS functionality to resize image instead of File plugin functionality
|
||||
* CB-6127 Updated translations for docs
|
||||
|
||||
376
doc/de/index.md
Normal file
376
doc/de/index.md
Normal file
@@ -0,0 +1,376 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
Dieses Plugin stellt eine API für Aufnahmen und für die Auswahl der Bilder aus dem System-Image-Library.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
Nimmt ein Foto mit der Kamera, oder ein Foto aus dem Gerät Bildergalerie abgerufen. Das Bild wird an den Erfolg-Rückruf als eine base64-codierte übergeben `String` , oder als den URI für die Image-Datei. Die Methode selbst gibt ein `CameraPopoverHandle` -Objekt, das verwendet werden kann, um die Datei-Auswahl-Popover neu zu positionieren.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### Beschreibung
|
||||
|
||||
Die `camera.getPicture` -Funktion öffnet das Gerät Standard-Kamera-Anwendung, die Benutzern ermöglicht, Bilder ausrichten. Dieses Verhalten tritt standardmäßig, wenn `Camera.sourceType` gleich `Camera.PictureSourceType.CAMERA` . Sobald der Benutzer die Fotoschnäpper, die Kameraanwendung geschlossen wird und die Anwendung wird wiederhergestellt.
|
||||
|
||||
Wenn `Camera.sourceType` ist `Camera.PictureSourceType.PHOTOLIBRARY` oder `Camera.PictureSourceType.SAVEDPHOTOALBUM` , dann ein Dialog-Displays, die Benutzern ermöglicht, ein vorhandenes Bild auszuwählen. Die `camera.getPicture` Funktion gibt ein `CameraPopoverHandle` -Objekt, das verwendet werden kann, um den Bild-Auswahl-Dialog, zum Beispiel beim ändert sich der Orientierung des Geräts neu positionieren.
|
||||
|
||||
Der Rückgabewert wird gesendet, um die `cameraSuccess` Callback-Funktion in einem der folgenden Formate, je nach dem angegebenen `cameraOptions` :
|
||||
|
||||
* A `String` mit dem base64-codierte Foto-Bild.
|
||||
|
||||
* A `String` , die die Bild-Datei-Stelle auf lokalem Speicher (Standard).
|
||||
|
||||
Sie können tun, was Sie wollen, mit dem codierten Bildes oder URI, zum Beispiel:
|
||||
|
||||
* Rendern Sie das Bild in ein `<img>` Tag, wie im folgenden Beispiel
|
||||
|
||||
* Die Daten lokal zu speichern ( `LocalStorage` , [Lawnchair][1], etc..)
|
||||
|
||||
* Post die Daten an einen entfernten server
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**Hinweis**: Fotoauflösung auf neueren Geräten ist ganz gut. Fotos aus dem Gerät Galerie ausgewählt sind nicht zu einer niedrigeren Qualität herunterskaliert auch wenn ein `quality` -Parameter angegeben wird. Um Speicherprobleme zu vermeiden, legen Sie `Camera.destinationType` auf `FILE_URI` statt`DATA_URL`.
|
||||
|
||||
### Unterstützte Plattformen
|
||||
|
||||
* Amazon Fire OS
|
||||
* Android
|
||||
* BlackBerry 10
|
||||
* Firefox OS
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7 und 8
|
||||
* Windows 8
|
||||
|
||||
### Amazon Fire OS Macken
|
||||
|
||||
Amazon Fire OS verwendet Absichten zum Starten von der Kamera-Aktivität auf dem Gerät, um Bilder zu erfassen und auf Handys mit wenig Speicher, Cordova Tätigkeit getötet werden kann. In diesem Szenario kann das Bild nicht angezeigt, wenn die Aktivität von Cordova wiederhergestellt wird.
|
||||
|
||||
### Android Macken
|
||||
|
||||
Android verwendet Absichten zum Starten von der Kamera-Aktivität auf dem Gerät, um Bilder zu erfassen und auf Handys mit wenig Speicher, Cordova Tätigkeit getötet werden kann. In diesem Szenario kann das Bild nicht angezeigt, wenn die Aktivität von Cordova wiederhergestellt wird.
|
||||
|
||||
### Firefox OS Macken
|
||||
|
||||
Kamera-Plugin ist derzeit implementiert mithilfe von [Web-Aktivitäten][2].
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS Macken
|
||||
|
||||
Darunter eine JavaScript `alert()` entweder des Rückrufs Funktionen können Probleme verursachen. Wickeln Sie die Warnung innerhalb einer `setTimeout()` erlauben die iOS-Bild-Picker oder Popover vollständig zu schließen, bevor die Warnung angezeigt:
|
||||
|
||||
setTimeout(function() {/ / Mach dein Ding hier!}, 0);
|
||||
|
||||
|
||||
### Windows Phone 7 Macken
|
||||
|
||||
Die native Kameraanwendung aufrufen, während das Gerät via Zune angeschlossen ist funktioniert nicht und löst eine Fehler-Callback.
|
||||
|
||||
### Tizen Macken
|
||||
|
||||
Tizen unterstützt nur eine `destinationType` der `Camera.DestinationType.FILE_URI` und eine `sourceType` von`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### Beispiel
|
||||
|
||||
Nehmen Sie ein Foto und rufen Sie sie als base64-codierte Bild:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
Nehmen Sie ein Foto und rufen Sie das Bild-Datei-Speicherort:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
Optionale Parameter die Kameraeinstellungen anpassen.
|
||||
|
||||
{Qualität: 75, DestinationType: Camera.DestinationType.DATA_URL, SourceType: Camera.PictureSourceType.CAMERA, AllowEdit: stimmt, EncodingType: Camera.EncodingType.JPEG, TargetWidth: 100, TargetHeight: 100, PopoverOptions: CameraPopoverOptions, SaveToPhotoAlbum: false};
|
||||
|
||||
|
||||
### Optionen
|
||||
|
||||
* **Qualität**: Qualität des gespeicherten Bildes, ausgedrückt als ein Bereich von 0-100, wo 100 in der Regel voller Auflösung ohne Verlust aus der Dateikomprimierung ist. Der Standardwert ist 50. *(Anzahl)* (Beachten Sie, dass Informationen über die Kamera Auflösung nicht verfügbar ist.)
|
||||
|
||||
* **DestinationType**: Wählen Sie das Format des Rückgabewerts. Der Standardwert ist FILE_URI. Im Sinne `navigator.camera.DestinationType` *(Anzahl)*
|
||||
|
||||
Camera.DestinationType = {DATA_URL: 0, / / Return Bild als base64-codierte Zeichenfolge FILE_URI: 1, / / Return Image-Datei-URI NATIVE_URI: 2 / / Return image native URI (z. B. Ressourcen-Bibliothek: / / auf iOS oder Inhalte: / / auf Android)};
|
||||
|
||||
|
||||
* **SourceType**: Legen Sie die Quelle des Bildes. Der Standardwert ist die Kamera. Im Sinne `navigator.camera.PictureSourceType` *(Anzahl)*
|
||||
|
||||
Camera.PictureSourceType = {Fotothek: 0, Kamera: 1, SAVEDPHOTOALBUM: 2};
|
||||
|
||||
|
||||
* **AllowEdit**: einfache Bearbeitung des Bildes vor Auswahl zu ermöglichen. *(Boolesch)*
|
||||
|
||||
* **EncodingType**: die zurückgegebene Image-Datei ist Codierung auswählen. Standardwert ist JPEG. Im Sinne `navigator.camera.EncodingType` *(Anzahl)*
|
||||
|
||||
Camera.EncodingType = {JPEG: 0, / / Return JPEG-codierte Bild PNG: 1 / / Return PNG codiertes Bild};
|
||||
|
||||
|
||||
* **TargetWidth**: Breite in Pixel zum Bild skalieren. Muss mit **TargetHeight**verwendet werden. Seitenverhältnis bleibt konstant. *(Anzahl)*
|
||||
|
||||
* **TargetHeight**: Höhe in Pixel zum Bild skalieren. Muss mit **TargetWidth**verwendet werden. Seitenverhältnis bleibt konstant. *(Anzahl)*
|
||||
|
||||
* **MediaType**: Legen Sie den Typ der Medien zur Auswahl. Funktioniert nur, wenn `PictureSourceType` ist `PHOTOLIBRARY` oder `SAVEDPHOTOALBUM` . Im Sinne `nagivator.camera.MediaType` *(Anzahl)*
|
||||
|
||||
Camera.MediaType = {Bild: 0, / / Auswahl der Standbilder nur ermöglichen. STANDARD. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **CorrectOrientation**: Drehen Sie das Bild um die Ausrichtung des Geräts während der Aufnahme zu korrigieren. *(Boolesch)*
|
||||
|
||||
* **SaveToPhotoAlbum**: das Bild auf das Fotoalbum auf dem Gerät zu speichern, nach Einnahme. *(Boolesch)*
|
||||
|
||||
* **PopoverOptions**: iOS-nur Optionen, die Popover Lage in iPad angeben. In definierten`CameraPopoverOptions`.
|
||||
|
||||
* **CameraDirection**: Wählen Sie die Kamera (vorn oder hinten-gerichtete) verwenden. Der Standardwert ist zurück. Im Sinne `navigator.camera.Direction` *(Anzahl)*
|
||||
|
||||
Camera.Direction = {zurück: 0, / / die hinten gerichteter Kamera vorne verwenden: 1 / / die nach vorn gerichtete Kamera verwenden};
|
||||
|
||||
|
||||
### Amazon Fire OSQuirks
|
||||
|
||||
* `cameraDirection`Ergebnisse in einem hinten gerichteter Foto Wert.
|
||||
|
||||
* Ignoriert die `allowEdit` Parameter.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`und `Camera.PictureSourceType.SAVEDPHOTOALBUM` beide das gleiche Fotoalbum anzuzeigen.
|
||||
|
||||
### Android Macken
|
||||
|
||||
* `cameraDirection`Ergebnisse in einem hinten gerichteter Foto Wert.
|
||||
|
||||
* Ignoriert die `allowEdit` Parameter.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`und `Camera.PictureSourceType.SAVEDPHOTOALBUM` beide das gleiche Fotoalbum anzuzeigen.
|
||||
|
||||
### BlackBerry 10 Macken
|
||||
|
||||
* Ignoriert die `quality` Parameter.
|
||||
|
||||
* Ignoriert die `allowEdit` Parameter.
|
||||
|
||||
* `Camera.MediaType`wird nicht unterstützt.
|
||||
|
||||
* Ignoriert die `correctOrientation` Parameter.
|
||||
|
||||
* Ignoriert die `cameraDirection` Parameter.
|
||||
|
||||
### Firefox OS Macken
|
||||
|
||||
* Ignoriert die `quality` Parameter.
|
||||
|
||||
* `Camera.DestinationType`wird ignoriert, und gleich `1` (Bilddatei-URI)
|
||||
|
||||
* Ignoriert die `allowEdit` Parameter.
|
||||
|
||||
* Ignoriert die `PictureSourceType` Parameter (Benutzer wählt es in einem Dialogfenster)
|
||||
|
||||
* Ignoriert die`encodingType`
|
||||
|
||||
* Ignoriert die `targetWidth` und`targetHeight`
|
||||
|
||||
* `Camera.MediaType`wird nicht unterstützt.
|
||||
|
||||
* Ignoriert die `correctOrientation` Parameter.
|
||||
|
||||
* Ignoriert die `cameraDirection` Parameter.
|
||||
|
||||
### iOS Macken
|
||||
|
||||
* Legen Sie `quality` unter 50 Speicherfehler auf einigen Geräten zu vermeiden.
|
||||
|
||||
* Bei der Verwendung `destinationType.FILE_URI` , Fotos werden im temporären Verzeichnis der Anwendung gespeichert. Den Inhalt des temporären Verzeichnis der Anwendung wird gelöscht, wenn die Anwendung beendet.
|
||||
|
||||
### Tizen Macken
|
||||
|
||||
* nicht unterstützte Optionen
|
||||
|
||||
* gibt immer einen Datei-URI
|
||||
|
||||
### Windows Phone 7 und 8 Macken
|
||||
|
||||
* Ignoriert die `allowEdit` Parameter.
|
||||
|
||||
* Ignoriert die `correctOrientation` Parameter.
|
||||
|
||||
* Ignoriert die `cameraDirection` Parameter.
|
||||
|
||||
* Ignoriert die `saveToPhotoAlbum` Parameter. WICHTIG: Alle Aufnahmen die wp7/8 Cordova-Kamera-API werden immer in Kamerarolle des Telefons kopiert. Abhängig von den Einstellungen des Benutzers könnte dies auch bedeuten, dass das Bild in ihre OneDrive automatisch hochgeladen ist. Dies könnte möglicherweise bedeuten, dass das Bild für ein breiteres Publikum als Ihre Anwendung vorgesehen ist. Wenn diese einen Blocker für Ihre Anwendung, Sie müssen die CameraCaptureTask zu implementieren, wie im Msdn dokumentiert: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> Sie können kommentieren oder Up-Abstimmung das Beiträge zu diesem Thema im [Bugtracker][3]
|
||||
|
||||
* Ignoriert die `mediaType` -Eigenschaft des `cameraOptions` wie das Windows Phone SDK keine Möglichkeit, Fotothek Videos wählen.
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
OnError-Callback-Funktion, die eine Fehlermeldung bereitstellt.
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### Parameter
|
||||
|
||||
* **Meldung**: die Nachricht wird durch das Gerät systemeigenen Code bereitgestellt. *(String)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
OnSuccess Callback-Funktion, die die Bilddaten bereitstellt.
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### Parameter
|
||||
|
||||
* **CMYK**: Base64-Codierung der Bilddaten, *oder* die Image-Datei-URI, je nach `cameraOptions` in Kraft. *(String)*
|
||||
|
||||
### Beispiel
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
Ein Handle für das Dialogfeld "Popover" erstellt von`navigator.camera.getPicture`.
|
||||
|
||||
### Methoden
|
||||
|
||||
* **SetPosition**: Legen Sie die Position der Popover.
|
||||
|
||||
### Unterstützte Plattformen
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
Legen Sie die Position von der Popover.
|
||||
|
||||
**Parameter**:
|
||||
|
||||
* `cameraPopoverOptions`: die `CameraPopoverOptions` angeben, dass die neue Position
|
||||
|
||||
### Beispiel
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
nur iOS-Parametern, die Anker-Element Lage und Pfeil Richtung der Popover angeben, bei der Auswahl von Bildern aus einem iPad Bibliothek oder Album.
|
||||
|
||||
{X: 0, y: 32, Breite: 320, Höhe: 480, ArrowDir: Camera.PopoverArrowDirection.ARROW_ANY};
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **X**: x Pixelkoordinate des Bildschirmelement auf dem der Popover zu verankern. *(Anzahl)*
|
||||
|
||||
* **y**: y Pixelkoordinate des Bildschirmelement auf dem der Popover zu verankern. *(Anzahl)*
|
||||
|
||||
* **Breite**: Breite in Pixeln, das Bildschirmelement auf dem der Popover zu verankern. *(Anzahl)*
|
||||
|
||||
* **Höhe**: Höhe in Pixeln, das Bildschirmelement auf dem der Popover zu verankern. *(Anzahl)*
|
||||
|
||||
* **ArrowDir**: Richtung der Pfeil auf der Popover zeigen sollte. Im Sinne `Camera.PopoverArrowDirection` *(Anzahl)*
|
||||
|
||||
Camera.PopoverArrowDirection = {ARROW_UP: 1, / / entspricht iOS UIPopoverArrowDirection Konstanten ARROW_DOWN: 2, ARROW_LEFT: 4, ARROW_RIGHT: 8, ARROW_ANY: 15};
|
||||
|
||||
|
||||
Beachten Sie, dass die Größe der Popover ändern kann, um die Richtung des Pfeils und Ausrichtung des Bildschirms anzupassen. Achten Sie darauf, um Orientierung zu berücksichtigen, wenn Sie den Anker-Element-Speicherort angeben.
|
||||
|
||||
## Navigator.Camera.Cleanup
|
||||
|
||||
Entfernt Mittelstufe Fotos von der Kamera aus der vorübergehenden Verwahrung genommen.
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### Beschreibung
|
||||
|
||||
Entfernt Mittelstufe Image-Dateien, die nach der Berufung in vorübergehender Verwahrung gehalten werden `camera.getPicture` . Gilt nur, wenn der Wert des `Camera.sourceType` ist gleich `Camera.PictureSourceType.CAMERA` und der `Camera.destinationType` entspricht`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### Unterstützte Plattformen
|
||||
|
||||
* iOS
|
||||
|
||||
### Beispiel
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
412
doc/es/index.md
Normal file
412
doc/es/index.md
Normal file
@@ -0,0 +1,412 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
Este plugin proporciona una API para tomar fotografías y por elegir imágenes de biblioteca de imágenes del sistema.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
Toma una foto con la cámara, o recupera una foto de Galería de imágenes del dispositivo. La imagen se pasa a la devolución de llamada de éxito como un codificado en base64 `String` , o como el URI para el archivo de imagen. El método se devuelve un `CameraPopoverHandle` objeto que puede utilizarse para volver a colocar el popover de selección de archivo.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### Descripción
|
||||
|
||||
El `camera.getPicture` función abre la aplicación de cámara predeterminada del dispositivo que permite a los usuarios ajustar imágenes. Este comportamiento se produce de forma predeterminada, cuando `Camera.sourceType` es igual a `Camera.PictureSourceType.CAMERA` . Una vez que el usuario ajusta la foto, una aplicación de cámara se cierra y se restablecerá la aplicación.
|
||||
|
||||
Si `Camera.sourceType` es `Camera.PictureSourceType.PHOTOLIBRARY` o `Camera.PictureSourceType.SAVEDPHOTOALBUM` , entonces una muestra de diálogo que permite a los usuarios seleccionar una imagen existente. El `camera.getPicture` función devuelve un `CameraPopoverHandle` objeto, que puede utilizarse para volver a colocar el diálogo de selección de imagen, por ejemplo, cuando cambia la orientación del dispositivo.
|
||||
|
||||
El valor devuelto es enviado a la `cameraSuccess` función de callback, en uno de los formatos siguientes, dependiendo del objeto `cameraOptions` :
|
||||
|
||||
* A `String` que contiene la imagen codificada en base64.
|
||||
|
||||
* A `String` que representa la ubicación del archivo de imagen de almacenamiento local (por defecto).
|
||||
|
||||
Puedes hacer lo que quieras con la imagen codificada o URI, por ejemplo:
|
||||
|
||||
* Utilidad de la imagen en un `<img>` etiqueta, como en el ejemplo siguiente
|
||||
|
||||
* Guardar los datos localmente ( `LocalStorage` , [Lawnchair][1], etc..)
|
||||
|
||||
* Enviar los datos a un servidor remoto
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**Nota**: resolución de la foto en los nuevos dispositivos es bastante bueno. Fotos seleccionadas de la Galería del dispositivo no son degradadas a una calidad más baja, incluso si un `quality` se especifica el parámetro. Para evitar problemas con la memoria común, establezca `Camera.destinationType` a `FILE_URI` en lugar de`DATA_URL`.
|
||||
|
||||
### Plataformas soportadas
|
||||
|
||||
* Amazon fuego OS
|
||||
* Android
|
||||
* BlackBerry 10
|
||||
* Firefox OS
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7 y 8
|
||||
* Windows 8
|
||||
|
||||
### Amazon fuego OS rarezas
|
||||
|
||||
Amazon fuego OS utiliza los intentos para poner en marcha la actividad de la cámara del dispositivo para capturar imágenes y en teléfonos con poca memoria, puede matar la actividad Cordova. En este escenario, la imagen no aparezca cuando se restaura la actividad cordova.
|
||||
|
||||
### Rarezas Android
|
||||
|
||||
Android utiliza los intentos para iniciar la actividad de la cámara del dispositivo para capturar imágenes, y en los teléfonos con poca memoria, puede matar la actividad Cordova. En este escenario, la imagen no aparezca cuando se restaura la actividad Cordova.
|
||||
|
||||
### Firefox OS rarezas
|
||||
|
||||
Cámara plugin actualmente se implementa mediante [Actividades Web][2].
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS rarezas
|
||||
|
||||
Incluyendo un JavaScript `alert()` en cualquiera de la devolución de llamada funciones pueden causar problemas. Envuelva la alerta dentro de un `setTimeout()` para permitir que el selector de imagen iOS o popover cerrar completamente antes de la alerta se muestra:
|
||||
|
||||
setTimeout(function() {
|
||||
// do your thing here!
|
||||
}, 0);
|
||||
|
||||
|
||||
### Windows Phone 7 rarezas
|
||||
|
||||
Invocando la aplicación de cámara nativa mientras el dispositivo está conectado vía Zune no funciona y desencadena un callback de error.
|
||||
|
||||
### Rarezas Tizen
|
||||
|
||||
Tizen sólo es compatible con un `destinationType` de `Camera.DestinationType.FILE_URI` y un `sourceType` de`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### Ejemplo
|
||||
|
||||
Tomar una foto y recuperarlo como una imagen codificada en base64:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
Tomar una foto y recuperar la ubicación del archivo de la imagen:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
Parámetros opcionales para personalizar la configuración de la cámara.
|
||||
|
||||
{ quality : 75,
|
||||
destinationType : Camera.DestinationType.DATA_URL,
|
||||
sourceType : Camera.PictureSourceType.CAMERA,
|
||||
allowEdit : true,
|
||||
encodingType: Camera.EncodingType.JPEG,
|
||||
targetWidth: 100,
|
||||
targetHeight: 100,
|
||||
popoverOptions: CameraPopoverOptions,
|
||||
saveToPhotoAlbum: false };
|
||||
|
||||
|
||||
### Opciones
|
||||
|
||||
* **calidad**: calidad de la imagen guardada, expresada en un rango de 0-100, donde 100 es típicamente resolución sin pérdida de compresión del archivo. El valor predeterminado es 50. *(Número)* (Tenga en cuenta que no está disponible información sobre resolución de la cámara).
|
||||
|
||||
* **destinationType**: elegir el formato del valor devuelto. El valor predeterminado es FILE_URI. Definido en `navigator.camera.DestinationType` *(número)*
|
||||
|
||||
Camera.DestinationType = {
|
||||
DATA_URL : 0, // Return image as base64-encoded string
|
||||
FILE_URI : 1, // Return image file URI
|
||||
NATIVE_URI : 2 // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
|
||||
};
|
||||
|
||||
|
||||
* **sourceType**: establecer el origen de la imagen. El valor predeterminado es cámara. Definido en `navigator.camera.PictureSourceType` *(número)*
|
||||
|
||||
Camera.PictureSourceType = {
|
||||
PHOTOLIBRARY : 0,
|
||||
CAMERA : 1,
|
||||
SAVEDPHOTOALBUM : 2
|
||||
};
|
||||
|
||||
|
||||
* **allowEdit**: permite edición sencilla de imagen antes de la selección. *(Booleano)*
|
||||
|
||||
* **encodingType**: elegir la codificación del archivo de imagen devuelta. Por defecto es JPEG. Definido en `navigator.camera.EncodingType` *(número)*
|
||||
|
||||
Camera.EncodingType = {
|
||||
JPEG : 0, // Return JPEG encoded image
|
||||
PNG : 1 // Return PNG encoded image
|
||||
};
|
||||
|
||||
|
||||
* **targetWidth**: ancho en píxeles a escala de la imagen. Debe usarse con **targetHeight**. Proporción se mantiene constante. *(Número)*
|
||||
|
||||
* **targetHeight**: altura en píxeles a escala de la imagen. Debe usarse con **targetWidth**. Proporción se mantiene constante. *(Número)*
|
||||
|
||||
* **mediaType**: definir el tipo de medios para seleccionar. Sólo funciona cuando `PictureSourceType` es `PHOTOLIBRARY` o `SAVEDPHOTOALBUM` . Definido en `nagivator.camera.MediaType` *(número)*
|
||||
|
||||
Camera.MediaType = {
|
||||
PICTURE: 0, // allow selection of still pictures only. DE FORMA PREDETERMINADA. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: rotar la imagen para corregir la orientación del dispositivo durante la captura. *(Booleano)*
|
||||
|
||||
* **saveToPhotoAlbum**: guardar la imagen en el álbum de fotos en el dispositivo después de su captura. *(Booleano)*
|
||||
|
||||
* **popoverOptions**: opciones sólo iOS que especifican popover ubicación en iPad. Definido en`CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: elegir la cámara para usar (o parte posterior-frontal). El valor predeterminado es atrás. Definido en `navigator.camera.Direction` *(número)*
|
||||
|
||||
Camera.Direction = {
|
||||
BACK : 0, // Use the back-facing camera
|
||||
FRONT : 1 // Use the front-facing camera
|
||||
};
|
||||
|
||||
|
||||
### Amazon fuego OSQuirks
|
||||
|
||||
* Cualquier `cameraDirection` valor resultados en una foto orientada hacia atrás.
|
||||
|
||||
* Ignora el `allowEdit` parámetro.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`y `Camera.PictureSourceType.SAVEDPHOTOALBUM` ambas muestran el mismo álbum de fotos.
|
||||
|
||||
### Rarezas Android
|
||||
|
||||
* Cualquier `cameraDirection` valor resultados en una foto orientada hacia atrás.
|
||||
|
||||
* Ignora el `allowEdit` parámetro.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`y `Camera.PictureSourceType.SAVEDPHOTOALBUM` ambas muestran el mismo álbum de fotos.
|
||||
|
||||
### BlackBerry 10 rarezas
|
||||
|
||||
* Ignora el `quality` parámetro.
|
||||
|
||||
* Ignora el `allowEdit` parámetro.
|
||||
|
||||
* `Camera.MediaType`No se admite.
|
||||
|
||||
* Ignora el `correctOrientation` parámetro.
|
||||
|
||||
* Ignora el `cameraDirection` parámetro.
|
||||
|
||||
### Firefox OS rarezas
|
||||
|
||||
* Ignora el `quality` parámetro.
|
||||
|
||||
* `Camera.DestinationType`se ignora y es igual a `1` (URI del archivo de imagen)
|
||||
|
||||
* Ignora el `allowEdit` parámetro.
|
||||
|
||||
* Ignora el `PictureSourceType` parámetro (usuario elige en una ventana de diálogo)
|
||||
|
||||
* Ignora el`encodingType`
|
||||
|
||||
* Ignora el `targetWidth` y`targetHeight`
|
||||
|
||||
* `Camera.MediaType`No se admite.
|
||||
|
||||
* Ignora el `correctOrientation` parámetro.
|
||||
|
||||
* Ignora el `cameraDirection` parámetro.
|
||||
|
||||
### iOS rarezas
|
||||
|
||||
* Establecer `quality` por debajo de 50 para evitar errores de memoria en algunos dispositivos.
|
||||
|
||||
* Cuando se utiliza `destinationType.FILE_URI` , fotos se guardan en el directorio temporal de la aplicación. El contenido del directorio temporal de la aplicación se eliminará cuando finalice la aplicación.
|
||||
|
||||
### Rarezas Tizen
|
||||
|
||||
* opciones no compatibles
|
||||
|
||||
* siempre devuelve un identificador URI de archivo
|
||||
|
||||
### Windows Phone 7 y 8 rarezas
|
||||
|
||||
* Ignora el `allowEdit` parámetro.
|
||||
|
||||
* Ignora el `correctOrientation` parámetro.
|
||||
|
||||
* Ignora el `cameraDirection` parámetro.
|
||||
|
||||
* Ignora el `saveToPhotoAlbum` parámetro. IMPORTANTE: Todas las imágenes tomadas con la cámara wp7/8 cordova API siempre se copian en rollo de cámara del teléfono. Dependiendo de la configuración del usuario, esto podría significar también que la imagen es auto-subido a su OneDrive. Esto potencialmente podría significar que la imagen está disponible a una audiencia más amplia que su aplicación previsto. Si un bloqueador para su aplicación, usted necesitará aplicar el CameraCaptureTask como se documenta en msdn: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> también puede comentar o votar hasta el tema relacionado en el [issue tracker de][3]
|
||||
|
||||
* Ignora el `mediaType` propiedad de `cameraOptions` como el SDK de Windows Phone no proporciona una manera para elegir vídeos fototeca.
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
onError función callback que proporciona un mensaje de error.
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### Parámetros
|
||||
|
||||
* **mensaje**: el mensaje es proporcionado por código nativo del dispositivo. *(String)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
onSuccess función callback que proporciona los datos de imagen.
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### Parámetros
|
||||
|
||||
* **imageData**: codificación en Base64 de los datos de imagen, *o* el archivo de imagen URI, dependiendo de `cameraOptions` en vigor. *(String)*
|
||||
|
||||
### Ejemplo
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
Un identificador para el cuadro de diálogo popover creado por`navigator.camera.getPicture`.
|
||||
|
||||
### Métodos
|
||||
|
||||
* **setPosition**: establecer la posición de la popover.
|
||||
|
||||
### Plataformas soportadas
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
Establecer la posición de la popover.
|
||||
|
||||
**Parámetros**:
|
||||
|
||||
* `cameraPopoverOptions`: el `CameraPopoverOptions` que especifican la nueva posición
|
||||
|
||||
### Ejemplo
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
Sólo iOS parámetros que especifican la dirección ancla elemento ubicación y la flecha de la popover al seleccionar imágenes de biblioteca o álbum de un iPad.
|
||||
|
||||
{ x : 0,
|
||||
y : 32,
|
||||
width : 320,
|
||||
height : 480,
|
||||
arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
|
||||
};
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: coordenadas de píxeles del elemento de la pantalla en la que anclar el popover x. *(Número)*
|
||||
|
||||
* **y**: coordenada píxeles del elemento de la pantalla en la que anclar el popover. *(Número)*
|
||||
|
||||
* **anchura**: anchura, en píxeles, del elemento sobre el que anclar el popover pantalla. *(Número)*
|
||||
|
||||
* **altura**: alto, en píxeles, del elemento sobre el que anclar el popover pantalla. *(Número)*
|
||||
|
||||
* **arrowDir**: dirección de la flecha en el popover debe apuntar. Definido en `Camera.PopoverArrowDirection` *(número)*
|
||||
|
||||
Camera.PopoverArrowDirection = {
|
||||
ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants
|
||||
ARROW_DOWN : 2,
|
||||
ARROW_LEFT : 4,
|
||||
ARROW_RIGHT : 8,
|
||||
ARROW_ANY : 15
|
||||
};
|
||||
|
||||
|
||||
Tenga en cuenta que puede cambiar el tamaño de la popover para ajustar la dirección de la flecha y orientación de la pantalla. Asegúrese de que para tener en cuenta los cambios de orientación cuando se especifica la ubicación del elemento de anclaje.
|
||||
|
||||
## Navigator.Camera.Cleanup
|
||||
|
||||
Elimina intermedio fotos tomadas por la cámara de almacenamiento temporal.
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### Descripción
|
||||
|
||||
Elimina intermedio archivos de imagen que se mantienen en depósito temporal después de llamar `camera.getPicture` . Se aplica sólo cuando el valor de `Camera.sourceType` es igual a `Camera.PictureSourceType.CAMERA` y el `Camera.destinationType` es igual a`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### Plataformas soportadas
|
||||
|
||||
* iOS
|
||||
|
||||
### Ejemplo
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
401
doc/fr/index.md
Normal file
401
doc/fr/index.md
Normal file
@@ -0,0 +1,401 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
Ce plugin fournit une API pour la prise de photos et de choisir des images de la bibliothèque d'images du système.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
Prend une photo à l'aide de la caméra, ou récupère une photo de la Galerie d'images de l'appareil. L'image est passée au callback "succès" comme une `String` encodée en base64 ou l'URI du fichier de l'image. La méthode elle-même renvoie un objet `CameraPopoverHandle` qui permet de repositionner la boite de dialogue de selection d'image.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
La fonction `camera.getPicture` ouvre l'application par défaut de l'appareil qui permet aux utilisateurs de prendre des photos. Ce comportement se produit par défaut, lorsque `Camera.sourceType` est égal à `Camera.PictureSourceType.CAMERA`. Une fois que l'utilisateur a pris la photo, l'application "camera" se ferme et l'application est restaurée.
|
||||
|
||||
Si `Camera.sourceType` est `Camera.PictureSourceType.PHOTOLIBRARY` ou `Camera.PictureSourceType.SAVEDPHOTOALBUM`, alors une boîte de dialogue s'affiche pour permettre aux utilisateurs de sélectionner une image existante. La fonction `camera.getPicture` retourne un objet `CameraPopoverHandle` qui permet de repositionner le dialogue de sélection d'image, par exemple, lorsque l'orientation de l'appareil change.
|
||||
|
||||
La valeur de retour est envoyée à la fonction callback `cameraSuccess`, dans l'un des formats suivants, selon spécifié par `cameraOptions` :
|
||||
|
||||
* A `String` contenant l'image photo codée en base64.
|
||||
|
||||
* A `String` qui représente l'emplacement du fichier image sur le stockage local (par défaut).
|
||||
|
||||
Vous pouvez faire ce que vous voulez avec l'image encodée ou l'URI, par exemple :
|
||||
|
||||
* Afficher l'image dans un `<img>` tag, comme dans l'exemple ci-dessous
|
||||
|
||||
* Enregistrer les données localement ( `LocalStorage` , [poids][1], etc..)
|
||||
|
||||
* Publier les données sur un serveur distant
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**NOTE**: la résolution de Photo sur les nouveaux appareils est assez bonne. Les photos sélectionnées de la Galerie de l'appareil ne sont pas réduites avec une baisse de la qualité, même si un paramètre de `qualité` est spécifié. Pour éviter les problèmes de mémoire, définissez `Camera.destinationType` à `FILE_URI` plutôt que `DATA_URL`.
|
||||
|
||||
### Plates-formes prises en charge
|
||||
|
||||
* Amazon Fire OS
|
||||
* Android
|
||||
* BlackBerry 10
|
||||
* Firefox OS
|
||||
* iOS
|
||||
* Paciarelli
|
||||
* Windows Phone 7 et 8
|
||||
* Windows 8
|
||||
|
||||
### Amazon Fire OS Quirks
|
||||
|
||||
Amazon Fire OS utilise des intentions pour lancer l'activité de l'appareil photo sur l'appareil pour capturer des images et sur les téléphones avec peu de mémoire, l'activité de Cordova peut être tuée. Dans ce scénario, l'image peut ne pas apparaître lorsque l'activité de cordova est restaurée.
|
||||
|
||||
### Spécificités Android
|
||||
|
||||
Android utilise des intentions pour lancer l'activité de l'appareil photo sur l'appareil pour capturer des images et sur les téléphones avec peu de mémoire, l'activité de Cordova peut être tuée. Dans ce scénario, l'image peut ne pas apparaître lorsque l'activité de Cordova est restaurée.
|
||||
|
||||
### Firefox OS Quirks
|
||||
|
||||
Appareil photo plugin est actuellement mis en œuvre à l'aide [d'Activités sur le Web][2].
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS Quirks
|
||||
|
||||
Y compris un JavaScript `alert()` dans les deux le rappel fonctions peuvent causer des problèmes. Envelopper l'alerte dans un `setTimeout()` pour permettre le sélecteur d'image iOS ou kangourou pour fermer entièrement avant que l'alerte s'affiche :
|
||||
|
||||
setTimeout(function() {/ / votre code ici!}, 0) ;
|
||||
|
||||
|
||||
### Spécificités Windows Phone 7
|
||||
|
||||
Invoquant l'application native caméra alors que l'appareil est connecté via Zune ne fonctionne pas et déclenche un rappel de l'erreur.
|
||||
|
||||
### Spécificités Tizen
|
||||
|
||||
Paciarelli prend uniquement en charge un `destinationType` de `Camera.DestinationType.FILE_URI` et un `sourceType` de`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### Exemple
|
||||
|
||||
Prendre une photo, puis extrayez-la comme une image codée en base64 :
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
Prendre une photo et récupérer l'emplacement du fichier de l'image :
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
Paramètres optionnels pour personnaliser les réglages de l'appareil.
|
||||
|
||||
{ quality : 75,
|
||||
destinationType : Camera.DestinationType.DATA_URL,
|
||||
sourceType : Camera.PictureSourceType.CAMERA,
|
||||
allowEdit : true,
|
||||
encodingType: Camera.EncodingType.JPEG,
|
||||
targetWidth: 100,
|
||||
targetHeight: 100,
|
||||
popoverOptions: CameraPopoverOptions,
|
||||
saveToPhotoAlbum: false };
|
||||
|
||||
|
||||
### Options
|
||||
|
||||
* **quality** : Qualité de l'image enregistrée, comprise entre 0 et 100, où 100 correspond à la pleine résolution de l'appareil, sans perte liée à la compression. La valeur par défaut est 50. *(Nombre)* (Notez que les informations sur la résolution de la caméra sont indisponibles).
|
||||
|
||||
* **destinationType**: choisissez le format de la valeur de retour. La valeur par défaut est FILE_URI. Définies dans `navigator.camera.DestinationType` *(nombre)*
|
||||
|
||||
Camera.DestinationType = {
|
||||
DATA_URL : 0, // Retourne l'image sous la forme d'une chaîne encodée en base-64
|
||||
FILE_URI : 1, // Retourne l'URI du fichier image
|
||||
NATIVE_URI : 2 // Retourne l'URI native de l'image (ex. assets-library:// sur iOS ou content:// pour Android)
|
||||
};
|
||||
|
||||
|
||||
* **sourceType**: définissez la source de l'image. La valeur par défaut est la caméra. Définies dans `navigator.camera.PictureSourceType` *(nombre)*
|
||||
|
||||
Camera.PictureSourceType = {
|
||||
PHOTOLIBRARY : 0,
|
||||
CAMERA : 1,
|
||||
SAVEDPHOTOALBUM : 2
|
||||
};
|
||||
|
||||
|
||||
* **allowEdit**: Autoriser une modification simple de l'image avant sa sélection. *(Boolean)*
|
||||
|
||||
* **encodingType**: choisir le fichier image retournée de codage. Valeur par défaut est JPEG. Définies dans `navigator.camera.EncodingType` *(nombre)*
|
||||
|
||||
Camera.EncodingType = {
|
||||
JPEG : 0, // Renvoie l'image au format JPEG
|
||||
PNG : 1 // Renvoie l'image au format PNG
|
||||
};
|
||||
|
||||
|
||||
* **targetWidth**: largeur de sortie en pixels de l'image . Doit être utilisé avec **targetHeight**. Le ratio de l'aspect reste constant. *(Nombre)*
|
||||
|
||||
* **targetHeight**: hauteur de sortie en pixels de l'image. Doit être utilisé avec **targetWidth**. Aspect ratio reste constant. *(Nombre)*
|
||||
|
||||
* **mediaType**: définit le type de média à choisir. Ne fonctionne que quand `PictureSourceType` vaut `PHOTOLIBRARY` ou `SAVEDPHOTOALBUM` . Définie dans `nagivator.camera.MediaType` *(nombre)*
|
||||
|
||||
Camera.MediaType = {photo: 0, / / permettre la sélection de photos seulement. PAR DÉFAUT. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: faire pivoter l'image afin de corriger l'orientation de l'appareil lors de la capture. *(Booléen)*
|
||||
|
||||
* **saveToPhotoAlbum**: enregistrer l'image sur l'album photo sur l'appareil après la capture. *(Booléen)*
|
||||
|
||||
* **popoverOptions**: options pour iOS uniquement qui spécifient l'emplacement de la boîte de dialogue sur iPad. Définie dans`CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: choisissez la caméra à utiliser (ou dos-face). La valeur par défaut est de retour. Définies dans `navigator.camera.Direction` *(nombre)*
|
||||
|
||||
Camera.Direction = {BACK: 0, // utiliser la caméra arrière FRONT: 1 // utiliser la caméra frontale} ;
|
||||
|
||||
|
||||
### Amazon Fire OSQuirks
|
||||
|
||||
* Tout `cameraDirection` résultats dans le back-face photo de valeur.
|
||||
|
||||
* Ignore le paramètre `allowEdit`.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`et `Camera.PictureSourceType.SAVEDPHOTOALBUM` les deux affichent le même album photo.
|
||||
|
||||
### Quirks Android
|
||||
|
||||
* Tout `cameraDirection` résultats dans le back-face photo de valeur.
|
||||
|
||||
* Ignore la `allowEdit` paramètre.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`et `Camera.PictureSourceType.SAVEDPHOTOALBUM` les deux affichent le même album photo.
|
||||
|
||||
### BlackBerry 10 Quirks
|
||||
|
||||
* Ignore le paramètre `quality`.
|
||||
|
||||
* Ignore la `allowEdit` paramètre.
|
||||
|
||||
* `Camera.MediaType`n'est pas pris en charge.
|
||||
|
||||
* Ignore la `correctOrientation` paramètre.
|
||||
|
||||
* Ignore la `cameraDirection` paramètre.
|
||||
|
||||
### Firefox OS Quirks
|
||||
|
||||
* Ignore la `quality` paramètre.
|
||||
|
||||
* `Camera.DestinationType`est ignorée et est égal à `1` (URI du fichier image)
|
||||
|
||||
* Ignore la `allowEdit` paramètre.
|
||||
|
||||
* Ignore la `PictureSourceType` paramètre (utilisateur il choisit dans une fenêtre de dialogue)
|
||||
|
||||
* Ignore le`encodingType`
|
||||
|
||||
* Ignore la `targetWidth` et`targetHeight`
|
||||
|
||||
* `Camera.MediaType`n'est pas pris en charge.
|
||||
|
||||
* Ignore la `correctOrientation` paramètre.
|
||||
|
||||
* Ignore la `cameraDirection` paramètre.
|
||||
|
||||
### iOS Quirks
|
||||
|
||||
* Choisir la valeur `quality` en dessous de 50 pour éviter les erreurs de mémoire sur certains appareils.
|
||||
|
||||
* Lorsque vous utilisez `destinationType.FILE_URI` , les photos sont sauvegardées dans le répertoire temporaire de l'application. Le contenu du répertoire temporaire de l'application est supprimé lorsque l'application se termine.
|
||||
|
||||
### Bizarreries de paciarelli
|
||||
|
||||
* options non prises en charge
|
||||
|
||||
* retourne toujours un URI de fichier
|
||||
|
||||
### Windows Phone 7 et 8 Quirks
|
||||
|
||||
* Ignore la `allowEdit` paramètre.
|
||||
|
||||
* Ignore la `correctOrientation` paramètre.
|
||||
|
||||
* Ignore la `cameraDirection` paramètre.
|
||||
|
||||
* Ignore la `saveToPhotoAlbum` paramètre. IMPORTANT : Toutes les images prises avec la caméra de cordova wp7/8 API sont toujours copiés au rôle d'appareil photo du téléphone. Selon les paramètres de l'utilisateur, cela pourrait également signifier que l'image est auto-téléchargées à leur OneDrive. Potentiellement, cela pourrait signifier que l'image est disponible à un public plus large que votre application destinée. Si ce un bloqueur pour votre application, vous devrez implémenter le CameraCaptureTask tel que documenté sur msdn : <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> vous pouvez aussi commenter ou haut-vote la question connexe dans le [gestionnaire d'incidents][3]
|
||||
|
||||
* Ignore la `mediaType` propriété de `cameraOptions` comme le kit de développement Windows Phone ne fournit pas un moyen de choisir les vidéos de PHOTOLIBRARY.
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
fonction de rappel onError qui fournit un message d'erreur.
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### Paramètres
|
||||
|
||||
* **message** : le message est fourni par du code natif de l'appareil. *(String)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
fonction de rappel onSuccess qui fournit les données d'image.
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### Paramètres
|
||||
|
||||
* **imageData**: codage Base64 de l'image, *ou* le fichier image URI, selon `cameraOptions` utilisé. *(String)*
|
||||
|
||||
### Exemple
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
Un handle vers la boîte de dialogue de kangourou créé par`navigator.camera.getPicture`.
|
||||
|
||||
### Méthodes
|
||||
|
||||
* **setPosition**: Définit la position de la boite de dialogue.
|
||||
|
||||
### Plates-formes prises en charge
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
Définir la position de la kangourou.
|
||||
|
||||
**Paramètres**:
|
||||
|
||||
* `cameraPopoverOptions`: l'objet `CameraPopoverOptions` spécifiant la nouvelle position
|
||||
|
||||
### Exemple
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
iOS uniquement les paramètres qui spécifient la direction ancre élément emplacement et de la flèche de la kangourou lors de la sélection des images de la bibliothèque de l'iPad ou l'album.
|
||||
|
||||
{ x : 0, y : 32, width : 320, height : 480, arrowDir : Camera.PopoverArrowDirection.ARROW_ANY };
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: coordonnée en x (pixels) de l'élément à l'écran sur lequel accrocher la boite de dialogue. *(Number)*
|
||||
|
||||
* **y**: coordonnée en y (pixels) de l'élément à l'écran sur lequel accrocher la boite de dialogue. *(Number)*
|
||||
|
||||
* **width**: largeur en pixels de l'élément à l'écran sur lequel accrocher la boite de dialogue. *(Number)*
|
||||
|
||||
* **height**: hauteur en pixels de l'élément à l'écran sur lequel accrocher la boite de dialogue. *(Number)*
|
||||
|
||||
* **arrowDir**: Direction vers laquelle la flèche de la boîte de dialogue doit pointer. Définie dans `Camera.PopoverArrowDirection` *(Number)*
|
||||
|
||||
Camera.PopoverArrowDirection = {
|
||||
ARROW_UP : 1, // correspondent aux constantes iOS UIPopoverArrowDirection
|
||||
ARROW_DOWN : 2,
|
||||
ARROW_LEFT : 4,
|
||||
ARROW_RIGHT : 8,
|
||||
ARROW_ANY : 15
|
||||
};
|
||||
|
||||
|
||||
Notez que la taille de la kangourou peut changer pour s'adapter à la direction de la flèche et l'orientation de l'écran. Assurez-vous que tenir compte des changements d'orientation lors de la spécification de l'emplacement d'élément d'ancrage.
|
||||
|
||||
## Navigator.Camera.Cleanup
|
||||
|
||||
Supprime les intermédiaires photos prises par la caméra de stockage temporaire.
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### Description
|
||||
|
||||
Supprime les intermédiaires les fichiers image qui sont gardées en dépôt temporaire après avoir appelé `camera.getPicture` . S'applique uniquement lorsque la valeur de `Camera.sourceType` est égale à `Camera.PictureSourceType.CAMERA` et le `Camera.destinationType` est égal à`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### Plates-formes prises en charge
|
||||
|
||||
* iOS
|
||||
|
||||
### Exemple
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
30
doc/index.md
30
doc/index.md
@@ -20,7 +20,7 @@
|
||||
# org.apache.cordova.camera
|
||||
|
||||
This plugin provides an API for taking pictures and for choosing images from
|
||||
the system's image libarary.
|
||||
the system's image library.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
@@ -33,7 +33,7 @@ base64-encoded `String`, or as the URI for the image file. The method
|
||||
itself returns a `CameraPopoverHandle` object that can be used to
|
||||
reposition the file selection popover.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, [ cameraOptions ] );
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
### Description
|
||||
|
||||
@@ -92,13 +92,6 @@ scenario, the image may not appear when the cordova activity is restored.
|
||||
|
||||
### Android Quirks
|
||||
|
||||
*Android 4.4 only*: Android 4.4 introduced a new [Storage Access Framework](https://developer.android.com/guide/topics/providers/document-provider.html) that makes it
|
||||
easier for users to browse and open documents across all of their preferred document storage providers.
|
||||
Cordova has not yet been fully integrated with this new Storage Access Framework. Because of this, the `getPicture()`
|
||||
method will not correctly return pictures when the user selects from the "Recent", "Drive", "Images", or "External
|
||||
Storage" folders when the `destinationType` is `FILE_URI`. However, the user will be able to correctly select any pictures
|
||||
if they go through the "Gallery" app first. Potential workarounds for this issue are documented on [this StackOverflow question](http://stackoverflow.com/questions/19834842/android-gallery-on-kitkat-returns-different-uri-for-intent-action-get-content/20177611). Please see [CB-5398](https://issues.apache.org/jira/browse/CB-5398) to track this issue.
|
||||
|
||||
Android uses intents to launch the camera activity on the device to capture
|
||||
images, and on phones with low memory, the Cordova activity may be killed. In this
|
||||
scenario, the image may not appear when the Cordova activity is restored.
|
||||
@@ -176,9 +169,9 @@ Optional parameters to customize the camera settings.
|
||||
|
||||
### Options
|
||||
|
||||
- __quality__: Quality of the saved image, expressed as a range of 0-100, where 100 is typically full resolution with no loss from file compression. _(Number)_ (Note that information about the camera's resolution is unavailable.)
|
||||
- __quality__: Quality of the saved image, expressed as a range of 0-100, where 100 is typically full resolution with no loss from file compression. The default is 50. _(Number)_ (Note that information about the camera's resolution is unavailable.)
|
||||
|
||||
- __destinationType__: Choose the format of the return value. Defined in `navigator.camera.DestinationType` _(Number)_
|
||||
- __destinationType__: Choose the format of the return value. The default is FILE_URI. Defined in `navigator.camera.DestinationType` _(Number)_
|
||||
|
||||
Camera.DestinationType = {
|
||||
DATA_URL : 0, // Return image as base64-encoded string
|
||||
@@ -186,7 +179,7 @@ Optional parameters to customize the camera settings.
|
||||
NATIVE_URI : 2 // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
|
||||
};
|
||||
|
||||
- __sourceType__: Set the source of the picture. Defined in `navigator.camera.PictureSourceType` _(Number)_
|
||||
- __sourceType__: Set the source of the picture. The default is CAMERA. Defined in `navigator.camera.PictureSourceType` _(Number)_
|
||||
|
||||
Camera.PictureSourceType = {
|
||||
PHOTOLIBRARY : 0,
|
||||
@@ -196,7 +189,7 @@ Optional parameters to customize the camera settings.
|
||||
|
||||
- __allowEdit__: Allow simple editing of image before selection. _(Boolean)_
|
||||
|
||||
- __encodingType__: Choose the returned image file's encoding. Defined in `navigator.camera.EncodingType` _(Number)_
|
||||
- __encodingType__: Choose the returned image file's encoding. Default is JPEG. Defined in `navigator.camera.EncodingType` _(Number)_
|
||||
|
||||
Camera.EncodingType = {
|
||||
JPEG : 0, // Return JPEG encoded image
|
||||
@@ -213,7 +206,7 @@ Optional parameters to customize the camera settings.
|
||||
PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
};
|
||||
|
||||
- __correctOrientation__: Rotate the image to correct for the orientation of the device during capture. _(Boolean)_
|
||||
|
||||
@@ -221,7 +214,7 @@ Optional parameters to customize the camera settings.
|
||||
|
||||
- __popoverOptions__: iOS-only options that specify popover location in iPad. Defined in `CameraPopoverOptions`.
|
||||
|
||||
- __cameraDirection__: Choose the camera to use (front- or back-facing). Defined in `navigator.camera.Direction` _(Number)_
|
||||
- __cameraDirection__: Choose the camera to use (front- or back-facing). The default is BACK. Defined in `navigator.camera.Direction` _(Number)_
|
||||
|
||||
Camera.Direction = {
|
||||
BACK : 0, // Use the back-facing camera
|
||||
@@ -248,8 +241,6 @@ Optional parameters to customize the camera settings.
|
||||
|
||||
- Ignores the `quality` parameter.
|
||||
|
||||
- Ignores the `sourceType` parameter.
|
||||
|
||||
- Ignores the `allowEdit` parameter.
|
||||
|
||||
- `Camera.MediaType` is not supported.
|
||||
@@ -282,7 +273,7 @@ Optional parameters to customize the camera settings.
|
||||
|
||||
- Set `quality` below 50 to avoid memory errors on some devices.
|
||||
|
||||
- When using `destinationType.FILE_URI`, photos are saved in the application's temporary directory. You may delete the contents of this directory using the `navigator.fileMgr` APIs if storage space is a concern.
|
||||
- When using `destinationType.FILE_URI`, photos are saved in the application's temporary directory. The contents of the application's temporary directory is deleted when the application ends.
|
||||
|
||||
### Tizen Quirks
|
||||
|
||||
@@ -298,6 +289,9 @@ Optional parameters to customize the camera settings.
|
||||
|
||||
- Ignores the `cameraDirection` parameter.
|
||||
|
||||
- Ignores the `saveToPhotoAlbum` parameter. IMPORTANT: All images taken with the wp7/8 cordova camera API are always copied to the phone's camera roll. Depending on the user's settings, this could also mean the image is auto-uploaded to their OneDrive. This could potentially mean the image is available to a wider audience than your app intended. If this a blocker for your application, you will need to implement the CameraCaptureTask as documented on msdn : [http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx](http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx)
|
||||
You may also comment or up-vote the related issue in the [issue tracker](https://issues.apache.org/jira/browse/CB-2083)
|
||||
|
||||
- Ignores the `mediaType` property of `cameraOptions` as the Windows Phone SDK does not provide a way to choose videos from PHOTOLIBRARY.
|
||||
|
||||
|
||||
|
||||
376
doc/it/index.md
Normal file
376
doc/it/index.md
Normal file
@@ -0,0 +1,376 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
Questo plugin fornisce un'API per scattare foto e per aver scelto immagini dalla libreria di immagini del sistema.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
Prende una foto utilizzando la fotocamera, o recupera una foto dalla galleria di immagini del dispositivo. L'immagine viene passata al metodo di callback successo come una codifica base64 `String` , o come l'URI per il file di immagine. Il metodo stesso restituisce un `CameraPopoverHandle` che può essere utilizzato per riposizionare il Muffin di selezione file.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### Descrizione
|
||||
|
||||
il `camera.getPicture` funzione apre predefinito fotocamera applicazione il dispositivo che consente agli utenti di scattare foto. Questo comportamento si verifica per impostazione predefinita, quando `Camera.sourceType` è uguale a `Camera.PictureSourceType.CAMERA` . Una volta che l'utente scatta la foto, si chiude l'applicazione fotocamera e l'applicazione viene ripristinato.
|
||||
|
||||
Se `Camera.sourceType` è `Camera.PictureSourceType.PHOTOLIBRARY` o `Camera.PictureSourceType.SAVEDPHOTOALBUM` , quindi un display finestra di dialogo che consente agli utenti di selezionare un'immagine esistente. La `camera.getPicture` la funzione restituisce un `CameraPopoverHandle` oggetto, che può essere utilizzato per riposizionare la finestra di selezione immagine, ad esempio, quando l'orientamento del dispositivo.
|
||||
|
||||
Il valore restituito viene inviato alla `cameraSuccess` funzione di callback, in uno dei seguenti formati, a seconda che l'oggetto specificato `cameraOptions` :
|
||||
|
||||
* A `String` contenente l'immagine della foto con codifica base64.
|
||||
|
||||
* A `String` che rappresenta il percorso del file di immagine su archiviazione locale (predefinito).
|
||||
|
||||
Si può fare quello che vuoi con l'immagine codificata o URI, ad esempio:
|
||||
|
||||
* Il rendering dell'immagine in un `<img>` tag, come nell'esempio qui sotto
|
||||
|
||||
* Salvare i dati localmente ( `LocalStorage` , [Lawnchair][1], ecc.)
|
||||
|
||||
* Inviare i dati a un server remoto
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**Nota**: risoluzione foto sui più recenti dispositivi è abbastanza buona. Foto selezionate dalla galleria del dispositivo non è percepiranno di qualità inferiore, anche se un `quality` è specificato il parametro. Per evitare problemi di memoria comune, impostare `Camera.destinationType` a `FILE_URI` piuttosto che`DATA_URL`.
|
||||
|
||||
### Piattaforme supportate
|
||||
|
||||
* Amazon fuoco OS
|
||||
* Android
|
||||
* BlackBerry 10
|
||||
* Firefox OS
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7 e 8
|
||||
* Windows 8
|
||||
|
||||
### Amazon fuoco OS stranezze
|
||||
|
||||
Amazon fuoco OS utilizza intenti a lanciare l'attività della fotocamera sul dispositivo per catturare immagini e sui telefoni con poca memoria, l'attività di Cordova può essere ucciso. In questo scenario, l'immagine potrebbe non apparire quando viene ripristinata l'attività di cordova.
|
||||
|
||||
### Stranezze Android
|
||||
|
||||
Android utilizza intenti a lanciare l'attività della fotocamera sul dispositivo per catturare immagini e sui telefoni con poca memoria, l'attività di Cordova può essere ucciso. In questo scenario, l'immagine potrebbe non apparire quando viene ripristinata l'attività di Cordova.
|
||||
|
||||
### Firefox OS stranezze
|
||||
|
||||
Fotocamera plugin è attualmente implementato mediante [Attività Web][2].
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS stranezze
|
||||
|
||||
Compreso un JavaScript `alert()` in entrambi il callback funzioni possono causare problemi. Avvolgere l'avviso all'interno di un `setTimeout()` per consentire la selezione immagine iOS o muffin per chiudere completamente la prima che viene visualizzato l'avviso:
|
||||
|
||||
setTimeout(function() {/ / fai la tua cosa qui!}, 0);
|
||||
|
||||
|
||||
### Windows Phone 7 capricci
|
||||
|
||||
Richiamando l'applicazione nativa fotocamera mentre il dispositivo è collegato tramite Zune non funziona e innesca un callback di errore.
|
||||
|
||||
### Tizen stranezze
|
||||
|
||||
Tizen supporta solo un `destinationType` di `Camera.DestinationType.FILE_URI` e un `sourceType` di`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### Esempio
|
||||
|
||||
Scattare una foto e recuperarla come un'immagine con codifica base64:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
Scattare una foto e recuperare il percorso del file dell'immagine:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
Parametri opzionali per personalizzare le impostazioni della fotocamera.
|
||||
|
||||
{qualità: 75, destinationType: Camera.DestinationType.DATA_URL, sourceType: Camera.PictureSourceType.CAMERA, allowEdit: vero, encodingType: Camera.EncodingType.JPEG, targetWidth: 100, targetHeight: 100, popoverOptions: CameraPopoverOptions, saveToPhotoAlbum: false};
|
||||
|
||||
|
||||
### Opzioni
|
||||
|
||||
* **qualità**: qualità dell'immagine salvata, espressa come un intervallo di 0-100, dove 100 è tipicamente piena risoluzione senza perdita di compressione file. Il valore predefinito è 50. *(Numero)* (Si noti che informazioni sulla risoluzione della fotocamera non sono disponibile).
|
||||
|
||||
* **destinationType**: Scegli il formato del valore restituito. Il valore predefinito è FILE_URI. Definito in `navigator.camera.DestinationType` *(numero)*
|
||||
|
||||
Camera.DestinationType = {DATA_URL: 0, / / ritorno di immagine come stringa con codifica base64 FILE_URI: 1, / / ritorno file immagine URI NATIVE_URI: 2 / / ritorno immagine nativa URI (ad esempio, beni-biblioteca: / / su iOS o contenuto: / / su Android)};
|
||||
|
||||
|
||||
* **sourceType**: impostare l'origine dell'immagine. Il valore predefinito è la fotocamera. Definito in `navigator.camera.PictureSourceType` *(numero)*
|
||||
|
||||
Camera.PictureSourceType = {PHOTOLIBRARY: 0, fotocamera: 1, SAVEDPHOTOALBUM: 2};
|
||||
|
||||
|
||||
* **Proprietà allowEdit**: consentire la semplice modifica dell'immagine prima di selezione. *(Booleano)*
|
||||
|
||||
* **encodingType**: scegliere il file immagine restituita di codifica. Predefinito è JPEG. Definito in `navigator.camera.EncodingType` *(numero)*
|
||||
|
||||
Camera.EncodingType = {JPEG: 0, / / JPEG restituire codificati immagine PNG: 1 / / ritorno PNG codificato immagine};
|
||||
|
||||
|
||||
* **targetWidth**: larghezza in pixel all'immagine della scala. Deve essere usato con **targetHeight**. Proporzioni rimane costante. *(Numero)*
|
||||
|
||||
* **targetHeight**: altezza in pixel all'immagine della scala. Deve essere usato con **targetWidth**. Proporzioni rimane costante. *(Numero)*
|
||||
|
||||
* **mediaType**: impostare il tipo di supporto per scegliere da. Funziona solo quando `PictureSourceType` è `PHOTOLIBRARY` o `SAVEDPHOTOALBUM` . Definito in `nagivator.camera.MediaType` *(numero)*
|
||||
|
||||
Camera.MediaType = {foto: 0, / / permette la selezione di immagini ancora solo. PER IMPOSTAZIONE PREDEFINITA. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: ruotare l'immagine per correggere l'orientamento del dispositivo durante l'acquisizione. *(Booleano)*
|
||||
|
||||
* **saveToPhotoAlbum**: salvare l'immagine nell'album di foto sul dispositivo dopo la cattura. *(Booleano)*
|
||||
|
||||
* **popoverOptions**: solo iOS opzioni che specificano la posizione di muffin in iPad. Definito in`CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: scegliere la telecamera da utilizzare (o retro-frontale). Il valore predefinito è tornato. Definito in `navigator.camera.Direction` *(numero)*
|
||||
|
||||
Camera.Direction = {indietro: 0, / / utilizzare la fotocamera posteriore anteriore: 1 / / utilizzare la fotocamera frontale};
|
||||
|
||||
|
||||
### Amazon Fire OSQuirks
|
||||
|
||||
* Qualsiasi `cameraDirection` valore i risultati in una foto di lamatura.
|
||||
|
||||
* Ignora il `allowEdit` parametro.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`e `Camera.PictureSourceType.SAVEDPHOTOALBUM` entrambi visualizzare l'album fotografico stesso.
|
||||
|
||||
### Stranezze Android
|
||||
|
||||
* Qualsiasi `cameraDirection` valore i risultati in una foto di lamatura.
|
||||
|
||||
* Ignora il `allowEdit` parametro.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`e `Camera.PictureSourceType.SAVEDPHOTOALBUM` entrambi visualizzare l'album fotografico stesso.
|
||||
|
||||
### BlackBerry 10 capricci
|
||||
|
||||
* Ignora il `quality` parametro.
|
||||
|
||||
* Ignora il `allowEdit` parametro.
|
||||
|
||||
* `Camera.MediaType`non è supportato.
|
||||
|
||||
* Ignora il `correctOrientation` parametro.
|
||||
|
||||
* Ignora il `cameraDirection` parametro.
|
||||
|
||||
### Firefox OS stranezze
|
||||
|
||||
* Ignora il `quality` parametro.
|
||||
|
||||
* `Camera.DestinationType`viene ignorato e corrisponde a `1` (URI del file di immagine)
|
||||
|
||||
* Ignora il `allowEdit` parametro.
|
||||
|
||||
* Ignora il `PictureSourceType` parametro (utente ne sceglie in una finestra di dialogo)
|
||||
|
||||
* Ignora il`encodingType`
|
||||
|
||||
* Ignora le `targetWidth` e`targetHeight`
|
||||
|
||||
* `Camera.MediaType`non è supportato.
|
||||
|
||||
* Ignora il `correctOrientation` parametro.
|
||||
|
||||
* Ignora il `cameraDirection` parametro.
|
||||
|
||||
### iOS stranezze
|
||||
|
||||
* Impostare `quality` inferiore al 50 per evitare errori di memoria su alcuni dispositivi.
|
||||
|
||||
* Quando si utilizza `destinationType.FILE_URI` , foto vengono salvati nella directory temporanea dell'applicazione. Il contenuto della directory temporanea dell'applicazione viene eliminato quando l'applicazione termina.
|
||||
|
||||
### Tizen stranezze
|
||||
|
||||
* opzioni non supportate
|
||||
|
||||
* restituisce sempre un URI del FILE
|
||||
|
||||
### Windows Phone 7 e 8 stranezze
|
||||
|
||||
* Ignora il `allowEdit` parametro.
|
||||
|
||||
* Ignora il `correctOrientation` parametro.
|
||||
|
||||
* Ignora il `cameraDirection` parametro.
|
||||
|
||||
* Ignora il `saveToPhotoAlbum` parametro. IMPORTANTE: Tutte le immagini scattate con la fotocamera di cordova wp7/8 API vengono sempre copiate rotolo fotocamera del telefono cellulare. A seconda delle impostazioni dell'utente, questo potrebbe anche significare che l'immagine viene caricato in automatico a loro OneDrive. Questo potenzialmente potrebbe significare che l'immagine è disponibile a un pubblico più ampio di app destinate. Se questo un blocco dell'applicazione, sarà necessario implementare il CameraCaptureTask come documentato su msdn: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> si può anche commentare o up-voto la questione correlata nel [tracciatore di problemi][3]
|
||||
|
||||
* Ignora la `mediaType` proprietà di `cameraOptions` come il SDK di Windows Phone non fornisce un modo per scegliere il video da PHOTOLIBRARY.
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
funzione di callback onError che fornisce un messaggio di errore.
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### Parametri
|
||||
|
||||
* **messaggio**: il messaggio è fornito dal codice nativo del dispositivo. *(String)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
funzione di callback onSuccess che fornisce i dati di immagine.
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### Parametri
|
||||
|
||||
* **imageData**: Base64 codifica dei dati immagine, *o* il file di immagine URI, a seconda `cameraOptions` in vigore. *(String)*
|
||||
|
||||
### Esempio
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
Un handle per la finestra di dialogo di muffin creato da`navigator.camera.getPicture`.
|
||||
|
||||
### Metodi
|
||||
|
||||
* **setPosition**: impostare la posizione dei muffin.
|
||||
|
||||
### Piattaforme supportate
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
Impostare la posizione dei muffin.
|
||||
|
||||
**Parametri**:
|
||||
|
||||
* `cameraPopoverOptions`: il `CameraPopoverOptions` che specificare la nuova posizione
|
||||
|
||||
### Esempio
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
iOS solo parametri che specificano l'ancoraggio elemento posizione e freccia direzione il Muffin quando si selezionano le immagini dalla libreria un iPad o un album.
|
||||
|
||||
{x: 0, y: 32, larghezza: 320, altezza: 480, arrowDir: Camera.PopoverArrowDirection.ARROW_ANY};
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: pixel coordinata x dell'elemento dello schermo su cui ancorare il muffin. *(Numero)*
|
||||
|
||||
* **y**: coordinata y di pixel dell'elemento dello schermo su cui ancorare il muffin. *(Numero)*
|
||||
|
||||
* **larghezza**: larghezza, in pixel, dell'elemento dello schermo su cui ancorare il muffin. *(Numero)*
|
||||
|
||||
* **altezza**: altezza, in pixel, dell'elemento dello schermo su cui ancorare il muffin. *(Numero)*
|
||||
|
||||
* **arrowDir**: direzione dovrebbe puntare la freccia il muffin. Definito in `Camera.PopoverArrowDirection` *(numero)*
|
||||
|
||||
Camera.PopoverArrowDirection = {ARROW_UP: 1, / / corrisponde a iOS UIPopoverArrowDirection costanti ARROW_DOWN: 2, ARROW_LEFT: 4, ARROW_RIGHT: 8, ARROW_ANY: 15};
|
||||
|
||||
|
||||
Si noti che la dimensione del muffin possa cambiare per regolare la direzione della freccia e l'orientamento dello schermo. Assicurarsi che tenere conto di modifiche di orientamento quando si specifica la posizione di elemento di ancoraggio.
|
||||
|
||||
## Navigator.camera.Cleanup
|
||||
|
||||
Rimuove intermedio foto scattate con la fotocamera da deposito temporaneo.
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### Descrizione
|
||||
|
||||
Rimuove intermedio i file di immagine che vengono tenuti in custodia temporanea dopo la chiamata `camera.getPicture` . Si applica solo quando il valore di `Camera.sourceType` è uguale a `Camera.PictureSourceType.CAMERA` e il `Camera.destinationType` è uguale a`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### Piattaforme supportate
|
||||
|
||||
* iOS
|
||||
|
||||
### Esempio
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
376
doc/ja/index.md
Normal file
376
doc/ja/index.md
Normal file
@@ -0,0 +1,376 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
このプラグインは写真を撮るため、システムのイメージ ライブラリからイメージを選択するために API を提供します。
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
カメラを使用して写真を取るか、デバイスの画像ギャラリーから写真を取得します。 イメージは base64 エンコードとして成功時のコールバックに渡される `String` 、またはイメージ ファイルの URI。 メソッド自体を返します、 `CameraPopoverHandle` オブジェクト ファイル選択ポップ オーバーの位置を変更するために使用することができます。
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### 説明
|
||||
|
||||
`camera.getPicture`関数はデバイスのデフォルトのカメラ アプリケーションの写真をスナップするユーザーことができますを開きます。 既定では、この現象が発生したときに `Camera.sourceType` に等しい `Camera.PictureSourceType.CAMERA` 。 ユーザーは写真をスナップ、カメラ アプリケーションを閉じるし、アプリケーションが復元されます。
|
||||
|
||||
場合 `Camera.sourceType` は、 `Camera.PictureSourceType.PHOTOLIBRARY` または `Camera.PictureSourceType.SAVEDPHOTOALBUM` 、その後、ダイアログが表示されますユーザーを既存のイメージを選択することができます。 `camera.getPicture`関数を返す、 `CameraPopoverHandle` オブジェクトは、たとえば、イメージの選択ダイアログには、デバイスの向きが変更されたときの位置を変更するために使用することができます。
|
||||
|
||||
戻り値に送信されます、 `cameraSuccess` の指定によって、次の形式のいずれかのコールバック関数 `cameraOptions` :
|
||||
|
||||
* A `String` 写真の base64 でエンコードされたイメージを含んでいます。
|
||||
|
||||
* A `String` (既定値) のローカル記憶域上のイメージ ファイルの場所を表します。
|
||||
|
||||
自由に変更、エンコードされたイメージ、または URI などを行うことができます。
|
||||
|
||||
* イメージをレンダリングする `<img>` 以下の例のように、タグ
|
||||
|
||||
* ローカル データの保存 ( `LocalStorage` 、 [Lawnchair][1]など)。
|
||||
|
||||
* リモート サーバーにデータを投稿します。
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**注**: 新しいデバイス上の写真の解像度はかなり良いです。 デバイスのギャラリーから選択した写真が下方の品質に縮小しない場合でも、 `quality` パラメーターを指定します。 一般的なメモリの問題を回避する設定 `Camera.destinationType` を `FILE_URI` よりもむしろ`DATA_URL`.
|
||||
|
||||
### サポートされているプラットフォーム
|
||||
|
||||
* アマゾン火 OS
|
||||
* アンドロイド
|
||||
* ブラックベリー 10
|
||||
* Firefox の OS
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7 と 8
|
||||
* Windows 8
|
||||
|
||||
### アマゾン火 OS 癖
|
||||
|
||||
アマゾン火 OS イメージをキャプチャするデバイス上のカメラの活動を開始する意図を使用して、メモリの少ない携帯電話、コルドバ活動が殺されるかもしれない。 このシナリオでは、コルドバの活動が復元されるとき、画像が表示されません。
|
||||
|
||||
### Android の癖
|
||||
|
||||
アンドロイド、イメージをキャプチャするデバイス上でカメラのアクティビティを開始する意図を使用し、メモリの少ない携帯電話、コルドバ活動が殺されるかもしれない。 このシナリオではコルドバ活動が復元されると、イメージが表示されません。
|
||||
|
||||
### Firefox OS 癖
|
||||
|
||||
カメラのプラグインは現在、 [Web アクティビティ][2]を使用して実装されていた.
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS の癖
|
||||
|
||||
JavaScript を含む `alert()` 関数コールバックのいずれかの問題を引き起こすことができます。 内でアラートのラップ、 `setTimeout()` iOS イメージ ピッカーまたは完全が終了するまで、警告が表示されますポップ オーバーを許可します。
|
||||
|
||||
setTimeout(function() {//ここにあなたのことを行います !}, 0);
|
||||
|
||||
|
||||
### Windows Phone 7 の癖
|
||||
|
||||
ネイティブ カメラ アプリケーションを呼び出すと、デバイスが Zune を介して接続されている動作しませんし、エラー コールバックをトリガーします。
|
||||
|
||||
### Tizen の癖
|
||||
|
||||
Tizen のみをサポートしている、 `destinationType` の `Camera.DestinationType.FILE_URI` と `sourceType` の`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### 例
|
||||
|
||||
写真を撮るし、base64 エンコード イメージとして取得します。
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
写真を撮るし、イメージのファイルの場所を取得します。
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
カメラの設定をカスタマイズするオプションのパラメーター。
|
||||
|
||||
{品質: 75、destinationType: Camera.DestinationType.DATA_URL、sourceType: Camera.PictureSourceType.CAMERA、allowEdit: true の場合、encodingType: Camera.EncodingType.JPEG、targetWidth: 100、targetHeight: 100、popoverOptions: CameraPopoverOptions、saveToPhotoAlbum: false};
|
||||
|
||||
|
||||
### オプション
|
||||
|
||||
* **品質**: 0-100、100 がファイルの圧縮から損失なしで通常のフル解像度の範囲で表される、保存されたイメージの品質。 既定値は 50 です。 *(数)*(カメラの解像度についての情報が利用できないことに注意してください)。
|
||||
|
||||
* **destinationType**: 戻り値の形式を選択します。既定値は FILE_URI です。定義されている `navigator.camera.DestinationType` *(番号)*
|
||||
|
||||
Camera.DestinationType = {DATA_URL: 0、/base64 エンコード文字列 FILE_URI としてイメージを返す/: 1、//画像ファイル URI NATIVE_URI を返す: 2//戻り画像ネイティブ URI (例えば、資産ライブラリ://iOS またはコンテンツに://アンドロイド)};
|
||||
|
||||
|
||||
* **sourceType**: 画像のソースを設定します。既定値は、カメラです。定義されている `navigator.camera.PictureSourceType` *(番号)*
|
||||
|
||||
Camera.PictureSourceType = {フォト ライブラリ: 0, カメラ: 1、SAVEDPHOTOALBUM: 2};
|
||||
|
||||
|
||||
* **allowEdit**: 単純な選択の前に画像の編集を許可します。*(ブール値)*
|
||||
|
||||
* **encodingType**: 返されるイメージ ファイルのエンコーディングを選択します。デフォルトは JPEG です。定義されている `navigator.camera.EncodingType` *(番号)*
|
||||
|
||||
Camera.EncodingType = {JPEG: 0//戻る JPEG PNG イメージをエンコード: 1/返す PNG イメージをエンコードされた/};
|
||||
|
||||
|
||||
* **targetWidth**: スケール イメージにピクセル単位の幅。**TargetHeight**を使用する必要があります。縦横比は変わりません。*(数)*
|
||||
|
||||
* **targetHeight**: スケール イメージにピクセル単位の高さ。**TargetWidth**を使用する必要があります。縦横比は変わりません。*(数)*
|
||||
|
||||
* **mediaType**: から選択するメディアの種類を設定します。 場合にのみ働きます `PictureSourceType` は `PHOTOLIBRARY` または `SAVEDPHOTOALBUM` 。 定義されている `nagivator.camera.MediaType` *(番号)*
|
||||
|
||||
Camera.MediaType = {画像: 0//静止画のみを選択できます。 既定値です。 Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: キャプチャ中に、デバイスの向きを修正する画像を回転させます。*(ブール値)*
|
||||
|
||||
* **saveToPhotoAlbum**: キャプチャ後、デバイス上のフォト アルバムに画像を保存します。*(ブール値)*
|
||||
|
||||
* **popoverOptions**: iPad のポップ オーバーの場所を指定する iOS のみのオプションです。定義されています。`CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: (前面または背面側) を使用するカメラを選択します。既定値は戻るです。定義されている `navigator.camera.Direction` *(番号)*
|
||||
|
||||
Camera.Direction = {戻る: 0、//後ろ向きカメラ前部を使用: 1/フロントに面したカメラを使用して/};
|
||||
|
||||
|
||||
### アマゾン火 OSQuirks
|
||||
|
||||
* 任意 `cameraDirection` 背面写真で結果の値します。
|
||||
|
||||
* 無視、 `allowEdit` パラメーター。
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY``Camera.PictureSourceType.SAVEDPHOTOALBUM`両方のアルバムが表示されます同じ写真。
|
||||
|
||||
### Android の癖
|
||||
|
||||
* 任意 `cameraDirection` 背面写真で結果の値します。
|
||||
|
||||
* 無視、 `allowEdit` パラメーター。
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY``Camera.PictureSourceType.SAVEDPHOTOALBUM`両方のアルバムが表示されます同じ写真。
|
||||
|
||||
### ブラックベリー 10 癖
|
||||
|
||||
* 無視、 `quality` パラメーター。
|
||||
|
||||
* 無視、 `allowEdit` パラメーター。
|
||||
|
||||
* `Camera.MediaType`サポートされていません。
|
||||
|
||||
* 無視、 `correctOrientation` パラメーター。
|
||||
|
||||
* 無視、 `cameraDirection` パラメーター。
|
||||
|
||||
### Firefox OS 癖
|
||||
|
||||
* 無視、 `quality` パラメーター。
|
||||
|
||||
* `Camera.DestinationType`無視され、等しい `1` (イメージ ファイル URI)
|
||||
|
||||
* 無視、 `allowEdit` パラメーター。
|
||||
|
||||
* 無視、 `PictureSourceType` パラメーター (ユーザーが選択ダイアログ ウィンドウに)
|
||||
|
||||
* 無視します、`encodingType`
|
||||
|
||||
* 無視、 `targetWidth` と`targetHeight`
|
||||
|
||||
* `Camera.MediaType`サポートされていません。
|
||||
|
||||
* 無視、 `correctOrientation` パラメーター。
|
||||
|
||||
* 無視、 `cameraDirection` パラメーター。
|
||||
|
||||
### iOS の癖
|
||||
|
||||
* 設定 `quality` 一部のデバイスでメモリ不足エラーを避けるために 50 の下。
|
||||
|
||||
* 使用する場合 `destinationType.FILE_URI` 、写真、アプリケーションの一時ディレクトリに保存されます。アプリケーションの一時ディレクトリの内容は、アプリケーションの終了時に削除されます。
|
||||
|
||||
### Tizen の癖
|
||||
|
||||
* サポートされていないオプション
|
||||
|
||||
* 常にファイルの URI を返す
|
||||
|
||||
### Windows Phone 7 と 8 癖
|
||||
|
||||
* 無視、 `allowEdit` パラメーター。
|
||||
|
||||
* 無視、 `correctOrientation` パラメーター。
|
||||
|
||||
* 無視、 `cameraDirection` パラメーター。
|
||||
|
||||
* 無視、 `saveToPhotoAlbum` パラメーター。 重要: wp7/8 コルドバ カメラ API で撮影したすべての画像は携帯電話のカメラ巻き物に常にコピーします。 ユーザーの設定に応じて、これも、画像はその OneDrive に自動アップロードを意味できます。 イメージは意図したアプリより広い聴衆に利用できる可能性があります可能性があります。 場合は、このアプリケーションのブロッカー、msdn で説明されているように、CameraCaptureTask を実装する必要があります: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx>コメントにすることがありますもかアップ投票関連の問題を[課題追跡システム][3]で
|
||||
|
||||
* 無視、 `mediaType` のプロパティ `cameraOptions` として Windows Phone SDK には、フォト ライブラリからビデオを選択する方法は行いません。
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
エラー メッセージを提供する onError コールバック関数。
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### パラメーター
|
||||
|
||||
* **メッセージ**: メッセージは、デバイスのネイティブ コードによって提供されます。*(文字列)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
画像データを提供する onSuccess コールバック関数。
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### パラメーター
|
||||
|
||||
* **imagedata を扱う**: Base64 エンコード イメージのデータ、*または*画像ファイルによって URI の `cameraOptions` 効果。*(文字列)*
|
||||
|
||||
### 例
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
によって作成されたポップオーバーパン ダイアログへのハンドル`navigator.camera.getPicture`.
|
||||
|
||||
### メソッド
|
||||
|
||||
* **setPosition**: ポップ オーバーの位置を設定します。
|
||||
|
||||
### サポートされているプラットフォーム
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
ポップ オーバーの位置を設定します。
|
||||
|
||||
**パラメーター**:
|
||||
|
||||
* `cameraPopoverOptions`:、 `CameraPopoverOptions` の新しい位置を指定します。
|
||||
|
||||
### 例
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
iOS だけ指定パラメーターをポップ オーバーのアンカー要素の場所および矢印方向計算されたライブラリまたはアルバムから画像を選択するとき。
|
||||
|
||||
{x: 0, y: 32、幅: 320、高さ: 480、arrowDir: Camera.PopoverArrowDirection.ARROW_ANY};
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: ピクセルの x 座標画面要素にポップ オーバーのアンカーになります。*(数)*
|
||||
|
||||
* **y**: y ピクセル座標の画面要素にポップ オーバーのアンカーになります。*(数)*
|
||||
|
||||
* **幅**: ポップ オーバーのアンカーになる上の画面要素のピクセル単位の幅。*(数)*
|
||||
|
||||
* **高さ**: ポップ オーバーのアンカーになる上の画面要素のピクセル単位の高さ。*(数)*
|
||||
|
||||
* **arrowDir**: 方向のポップ オーバーで矢印をポイントする必要があります。定義されている `Camera.PopoverArrowDirection` *(番号)*
|
||||
|
||||
Camera.PopoverArrowDirection = {ARROW_UP: 1、/iOS UIPopoverArrowDirection 定数 ARROW_DOWN と一致する/: 2、ARROW_LEFT: 4、ARROW_RIGHT: 8、ARROW_ANY: 15};
|
||||
|
||||
|
||||
矢印の方向と、画面の向きを調整するポップ オーバーのサイズを変更可能性がありますに注意してください。 アンカー要素の位置を指定するときの方向の変化を考慮することを確認します。
|
||||
|
||||
## navigator.camera.cleanup
|
||||
|
||||
削除中間一時ストレージからカメラで撮影した写真。
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### 説明
|
||||
|
||||
削除を呼び出した後に一時記憶域に保存されている画像ファイルを中間 `camera.getPicture` 。 場合にのみ適用されるの値 `Camera.sourceType` に等しい `Camera.PictureSourceType.CAMERA` と、 `Camera.destinationType` に等しい`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### サポートされているプラットフォーム
|
||||
|
||||
* iOS
|
||||
|
||||
### 例
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
376
doc/ko/index.md
Normal file
376
doc/ko/index.md
Normal file
@@ -0,0 +1,376 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
이 플러그인 사진 촬영을 위한 및 시스템의 이미지 라이브러리에서 이미지를 선택 하기 위한 API를 제공 합니다.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
카메라를 사용 하 여 사진을 걸립니다 또는 소자의 이미지 갤러리에서 사진을 검색 합니다. 이미지 base64 인코딩으로 성공 콜백에 전달 됩니다 `String` , 또는 이미지 파일에 대 한 URI로. 방법 자체는 반환 합니다 한 `CameraPopoverHandle` 개체 파일 선택 popover를 재배치 하는 데 사용할 수 있습니다.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### 설명
|
||||
|
||||
`camera.getPicture`기능 스냅 사진을 사용자가 디바이스의 기본 카메라 응용 프로그램을 엽니다. 이 동작은 기본적으로 발생 할 때 `Camera.sourceType` 와 `Camera.PictureSourceType.CAMERA` . 일단 사용자 스냅 사진, 카메라 응용 프로그램 종료 하 고 응용 프로그램 복원 됩니다.
|
||||
|
||||
경우 `Camera.sourceType` 은 `Camera.PictureSourceType.PHOTOLIBRARY` 또는 `Camera.PictureSourceType.SAVEDPHOTOALBUM` , 사용자가 기존 이미지를 선택할 수 있도록 다음 대화 상자 표시. `camera.getPicture`반환 함수는 `CameraPopoverHandle` 장치 방향 변경 될 때 이미지 선택 대화 상자, 예를 들어, 위치를 변경 하려면 사용할 수 있는 개체.
|
||||
|
||||
반환 값에 전송 되는 `cameraSuccess` 콜백 함수에 따라 지정 된 다음 형식 중 하나에 `cameraOptions` :
|
||||
|
||||
* A `String` base64 인코딩된 사진 이미지를 포함 합니다.
|
||||
|
||||
* A `String` 로컬 저장소 (기본값)의 이미지 파일 위치를 나타내는.
|
||||
|
||||
할 수 있는 당신이 원하는대로 인코딩된 이미지 또는 URI, 예를 들면:
|
||||
|
||||
* 렌더링 이미지는 `<img>` 아래 예제와 같이 태그
|
||||
|
||||
* 로컬로 데이터를 저장 ( `LocalStorage` , [Lawnchair][1], 등.)
|
||||
|
||||
* 원격 서버에 데이터 게시
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**참고**: 더 새로운 장치에 사진 해상도 아주 좋은. 소자의 갤러리에서 선택 된 사진을 하지 낮은 품질에 관하여는 경우에는 `quality` 매개 변수를 지정 합니다. 일반적인 메모리 문제를 방지 하려면 설정 `Camera.destinationType` 을 `FILE_URI` 보다는`DATA_URL`.
|
||||
|
||||
### 지원 되는 플랫폼
|
||||
|
||||
* 아마존 화재 운영 체제
|
||||
* 안 드 로이드
|
||||
* 블랙베리 10
|
||||
* Firefox 운영 체제
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7과 8
|
||||
* 윈도우 8
|
||||
|
||||
### 아마존 화재 OS 단점
|
||||
|
||||
아마존 화재 OS 의도 사용 하 여 이미지 캡처 장치에서 카메라 활동을 시작 하 고 낮은 메모리와 휴대 전화에 코르 도우 바 활동 살해 수 있습니다. 코르도바 활동 복원 되 면이 시나리오에서는 이미지가 나타나지 않을 수 있습니다.
|
||||
|
||||
### 안 드 로이드 단점
|
||||
|
||||
안 드 로이드 의도 사용 하 여 이미지 캡처 장치에서 카메라 활동을 시작 하 고 낮은 메모리와 휴대 전화에 코르 도우 바 활동 살해 수 있습니다. 코르도바 활동 복원 되 면이 시나리오에서는 이미지가 나타나지 않을 수 있습니다.
|
||||
|
||||
### 파이어 폭스 OS 단점
|
||||
|
||||
카메라 플러그인은 현재 [웹 활동][2] 를 사용 하 여 구현.
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS 단점
|
||||
|
||||
자바 스크립트를 포함 하 여 `alert()` 함수는 콜백 중에 문제를 일으킬 수 있습니다. 내 경고를 래핑하는 `setTimeout()` 허용 iOS 이미지 피커 또는 popover를 완벽 하 게 경고를 표시 하기 전에 닫습니다:
|
||||
|
||||
setTimeout(function() {/ / 여기 짓!}, 0);
|
||||
|
||||
|
||||
### Windows Phone 7 단점
|
||||
|
||||
장치 Zune 통해 연결 된 동안 네이티브 카메라 응용 프로그램을 호출 하면 작동 하지 않습니다 하 고 오류 콜백 트리거합니다.
|
||||
|
||||
### Tizen 특수
|
||||
|
||||
Tizen만 지원 한 `destinationType` 의 `Camera.DestinationType.FILE_URI` 와 `sourceType` 의`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### 예를 들어
|
||||
|
||||
촬영 및 base64 인코딩 이미지로 검색:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
촬영 하 고 이미지의 파일 위치를 검색:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
카메라 설정을 사용자 지정 하는 선택적 매개 변수.
|
||||
|
||||
{품질: 75, destinationType: Camera.DestinationType.DATA_URL, sourceType: Camera.PictureSourceType.CAMERA, allowEdit: 사실, encodingType: Camera.EncodingType.JPEG, targetWidth: 100, targetHeight: 100, popoverOptions: CameraPopoverOptions, saveToPhotoAlbum: false};
|
||||
|
||||
|
||||
### 옵션
|
||||
|
||||
* **품질**: 범위 0-100, 100은 파일 압축에서 손실 없이 일반적으로 전체 해상도 저장된 된 이미지의 품질. 기본값은 50입니다. *(수)* (Note 카메라의 해상도 대 한 정보는 사용할 수 없습니다.)
|
||||
|
||||
* **destinationType**: 반환 값의 형식을 선택 합니다. 기본값은 FILE_URI입니다. 에 정의 된 `navigator.camera.DestinationType` *(수)*
|
||||
|
||||
Camera.DestinationType = {DATA_URL: 0, / / base64 인코딩된 문자열로 FILE_URI 이미지를 반환: 1, / / 이미지 파일 URI NATIVE_URI 반환: 2 / / 반환 이미지 기본 URI (예를 들어, 자산 라이브러리: / / iOS 또는 콘텐츠: / / 안 드 로이드에)};
|
||||
|
||||
|
||||
* **sourceType**: 그림의 소스를 설정 합니다. 기본값은 카메라입니다. 에 정의 된 `navigator.camera.PictureSourceType` *(수)*
|
||||
|
||||
Camera.PictureSourceType = {PHOTOLIBRARY: 0, 카메라: 1, SAVEDPHOTOALBUM: 2};
|
||||
|
||||
|
||||
* **allowEdit**: 선택 하기 전에 이미지의 간단한 편집을 허용 합니다. *(부울)*
|
||||
|
||||
* **encodingType**: 반환 된 이미지 파일의 인코딩을 선택 합니다. 기본값은 JPEG입니다. 에 정의 된 `navigator.camera.EncodingType` *(수)*
|
||||
|
||||
Camera.EncodingType = {JPEG: 0, / / 반환 JPEG로 인코딩된 PNG 이미지: 1 / 반환 PNG 이미지 인코딩 /};
|
||||
|
||||
|
||||
* **targetWidth**: 스케일 이미지를 픽셀 너비. **TargetHeight**와 함께 사용 해야 합니다. 가로 세로 비율이 일정 하 게 유지 합니다. *(수)*
|
||||
|
||||
* **targetHeight**: 스케일 이미지를 픽셀 단위로 높이. **TargetWidth**와 함께 사용 해야 합니다. 가로 세로 비율이 일정 하 게 유지 합니다. *(수)*
|
||||
|
||||
* **mediaType**:에서 선택 미디어 유형을 설정 합니다. 때에 작동 `PictureSourceType` 는 `PHOTOLIBRARY` 또는 `SAVEDPHOTOALBUM` . 에 정의 된 `nagivator.camera.MediaType` *(수)*
|
||||
|
||||
Camera.MediaType = {그림: 0, / / 아직 사진만의 선택을 허용 합니다. 기본입니다. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: 캡처 도중 장치의 방향에 대 한 해결 하기 위해 이미지를 회전 합니다. *(부울)*
|
||||
|
||||
* **saveToPhotoAlbum**: 캡처 후 장치에서 사진 앨범에 이미지를 저장 합니다. *(부울)*
|
||||
|
||||
* **popoverOptions**: iPad에 popover 위치를 지정 하는 iOS 전용 옵션. 에 정의 된`CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: (앞 이나 뒤로-연결)를 사용 하 여 카메라를 선택 하십시오. 기본값은 다시. 에 정의 된 `navigator.camera.Direction` *(수)*
|
||||
|
||||
Camera.Direction = {다시: 0, / / 앞 뒤 방향 카메라를 사용: 1 / 전면을 향하는 카메라를 사용 하 여 /};
|
||||
|
||||
|
||||
### 아마존 화재 OSQuirks
|
||||
|
||||
* 어떤 `cameraDirection` 다시 연결 사진에 결과 값.
|
||||
|
||||
* 무시는 `allowEdit` 매개 변수.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`그리고 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 둘 다 동일한 사진 앨범을 표시 합니다.
|
||||
|
||||
### 안 드 로이드 단점
|
||||
|
||||
* 어떤 `cameraDirection` 다시 연결 사진에 결과 값.
|
||||
|
||||
* 무시는 `allowEdit` 매개 변수.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`그리고 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 둘 다 동일한 사진 앨범을 표시 합니다.
|
||||
|
||||
### 블랙베리 10 단점
|
||||
|
||||
* 무시는 `quality` 매개 변수.
|
||||
|
||||
* 무시는 `allowEdit` 매개 변수.
|
||||
|
||||
* `Camera.MediaType`지원 되지 않습니다.
|
||||
|
||||
* 무시는 `correctOrientation` 매개 변수.
|
||||
|
||||
* 무시는 `cameraDirection` 매개 변수.
|
||||
|
||||
### 파이어 폭스 OS 단점
|
||||
|
||||
* 무시는 `quality` 매개 변수.
|
||||
|
||||
* `Camera.DestinationType`무시 되 고 `1` (이미지 파일 URI)
|
||||
|
||||
* 무시는 `allowEdit` 매개 변수.
|
||||
|
||||
* 무시는 `PictureSourceType` 매개 변수 (사용자가 선택 그것 대화 창에서)
|
||||
|
||||
* 무시 하는`encodingType`
|
||||
|
||||
* 무시는 `targetWidth` 와`targetHeight`
|
||||
|
||||
* `Camera.MediaType`지원 되지 않습니다.
|
||||
|
||||
* 무시는 `correctOrientation` 매개 변수.
|
||||
|
||||
* 무시는 `cameraDirection` 매개 변수.
|
||||
|
||||
### iOS 단점
|
||||
|
||||
* 설정 `quality` 일부 장치 메모리 오류를 피하기 위해 50 아래.
|
||||
|
||||
* 사용 하는 경우 `destinationType.FILE_URI` , 사진 응용 프로그램의 임시 디렉터리에 저장 됩니다. 응용 프로그램이 종료 될 때 응용 프로그램의 임시 디렉터리의 내용은 삭제 됩니다.
|
||||
|
||||
### Tizen 특수
|
||||
|
||||
* 지원 되지 않는 옵션
|
||||
|
||||
* 항상 파일 URI를 반환 합니다.
|
||||
|
||||
### Windows Phone 7, 8 특수
|
||||
|
||||
* 무시는 `allowEdit` 매개 변수.
|
||||
|
||||
* 무시는 `correctOrientation` 매개 변수.
|
||||
|
||||
* 무시는 `cameraDirection` 매개 변수.
|
||||
|
||||
* 무시는 `saveToPhotoAlbum` 매개 변수. 중요: 모든 이미지 API wp7/8 코르도바 카메라로 촬영 항상 복사 됩니다 휴대 전화의 카메라 롤에. 사용자의 설정에 따라이 또한 그들의 OneDrive에 자동 업로드 이미지는 의미. 이 잠재적으로 이미지는 당신의 애플 리 케이 션을 위한 보다 넓은 청중에 게 사용할 수 있는 의미. 이 경우 응용 프로그램에 대 한 차단, 당신은 msdn에 설명 대로 단말기를 구현 해야 합니다: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> 수 있습니다 또한 의견 또는 [이슈 트래커][3] 에서 업-투표 관련된 문제
|
||||
|
||||
* 무시는 `mediaType` 속성을 `cameraOptions` 으로 Windows Phone SDK PHOTOLIBRARY에서 비디오를 선택 하는 방법을 제공 하지 않습니다.
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
오류 메시지를 제공 하는 onError 콜백 함수.
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### 매개 변수
|
||||
|
||||
* **메시지**: 메시지는 장치의 네이티브 코드에 의해 제공 됩니다. *(문자열)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
이미지 데이터를 제공 하는 onSuccess 콜백 함수.
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### 매개 변수
|
||||
|
||||
* **imageData**: Base64 인코딩은 이미지 데이터, *또는* 이미지 파일에 따라 URI의 `cameraOptions` 적용. *(문자열)*
|
||||
|
||||
### 예를 들어
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
에 의해 만들어진 popover 대화에 대 한 핸들`navigator.camera.getPicture`.
|
||||
|
||||
### 메서드
|
||||
|
||||
* **setPosition**:는 popover의 위치를 설정 합니다.
|
||||
|
||||
### 지원 되는 플랫폼
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
popover의 위치를 설정 합니다.
|
||||
|
||||
**매개 변수**:
|
||||
|
||||
* `cameraPopoverOptions`:는 `CameraPopoverOptions` 새 위치를 지정 하는
|
||||
|
||||
### 예를 들어
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
iOS 전용 매개 변수 iPad의 보관 함 또는 앨범에서 이미지를 선택 하면 앵커 요소 위치와 화살표의 방향으로 popover 지정 하는.
|
||||
|
||||
{x: 0, y: 32, 폭: 320, 높이: 480, arrowDir: Camera.PopoverArrowDirection.ARROW_ANY};
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: x는 popover 앵커는 화면 요소의 픽셀 좌표. *(수)*
|
||||
|
||||
* **y**: y 픽셀 좌표는 popover 앵커는 화면 요소입니다. *(수)*
|
||||
|
||||
* **폭**: 폭 (픽셀)는 popover 앵커는 화면 요소. *(수)*
|
||||
|
||||
* **높이**: 높이 (픽셀)는 popover 앵커는 화면 요소. *(수)*
|
||||
|
||||
* **arrowDir**: 방향 화살표는 popover 가리켜야 합니다. 에 정의 된 `Camera.PopoverArrowDirection` *(수)*
|
||||
|
||||
Camera.PopoverArrowDirection = {ARROW_UP: 1, / / iOS UIPopoverArrowDirection 상수 ARROW_DOWN 일치: 2, ARROW_LEFT: 4, ARROW_RIGHT: 8, ARROW_ANY: 15};
|
||||
|
||||
|
||||
참고는 popover의 크기 조정 화살표 방향 및 화면 방향 변경 될 수 있습니다. 앵커 요소 위치를 지정 하는 경우 방향 변경에 대 한 계정에 있는지 확인 합니다.
|
||||
|
||||
## navigator.camera.cleanup
|
||||
|
||||
제거 임시 저장소에서 카메라로 찍은 사진을 중간.
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### 설명
|
||||
|
||||
제거 중간 전화 후 임시 저장소에 보관 된 이미지 파일 `camera.getPicture` . 경우에만 적용의 값 `Camera.sourceType` 와 `Camera.PictureSourceType.CAMERA` 와 `Camera.destinationType` 같음`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### 지원 되는 플랫폼
|
||||
|
||||
* iOS
|
||||
|
||||
### 예를 들어
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
412
doc/pl/index.md
Normal file
412
doc/pl/index.md
Normal file
@@ -0,0 +1,412 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
Wtyczka dostarcza API do robienia zdjęć i wybór zdjęć z biblioteki obrazu systemu.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
Pobiera zdjęcia za pomocą aparatu lub z galerii zdjęć w urządzeniu. Obraz jest przekazywany do funkcji zwrotnej success jako `String` kodowany za pomocą base64 lub jako URI do pliku. Sama metoda zwraca obiekt `CameraPopoverHandle`, który może służyć do zmiany położenia wyskakującego okna wyboru pliku.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### Opis
|
||||
|
||||
Funkcja `camera.getPicture` otwiera na urządzeniu domyślną aplikację aparatu, która pozwala użytkownikowi zrobić zdjęcie. To zachowanie występuje domyślnie, gdy `Camera.sourceType` jest równe `Camera.PictureSourceType.CAMERA`. Gdy użytkownik wykona zdjęcie, aplikacja aparatu zakończy działanie i nastąpi powrót do głównej aplikacji.
|
||||
|
||||
Jeśli `Camera.sourceType` jest równe `Camera.PictureSourceType.PHOTOLIBRARY` lub `Camera.PictureSourceType.SAVEDPHOTOALBUM`, wtedy zostanie wyświetlone okno dialogowe pozwalające użytkownikowi na wybór istniejącego obrazu. Funkcja `camera.getPicture` zwraca obiekt `CameraPopoverHandle`, który obsługuje zmianę położenia okna wyboru obrazu, np. po zmianie orientacji urządzenia.
|
||||
|
||||
Zwracana wartość jest wysyłana do funkcji zwrotnej `cameraSuccess` w jednym z następujących formatów, w zależności od określonego parametru `cameraOptions`:
|
||||
|
||||
* Jako `String` zawierający obraz zakodowany przy użyciu base64.
|
||||
|
||||
* Jako `String` reprezentujący lokację pliku obrazu w lokalnym magazynie (domyślnie).
|
||||
|
||||
Z zakodowanym obrazem lub URI możesz zrobić co zechcesz, na przykład:
|
||||
|
||||
* Przedstawia obraz w tagu `<img>`, jak w przykładzie poniżej
|
||||
|
||||
* Zapisuje dane lokalnie (`LocalStorage`, [Lawnchair][1], etc.)
|
||||
|
||||
* Wysyła dane na zdalny serwer
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**Uwaga**: zdjęcie rozdzielczości na nowsze urządzenia jest bardzo dobry. Zdjęcia wybrane z galerii urządzenia nie są skalowane do niższej jakości, nawet jeśli określono parametr `quality`. Aby uniknąć typowych problemów z pamięcią lepiej ustawić`Camera.destinationType` na `FILE_URI` niż `DATA_URL`.
|
||||
|
||||
### Obsługiwane platformy
|
||||
|
||||
* Amazon ogień OS
|
||||
* Android
|
||||
* Jeżyna 10
|
||||
* Firefox OS
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7 i 8
|
||||
* Windows 8
|
||||
|
||||
### Amazon ogień OS dziwactwa
|
||||
|
||||
Amazon ogień OS używa intencje do rozpoczęcia działalności aparatu na urządzenie do przechwytywania obrazów, i na telefony z pamięci, Cordova aktywność może zostać zabity. W takim scenariuszu obrazy mogą nie być wyświetlane po przywróceniu aktywności Cordovy.
|
||||
|
||||
### Android dziwactwach
|
||||
|
||||
Android używa intencje do rozpoczęcia działalności aparatu na urządzenie do przechwytywania obrazów, i na telefony z pamięci, Cordova aktywność może zostać zabity. W tym scenariuszu obraz mogą nie być wyświetlane po przywróceniu aktywności Cordova.
|
||||
|
||||
### Firefox OS dziwactwa
|
||||
|
||||
Aparat plugin jest obecnie implementowane za pomocą [Działania sieci Web][2].
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS dziwactwa
|
||||
|
||||
Tym JavaScript `alert()` w jednej z wywołania zwrotnego funkcji może powodować problemy. Owinąć alert w `setTimeout()` umożliwia wybór obrazu iOS lub popover całkowicie zamknąć zanim wyświetli alert:
|
||||
|
||||
setTimeout(function() {
|
||||
// do your thing here!
|
||||
}, 0);
|
||||
|
||||
|
||||
### Windows Phone 7 dziwactwa
|
||||
|
||||
Wywoływanie aparat native aplikacji, podczas gdy urządzenie jest podłączone przez Zune nie działa i powoduje błąd wywołania zwrotnego.
|
||||
|
||||
### Tizen dziwactwa
|
||||
|
||||
Tizen obsługuje tylko `destinationType` z `Camera.DestinationType.FILE_URI` i `sourceType` z`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### Przykład
|
||||
|
||||
Zrób zdjęcie i pobrać go jako kodowane algorytmem base64 obrazu:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
Zrób zdjęcie i pobrać lokalizacji pliku obrazu:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
Opcjonalne parametry, aby dostosować ustawienia aparatu.
|
||||
|
||||
{ quality : 75,
|
||||
destinationType : Camera.DestinationType.DATA_URL,
|
||||
sourceType : Camera.PictureSourceType.CAMERA,
|
||||
allowEdit : true,
|
||||
encodingType: Camera.EncodingType.JPEG,
|
||||
targetWidth: 100,
|
||||
targetHeight: 100,
|
||||
popoverOptions: CameraPopoverOptions,
|
||||
saveToPhotoAlbum: false };
|
||||
|
||||
|
||||
### Opcje
|
||||
|
||||
* **quality**: Jakość zapisywanego obrazu, wyrażona w przedziale 0-100, gdzie 100 zazwyczaj jest maksymalną rozdzielczością bez strat w czasie kompresji pliku. Wartością domyślną jest 50. *(Liczba)* (Należy zauważyć, że informacje o rozdzielczość kamery jest niedostępny).
|
||||
|
||||
* **destinationType**: Wybierz format zwracanej wartości. Wartością domyślną jest FILE_URI. Zdefiniowane w `navigator.camera.DestinationType` *(numer)*
|
||||
|
||||
Camera.DestinationType = {
|
||||
DATA_URL : 0, // Return image as base64-encoded string
|
||||
FILE_URI : 1, // Return image file URI
|
||||
NATIVE_URI : 2 // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
|
||||
};
|
||||
|
||||
|
||||
* **sourceType**: Ustaw źródło obrazu. Wartością domyślną jest aparat fotograficzny. Zdefiniowane w `navigator.camera.PictureSourceType` *(numer)*
|
||||
|
||||
Camera.PictureSourceType = {
|
||||
PHOTOLIBRARY : 0,
|
||||
CAMERA : 1,
|
||||
SAVEDPHOTOALBUM : 2
|
||||
};
|
||||
|
||||
|
||||
* **allowEdit**: Pozwala na prostą edycję obrazu przed zaznaczeniem. *(Boolean)*
|
||||
|
||||
* **encodingType**: Wybierz plik obrazu zwracany jest kodowanie. Domyślnie jest JPEG. Zdefiniowane w `navigator.camera.EncodingType` *(numer)*
|
||||
|
||||
Camera.EncodingType = {
|
||||
JPEG : 0, // Return JPEG encoded image
|
||||
PNG : 1 // Return PNG encoded image
|
||||
};
|
||||
|
||||
|
||||
* **targetWidth**: Szerokość w pikselach skalowanego obrazu. Musi być użyte z **targetHeight**. Współczynnik proporcji pozostaje stały. *(Liczba)*
|
||||
|
||||
* **targetHeight**: Wysokość w pikselach skalowanego obrazu. Musi być użyte z **targetWidth**. Współczynnik proporcji pozostaje stały. *(Liczba)*
|
||||
|
||||
* **mediaType**: Ustawia typ nośnika, z którego będzie wybrany. Działa tylko wtedy, gdy `PictureSourceType` jest `PHOTOLIBRARY` lub `SAVEDPHOTOALBUM`. Zdefiniowane w `nagivator.camera.MediaType` *(Liczba)*
|
||||
|
||||
Camera.MediaType = {
|
||||
PICTURE: 0, // umożliwia wybór tylko zdjęcia. DOMYŚLNIE. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: Obraca obraz aby skorygować orientację urządzenia podczas przechwytywania. *(Boolean)*
|
||||
|
||||
* **saveToPhotoAlbum**: Po przechwyceniu zapisuje na urządzeniu obraz w albumie na zdjęcia. *(Boolean)*
|
||||
|
||||
* **popoverOptions**: Opcja tylko dla platformy iOS, która określa położenie wyskakującego okna na iPadzie. Zdefiniowane w `CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: Wybierz aparat do korzystania (lub z powrotem przodem). Wartością domyślną jest z powrotem. Zdefiniowane w `navigator.camera.Direction` *(numer)*
|
||||
|
||||
Camera.Direction = {
|
||||
BACK : 0, // Używa tylnej kamery
|
||||
FRONT : 1 // Używa przedniej kamery
|
||||
};
|
||||
|
||||
|
||||
### Amazon ognia OSQuirks
|
||||
|
||||
* Jakakolwiek wartość w `cameraDirection` skutkuje użyciem tylnej kamery.
|
||||
|
||||
* Parametr `allowEdit` jest ignorowany.
|
||||
|
||||
* Oba parametry `Camera.PictureSourceType.PHOTOLIBRARY` oraz `Camera.PictureSourceType.SAVEDPHOTOALBUM` wyświetlają ten sam album ze zdjęciami.
|
||||
|
||||
### Android dziwactwa
|
||||
|
||||
* Wszelkie `cameraDirection` wartość wyników w zdjęcie tyłu do kierunku jazdy.
|
||||
|
||||
* Ignoruje `allowEdit` parametr.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`i `Camera.PictureSourceType.SAVEDPHOTOALBUM` wyświetlać ten sam album zdjęć.
|
||||
|
||||
### Jeżyna 10 dziwactwa
|
||||
|
||||
* Parametr `quality` jest ignorowany.
|
||||
|
||||
* Ignoruje `allowEdit` parametr.
|
||||
|
||||
* `Camera.MediaType`nie jest obsługiwane.
|
||||
|
||||
* Ignoruje `correctOrientation` parametr.
|
||||
|
||||
* Ignoruje `cameraDirection` parametr.
|
||||
|
||||
### Firefox OS dziwactwa
|
||||
|
||||
* Ignoruje `quality` parametr.
|
||||
|
||||
* `Camera.DestinationType`jest ignorowane i jest równa `1` (plik obrazu URI)
|
||||
|
||||
* Ignoruje `allowEdit` parametr.
|
||||
|
||||
* Ignoruje `PictureSourceType` parametr (użytkownik wybiera go w oknie dialogowym)
|
||||
|
||||
* Ignoruje`encodingType`
|
||||
|
||||
* Ignoruje `targetWidth` i`targetHeight`
|
||||
|
||||
* `Camera.MediaType`nie jest obsługiwane.
|
||||
|
||||
* Ignoruje `correctOrientation` parametr.
|
||||
|
||||
* Ignoruje `cameraDirection` parametr.
|
||||
|
||||
### iOS dziwactwa
|
||||
|
||||
* Ustaw `quality` poniżej 50 aby uniknąć błędów pamięci na niektórych urządzeniach.
|
||||
|
||||
* Podczas korzystania z `destinationType.FILE_URI` , zdjęcia są zapisywane w katalogu tymczasowego stosowania. Zawartość katalogu tymczasowego stosowania jest usuwany po zakończeniu aplikacji.
|
||||
|
||||
### Osobliwości Tizen
|
||||
|
||||
* opcje nie są obsługiwane
|
||||
|
||||
* zawsze zwraca FILE URI
|
||||
|
||||
### Windows Phone 7 i 8 dziwactwa
|
||||
|
||||
* Ignoruje `allowEdit` parametr.
|
||||
|
||||
* Ignoruje `correctOrientation` parametr.
|
||||
|
||||
* Ignoruje `cameraDirection` parametr.
|
||||
|
||||
* Ignoruje `saveToPhotoAlbum` parametr. Ważne: Wszystkie zdjęcia zrobione aparatem wp7/8 cordova API są zawsze kopiowane do telefonu w kamerze. W zależności od ustawień użytkownika może to też oznaczać że obraz jest automatycznie przesłane do ich OneDrive. Potencjalnie może to oznaczać, że obraz jest dostępne dla szerszego grona odbiorców niż Twoja aplikacja przeznaczona. Jeśli ten bloker aplikacji, trzeba będzie wdrożenie CameraCaptureTask, opisane na msdn: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> można także komentarz lub górę głosowanie powiązanych kwestii w [śledzenia błędów][3]
|
||||
|
||||
* Ignoruje `mediaType` Właściwość `cameraOptions` jako SDK Windows Phone nie umożliwiają wybór filmów z PHOTOLIBRARY.
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
funkcja wywołania zwrotnego PrzyBłędzie, która zawiera komunikat o błędzie.
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### Parametry
|
||||
|
||||
* **message**: Natywny kod komunikatu zapewniany przez urządzenie. *(Ciąg znaków)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
onSuccess funkcji wywołania zwrotnego, który dostarcza dane obrazu.
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### Parametry
|
||||
|
||||
* **imageData**: Dane obrazu kodowane przy pomocy Base64 *lub* URI pliku obrazu, w zależności od użycia `cameraOptions`. *(Ciąg znaków)*
|
||||
|
||||
### Przykład
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
Uchwyt do okna dialogowego popover, stworzony przez`navigator.camera.getPicture`.
|
||||
|
||||
### Metody
|
||||
|
||||
* **setPosition**: Ustawia pozycję wyskakującego okna.
|
||||
|
||||
### Obsługiwane platformy
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
Ustaw pozycję popover.
|
||||
|
||||
**Parametry**:
|
||||
|
||||
* `cameraPopoverOptions`: `CameraPopoverOptions`, która określa nową pozycję
|
||||
|
||||
### Przykład
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
tylko do iOS parametrami, które określić kotwicy element lokalizacji i strzałka kierunku popover, przy wyborze zdjęć z iPad biblioteki lub album.
|
||||
|
||||
{ x : 0,
|
||||
y : 32,
|
||||
width : 320,
|
||||
height : 480,
|
||||
arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
|
||||
};
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: współrzędna piksela x elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
|
||||
|
||||
* **y**: współrzędna piksela y elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
|
||||
|
||||
* **width**: szerokość w pikselach elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
|
||||
|
||||
* **height**: wysokość w pikselach elementu ekranu, na którym zakotwiczone jest wyskakujące okno. *(Liczba)*
|
||||
|
||||
* **arrowDir**: Kierunek, który powinna wskazywać strzałka na wyskakującym oknie. Zdefiniowane w `Camera.PopoverArrowDirection` *(Liczba)*
|
||||
|
||||
Camera.PopoverArrowDirection = {
|
||||
ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants
|
||||
ARROW_DOWN : 2,
|
||||
ARROW_LEFT : 4,
|
||||
ARROW_RIGHT : 8,
|
||||
ARROW_ANY : 15
|
||||
};
|
||||
|
||||
|
||||
Należy pamiętać, że rozmiar popover może zmienić aby zmienić kierunek strzałki i orientacji ekranu. Upewnij się uwzględnić zmiany orientacji podczas określania położenia elementu kotwicy.
|
||||
|
||||
## Navigator.Camera.CleanUp
|
||||
|
||||
Usuwa pośrednie zdjęcia zrobione przez aparat z czasowego składowania.
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### Opis
|
||||
|
||||
Usuwa pośrednie plików obrazów, które są przechowywane w pamięci tymczasowej po `camera.getPicture` . Stosuje się tylko wtedy, gdy wartość `Camera.sourceType` jest równa `Camera.PictureSourceType.CAMERA` i `Camera.destinationType` jest równa`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### Obsługiwane platformy
|
||||
|
||||
* iOS
|
||||
|
||||
### Przykład
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
396
doc/ru/index.md
Normal file
396
doc/ru/index.md
Normal file
@@ -0,0 +1,396 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
Этот плагин предоставляет API для съемки и для выбора изображения из библиотеки изображений системы.
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
Снимает фотографию с помощью камеры, или получает фотографию из галереи изображений устройства. Изображение передается на функцию обратного вызова успешного завершения как `String` в base64-кодировке, или как URI указывающего на файл изображения. Метод возвращает объект `CameraPopoverHandle`, который может использоваться для перемещения инструмента выбора файла.
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### Описание
|
||||
|
||||
Функция `camera.getPicture` открывает приложение камеры устройства, которое позволяет снимать фотографии. Это происходит по умолчанию, когда `Camera.sourceType` равно `Camera.PictureSourceType.CAMERA` . Как только пользователь делает снимок,приложение камеры закрывается и приложение восстанавливается.
|
||||
|
||||
Если `Camera.sourceType` является `Camera.PictureSourceType.PHOTOLIBRARY` или `Camera.PictureSourceType.SAVEDPHOTOALBUM` , то показывается диалоговое окно, которое позволяет пользователям выбрать существующее изображение. Функция `camera.getPicture` возвращает объект `CameraPopoverHandle` объект, который может использоваться для перемещения диалога выбора изображения, например, при изменении ориентации устройства.
|
||||
|
||||
Возвращаемое значение отправляется в функцию обратного вызова `cameraSuccess` в одном из следующих форматов, в зависимости от параметра `cameraOptions` :
|
||||
|
||||
* A объект `String` содержащий фото изображение в base64-кодировке.
|
||||
|
||||
* Объект `String` представляющий расположение файла изображения на локальном хранилище (по умолчанию).
|
||||
|
||||
Вы можете сделать все, что угодно вы хотите с закодированным изображением или URI, например:
|
||||
|
||||
* Отобразить изображение с помощью тега `<img>`, как показано в примере ниже
|
||||
|
||||
* Сохранять данные локально (`LocalStorage`, [Lawnchair][1], и т.д.)
|
||||
|
||||
* Отправлять данные на удаленный сервер
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**Примечание**: разрешение фото на более новых устройствах является достаточно хорошим. Фотографии из галереи устройства не масштабируются к более низкому качеству, даже если указан параметр `quality`. Чтобы избежать общих проблем с памятью, установите `Camera.destinationType` в `FILE_URI` вместо `DATA_URL`.
|
||||
|
||||
### Поддерживаемые платформы
|
||||
|
||||
* Amazon Fire ОС
|
||||
* Android
|
||||
* BlackBerry 10
|
||||
* Firefox OS
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7 и 8
|
||||
* Windows 8
|
||||
|
||||
### Особенности Amazon Fire OS
|
||||
|
||||
Amazon Fire OS используют намерения для запуска активности камеры на устройстве для съемки фотографий, и на устройствах с низким объемам памяти, активность Cordova может быть завершена. В этом случае изображение может не появиться при восстановлении активности Cordova.
|
||||
|
||||
### Особенности Android
|
||||
|
||||
Android использует намерения начать действие камеры на устройстве для захвата изображения, и на телефонах с низкой памяти, могут быть убиты Cordova деятельность. В этом случае изображение не может появиться, когда Кордова активность восстанавливается.
|
||||
|
||||
### Особенности Firefox OS
|
||||
|
||||
Модуль камеры в настоящее время реализуется с помощью [Веб деятельности][2].
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### Особенности iOS
|
||||
|
||||
Включая JavaScript `alert()` в любом из обратного вызова функции может вызвать проблемы. Оберните оповещение в `setTimeout()` выбора изображений iOS или пирог полностью закрыть прежде чем отображает оповещения:
|
||||
|
||||
setTimeout(function() {/ / ваши вещи!}, 0);
|
||||
|
||||
|
||||
### Особенности Windows Phone 7
|
||||
|
||||
Вызов приложения родной камеры, в то время как устройство подключается через Zune не работает и инициирует обратный вызов для ошибки.
|
||||
|
||||
### Особенности Tizen
|
||||
|
||||
Tizen поддерживает только `destinationType` из `Camera.DestinationType.FILE_URI` и `sourceType` из`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### Пример
|
||||
|
||||
Сфотографироваться и получить его в виде изображения в кодировке base64:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
Сфотографироваться и получить расположение файла изображения:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
Необязательные параметры для настройки параметров камеры.
|
||||
|
||||
{ quality : 75,
|
||||
destinationType : Camera.DestinationType.DATA_URL,
|
||||
sourceType : Camera.PictureSourceType.CAMERA,
|
||||
allowEdit : true,
|
||||
encodingType: Camera.EncodingType.JPEG,
|
||||
targetWidth: 100,
|
||||
targetHeight: 100,
|
||||
popoverOptions: CameraPopoverOptions,
|
||||
saveToPhotoAlbum: false };
|
||||
|
||||
|
||||
### Параметры
|
||||
|
||||
* **quality**: качество сохраняемого изображения, выражается в виде числа в диапазоне от 0 до 100, где 100 является обычно полным изображением без потери качества при сжатии. Значение по умолчанию — 50. *(Число)* (Обратите внимание, что информация о разрешение камеры недоступна.)
|
||||
|
||||
* **параметр destinationType**: выберите формат возвращаемого значения. Значение по умолчанию — FILE_URI. Определяется в `navigator.camera.DestinationType` *(число)*
|
||||
|
||||
Camera.DestinationType = {
|
||||
DATA_URL: 0, / / возвращение изображения в base64-кодировке строки
|
||||
FILE_URI: 1, / / возврат файла изображения URI
|
||||
NATIVE_URI: 2 / / возвращение образа собственного URI (например, Библиотека активов: / / на iOS или содержание: / / на андроиде)
|
||||
};
|
||||
|
||||
|
||||
* **тип источника**: установить источник рисунка. По умолчанию используется камера. Определяется в `navigator.camera.PictureSourceType` *(число)*
|
||||
|
||||
Camera.PictureSourceType = {
|
||||
PHOTOLIBRARY: 0,
|
||||
CAMERA: 1,
|
||||
SAVEDPHOTOALBUM: 2
|
||||
};
|
||||
|
||||
|
||||
* **allowEdit**: позволит редактирование изображения средствами телефона перед окончательным выбором изображения. *(Логический)*
|
||||
|
||||
* **Тип_шифрования**: выберите возвращенный файл в кодировку. Значение по умолчанию — JPEG. Определяется в `navigator.camera.EncodingType` *(число)*
|
||||
|
||||
Camera.EncodingType = {
|
||||
JPEG: 0, // возвращает изображение в формате JPEG
|
||||
PNG: 1 // возвращает рисунок в формате PNG
|
||||
};
|
||||
|
||||
|
||||
* **targetWidth**: ширина изображения в пикселах к которой необходимо осуществить масштабирование. Это значение должно использоваться совместно с **targetHeight**. Пропорции изображения останутся неизменными. *(Число)*
|
||||
|
||||
* **targetHeight**: высота изображения в пикселах к которой необходимо осуществить масштабирование. Это значение должно использоваться совместно с **targetWidth**. Пропорции изображения останутся неизменными. *(Число)*
|
||||
|
||||
* **mediaType**: Установите источник получения изображения, из которого надо выбрать изображение. Работает только если `PictureSourceType` равно `PHOTOLIBRARY` или `SAVEDPHOTOALBUM` . Определено в `nagivator.camera.MediaType` *(число)*
|
||||
|
||||
Camera.MediaType = {
|
||||
PICTURE: 0, / / разрешить выбор только сохраненных изображений. DEFAULT. Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: вращает изображение, чтобы внести исправления к ориентации устройства во время захвата. *(Логический)*
|
||||
|
||||
* **saveToPhotoAlbum**: сохранить изображение в фотоальбом на устройстве после захвата. *(Логический)*
|
||||
|
||||
* **popoverOptions**: только для iOS параметры, которые определяют местоположение инструмента в iPad. Определены в`CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: выбрать камеру для использования (передней или задней стороне). Значение по умолчанию — обратно. Определяется в `navigator.camera.Direction` *(число)*
|
||||
|
||||
Camera.Direction = {обратно: 0, / / использовать обратно, стоящих перед камерой фронт: 1 / / использовать фронтальная камера};
|
||||
|
||||
|
||||
### Особенности Amazon Fire OS
|
||||
|
||||
* Любое значение `cameraDirection` возвращает фотографию сделанную задней камерой.
|
||||
|
||||
* Игнорирует `allowEdit` параметр.
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`и `Camera.PictureSourceType.SAVEDPHOTOALBUM` оба отображения же фотоальбом.
|
||||
|
||||
### Android причуды
|
||||
|
||||
* Любой `cameraDirection` значение результатов на задней стороне фотографии.
|
||||
|
||||
* Игнорирует параметр `allowEdit`.
|
||||
|
||||
* Оба параметра `Camera.PictureSourceType.PHOTOLIBRARY` и `Camera.PictureSourceType.SAVEDPHOTOALBUM` отображают один и тот же фотоальбом.
|
||||
|
||||
### Особенности BlackBerry 10
|
||||
|
||||
* Игнорирует `quality` параметр.
|
||||
|
||||
* Игнорирует `allowEdit` параметр.
|
||||
|
||||
* `Camera.MediaType`не поддерживается.
|
||||
|
||||
* Игнорирует `correctOrientation` параметр.
|
||||
|
||||
* Игнорирует `cameraDirection` параметр.
|
||||
|
||||
### Firefox OS причуды
|
||||
|
||||
* Игнорирует `quality` параметр.
|
||||
|
||||
* Значение `Camera.DestinationType` игнорируется и равно `1` (URI для файла изображения)
|
||||
|
||||
* Игнорирует параметр `allowEdit`.
|
||||
|
||||
* Игнорирует параметр `PictureSourceType` (пользователь выбирает его в диалоговом окне)
|
||||
|
||||
* Игнорирует параметр `encodingType`
|
||||
|
||||
* Игнорирует `targetWidth` и `targetHeight`
|
||||
|
||||
* `Camera.MediaType` не поддерживается.
|
||||
|
||||
* Игнорирует параметр `correctOrientation`.
|
||||
|
||||
* Игнорирует параметр `cameraDirection`.
|
||||
|
||||
### Особенности iOS
|
||||
|
||||
* Установите `quality` ниже 50, для того чтобы избежать ошибок памяти на некоторых устройствах.
|
||||
|
||||
* При использовании `destinationType.FILE_URI` , фотографии сохраняются во временном каталоге приложения. Содержимое приложения временного каталога удаляется при завершении приложения.
|
||||
|
||||
### Особенности Tizen
|
||||
|
||||
* options, не поддерживается
|
||||
|
||||
* всегда возвращает URI файла
|
||||
|
||||
### Windows Phone 7 и 8 причуды
|
||||
|
||||
* Игнорирует параметр `allowEdit`.
|
||||
|
||||
* Игнорирует параметр `correctOrientation`.
|
||||
|
||||
* Игнорирует параметр `cameraDirection`.
|
||||
|
||||
* Игнорирует `saveToPhotoAlbum` параметр. Важно: Все изображения, снятые камерой wp7/8 cordova API всегда копируются в рулон камеры телефона. В зависимости от параметров пользователя это также может означать, что изображение автоматически загружены на их OneDrive. Потенциально это может означать, что этот образ доступен для более широкой аудитории, чем ваше приложение предназначено. Если этот блокатор для вашего приложения, вам нужно будет осуществить CameraCaptureTask, как описано на сайте msdn: <http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx> вы можете также комментарий или вверх голосование связанный с этим вопрос [отслеживания][3]
|
||||
|
||||
* Игнорирует `mediaType` свойство `cameraOptions` как Windows Phone SDK не обеспечивает способ выбора видео от PHOTOLIBRARY.
|
||||
|
||||
[3]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
Функция обратного вызова onError, который предоставляет сообщение об ошибке.
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### Параметры
|
||||
|
||||
* **message**: сообщение об ошибке предоставляемое платформой устройства. *(Строка)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
onSuccess обратного вызова функция, которая предоставляет данные изображения.
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### Параметры
|
||||
|
||||
* **imageData**: Данные изображения в Base64 кодировке, *или* URI, в зависимости от применяемых параметров `cameraOptions`. *(Строка)*
|
||||
|
||||
### Пример
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
Дескриптор диалогового окна инструмента, созданного`navigator.camera.getPicture`.
|
||||
|
||||
### Методы
|
||||
|
||||
* **setPosition**: Задайте положение инструмента выбора изображения.
|
||||
|
||||
### Поддерживаемые платформы
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
Задайте положение инструмента.
|
||||
|
||||
**Параметры**:
|
||||
|
||||
* `cameraPopoverOptions`: Объект `CameraPopoverOptions`, определяющий новое положение
|
||||
|
||||
### Пример
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
только для iOS параметры, указывающие якорь элемент расположение и стрелкой направление инструмента при выборе изображений из библиотеки iPad или альбома.
|
||||
|
||||
{x: 0, y: 32, ширина: 320, высота: 480, arrowDir: Camera.PopoverArrowDirection.ARROW_ANY};
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: x координата в пикселях элемента экрана, на котором закрепить инструмента. *(Число)*
|
||||
|
||||
* **x**: y координата в пикселях элемента экрана, на котором закрепить инструмента. *(Число)*
|
||||
|
||||
* **width**: ширина в пикселях элемента экрана, на котором закрепить инструмент выбора изображения. *(Число)*
|
||||
|
||||
* **height**: высота в пикселях элемента экрана, на котором закрепить инструмент выбора изображения. *(Число)*
|
||||
|
||||
* **arrowDir**: Направление, куда должна указывать стрелка на инструменте. Определено в `Camera.PopoverArrowDirection` *(число)*
|
||||
|
||||
Camera.PopoverArrowDirection = {ARROW_UP: 1, / / матчи iOS UIPopoverArrowDirection константы ARROW_DOWN: 2, ARROW_LEFT: 4, ARROW_RIGHT: 8, ARROW_ANY: 15};
|
||||
|
||||
|
||||
Обратите внимание, что размер инструмента может измениться для регулировки в направлении стрелки и ориентации экрана. Убедитесь в том, что для учета изменения ориентации при указании расположения элемента привязки.
|
||||
|
||||
## navigator.camera.cleanup
|
||||
|
||||
Удаляет промежуточные фотографии, снятые на камеру от временного хранения.
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### Описание
|
||||
|
||||
Удаляет промежуточные файлы изображений, которые хранятся в временного хранения после вызова метода `camera.getPicture` . Применяется только тогда, когда значение `Camera.sourceType` равно `Camera.PictureSourceType.CAMERA` и `Camera.destinationType` равно`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### Поддерживаемые платформы
|
||||
|
||||
* iOS
|
||||
|
||||
### Пример
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
377
doc/zh/index.md
Normal file
377
doc/zh/index.md
Normal file
@@ -0,0 +1,377 @@
|
||||
<!---
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
# org.apache.cordova.camera
|
||||
|
||||
這個外掛程式提供了一個 API,拍照,從系統的圖像庫中選擇圖像。
|
||||
|
||||
cordova plugin add org.apache.cordova.camera
|
||||
|
||||
|
||||
## navigator.camera.getPicture
|
||||
|
||||
需要使用的相機,一張照片或從設備的圖像庫檢索一張照片。 圖像作為 base64 編碼傳遞成功回檔到 `String` ,或作為影像檔的 URI。 該方法本身返回 `CameraPopoverHandle` 可以用於重新置放檔選擇彈出的物件。
|
||||
|
||||
navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
|
||||
|
||||
|
||||
### 說明
|
||||
|
||||
`camera.getPicture`函數將打開該設備的預設攝像頭應用程式,使使用者能夠對齊圖片。 預設情況下,會發生此行為時 `Camera.sourceType` 等於 `Camera.PictureSourceType.CAMERA` 。 一旦使用者快照照片、 攝像頭應用程式關閉,並恢復該應用程式。
|
||||
|
||||
如果 `Camera.sourceType` 是 `Camera.PictureSourceType.PHOTOLIBRARY` 或 `Camera.PictureSourceType.SAVEDPHOTOALBUM` ,然後允許使用者選擇一個現有圖像對話方塊的顯示。 `camera.getPicture`函數返回 `CameraPopoverHandle` 物件,可用於設備方向更改時重新置放圖像選擇對話方塊,例如。
|
||||
|
||||
傳回值發送到 `cameraSuccess` 回呼函數,根據指定的以下格式之一 `cameraOptions` :
|
||||
|
||||
* A `String` 包含的 base64 編碼的照片圖像。
|
||||
|
||||
* A `String` 表示在本機存放區 (預設值) 上的影像檔位置。
|
||||
|
||||
你可以做任何你想與編碼的圖像或 URI,例如:
|
||||
|
||||
* 呈現在圖像 `<img>` 標記,如下面的示例所示
|
||||
|
||||
* 保存本地的資料 ( `LocalStorage` , [Lawnchair][1],等等.)
|
||||
|
||||
* 將資料發佈到遠端伺服器
|
||||
|
||||
[1]: http://brianleroux.github.com/lawnchair/
|
||||
|
||||
**注**: 在較新的設備上的照片解析度是相當好。 從設備的庫選擇了照片不到較低的品質,壓縮螢幕使即使 `quality` 指定參數。 為了避免常見的記憶體問題,設置 `Camera.destinationType` 到 `FILE_URI` 而不是`DATA_URL`.
|
||||
|
||||
### 支援的平臺
|
||||
|
||||
* 亞馬遜火 OS
|
||||
* Android 系統
|
||||
* 黑莓 10
|
||||
* 火狐瀏覽器作業系統
|
||||
* iOS
|
||||
* Tizen
|
||||
* Windows Phone 7 和 8
|
||||
* Windows 8
|
||||
|
||||
### 亞馬遜火 OS 怪癖
|
||||
|
||||
亞馬遜火 OS 使用意向啟動捕獲圖像,在設備上的相機活動和與低記憶體手機,科爾多瓦活動可能被殺。 在此方案中,可能不會顯示圖像還原科爾多瓦活動時。
|
||||
|
||||
### Android 的怪癖
|
||||
|
||||
Android 使用意向啟動捕獲圖像,在設備上的相機活動和與低記憶體手機,科爾多瓦活動可能被殺。 在此方案中,可能不會顯示圖像還原科爾多瓦活動時。
|
||||
|
||||
### 火狐瀏覽器作業系統的怪癖
|
||||
|
||||
目前使用[Web 活動][2]實現相機外掛程式.
|
||||
|
||||
[2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
|
||||
|
||||
### iOS 的怪癖
|
||||
|
||||
包括 JavaScript `alert()` 中任一回檔的函數可能會導致問題。 換行內的警報 `setTimeout()` ,允許 iOS 圖像選取器或彈出要完全關閉之前警報將顯示:
|
||||
|
||||
setTimeout(function() {/ / 做你的事!},0) ;
|
||||
|
||||
|
||||
### Windows Phone 7 的怪癖
|
||||
|
||||
調用本機攝像頭應用程式,同時通過 Zune 連接設備不工作,並觸發錯誤回檔。
|
||||
|
||||
### Tizen 怪癖
|
||||
|
||||
Tizen 僅支援 `destinationType` 的 `Camera.DestinationType.FILE_URI` 和 `sourceType` 的`Camera.PictureSourceType.PHOTOLIBRARY`.
|
||||
|
||||
### 示例
|
||||
|
||||
拍一張照片,並檢索它為 base64 編碼的圖像:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.DATA_URL
|
||||
});
|
||||
|
||||
function onSuccess(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
拍一張照片和檢索圖像的檔位置:
|
||||
|
||||
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
|
||||
destinationType: Camera.DestinationType.FILE_URI });
|
||||
|
||||
function onSuccess(imageURI) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = imageURI;
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
|
||||
|
||||
## CameraOptions
|
||||
|
||||
要自訂相機設置的可選參數。
|
||||
|
||||
{品質: 75,destinationType: Camera.DestinationType.DATA_URL,sourceType: Camera.PictureSourceType.CAMERA,allowEdit: 為 true,encodingType: Camera.EncodingType.JPEG,targetWidth: 100,targetHeight: 100,popoverOptions: CameraPopoverOptions,saveToPhotoAlbum: 虛假} ;
|
||||
|
||||
|
||||
### 選項
|
||||
|
||||
* **品質**: 保存的圖像,表示為一系列的 0-100,在 100 哪裡通常全解析度而不會丟失檔的壓縮品質。 預設值為 50。 *(人數)*(請注意相機的解析度有關的資訊是不可用)。
|
||||
|
||||
* **可**: 選擇傳回值的格式。預設值是 FILE_URI。定義在 `navigator.camera.DestinationType` *(人數)*
|
||||
|
||||
Camera.DestinationType = {DATA_URL: 0,/ / 返回圖像作為 base64 編碼字串 FILE_URI: 1,/ / 返回影像檔的 URI NATIVE_URI: 2 / / 返回圖像本機 URI (例如,資產庫: / / 在 iOS 或內容上: / / 在 Android 上)} ;
|
||||
|
||||
|
||||
* **時**: 設置圖片的來源。預設值是觀景窗。定義在 `navigator.camera.PictureSourceType` *(人數)*
|
||||
|
||||
Camera.PictureSourceType = {PHOTOLIBRARY: 0,相機: 1,SAVEDPHOTOALBUM: 2} ;
|
||||
|
||||
|
||||
* **allowEdit**: 允許簡單編輯的選擇面前的形象。*(布林)*
|
||||
|
||||
* **encodingType**: 選擇返回的影像檔的編碼。預設值為 JPEG。定義在 `navigator.camera.EncodingType` *(人數)*
|
||||
|
||||
Camera.EncodingType = {JPEG: 0,/ / 返回 JPEG 編碼的 PNG 圖像: 1 / / 返回 PNG 編碼的圖像} ;
|
||||
|
||||
|
||||
* **targetWidth**: 以圖元為單位的尺度圖像的寬度。必須與**targetHeight**一起使用。縱橫比保持不變。*(人數)*
|
||||
|
||||
* **targetHeight**: 以圖元為單位的尺度圖像的高度。必須與**targetWidth**一起使用。縱橫比保持不變。*(人數)*
|
||||
|
||||
* **媒體類型**: 設置要從選擇媒體的類型。 時才起作用 `PictureSourceType` 是 `PHOTOLIBRARY` 或 `SAVEDPHOTOALBUM` 。 定義在 `nagivator.camera.MediaType` *(人數)*
|
||||
|
||||
Camera.MediaType = {圖片: 0,/ / 允許只仍然圖片的選擇。 預設情況。 Will return format specified via DestinationType
|
||||
VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
|
||||
ALLMEDIA : 2 // allow selection from all media types
|
||||
};
|
||||
|
||||
|
||||
* **correctOrientation**: 旋轉圖像,期間擷取裝置的方向的正確。*(布林)*
|
||||
|
||||
* **saveToPhotoAlbum**: 將圖像保存到相冊在設備上捕獲後。*(布林)*
|
||||
|
||||
* **popoverOptions**: 僅限 iOS 在 iPad 中指定彈出位置的選項。在中定義`CameraPopoverOptions`.
|
||||
|
||||
* **cameraDirection**: 選擇相機以使用 (前面或後面-面向)。預設值是背。定義在 `navigator.camera.Direction` *(人數)*
|
||||
|
||||
Camera.Direction = {回: 0,/ / 使用前面後面攝像頭: 1 / / 使用前置攝像頭} ;
|
||||
|
||||
|
||||
### 亞馬遜火 OSQuirks
|
||||
|
||||
* 任何 `cameraDirection` 值回朝的照片中的結果。
|
||||
|
||||
* 忽略 `allowEdit` 參數。
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`和 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 都顯示相同的相冊。
|
||||
|
||||
### Android 的怪癖
|
||||
|
||||
* 任何 `cameraDirection` 值回朝的照片中的結果。
|
||||
|
||||
* 忽略 `allowEdit` 參數。
|
||||
|
||||
* `Camera.PictureSourceType.PHOTOLIBRARY`和 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 都顯示相同的相冊。
|
||||
|
||||
### 黑莓 10 怪癖
|
||||
|
||||
* 忽略 `quality` 參數。
|
||||
|
||||
* 忽略 `allowEdit` 參數。
|
||||
|
||||
* `Camera.MediaType`不受支援。
|
||||
|
||||
* 忽略 `correctOrientation` 參數。
|
||||
|
||||
* 忽略 `cameraDirection` 參數。
|
||||
|
||||
### 火狐瀏覽器作業系統的怪癖
|
||||
|
||||
* 忽略 `quality` 參數。
|
||||
|
||||
* `Camera.DestinationType`將被忽略並且等於 `1` (影像檔的 URI)
|
||||
|
||||
* 忽略 `allowEdit` 參數。
|
||||
|
||||
* 忽略 `PictureSourceType` 參數 (使用者選擇它在對話方塊視窗中)
|
||||
|
||||
* 忽略`encodingType`
|
||||
|
||||
* 忽略 `targetWidth` 和`targetHeight`
|
||||
|
||||
* `Camera.MediaType`不受支援。
|
||||
|
||||
* 忽略 `correctOrientation` 參數。
|
||||
|
||||
* 忽略 `cameraDirection` 參數。
|
||||
|
||||
### iOS 的怪癖
|
||||
|
||||
* 設置 `quality` 低於 50,避免在某些設備上的記憶體不足錯誤。
|
||||
|
||||
* 當使用 `destinationType.FILE_URI` ,照片都保存在應用程式的臨時目錄。應用程式結束時,將刪除該應用程式的臨時目錄中的內容。
|
||||
|
||||
### Tizen 怪癖
|
||||
|
||||
* 不支援的選項
|
||||
|
||||
* 始終返回一個檔的 URI
|
||||
|
||||
### Windows Phone 7 和 8 怪癖
|
||||
|
||||
* 忽略 `allowEdit` 參數。
|
||||
|
||||
* 忽略 `correctOrientation` 參數。
|
||||
|
||||
* 忽略 `cameraDirection` 參數。
|
||||
|
||||
* 忽略 `saveToPhotoAlbum` 參數。 重要: 使用 wp7/8 科爾多瓦攝像頭 API 拍攝的所有圖像總是都複製到手機的相機膠捲。 根據使用者的設置,這可能也意味著圖像是自動上傳到他們另。 這有可能意味著的圖像,可以比你的應用程式的目的更多的觀眾。 如果此阻滯劑您的應用程式,您將需要實現 CameraCaptureTask 在 msdn 上記載: [HTTP://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx][3]你可能還評論或在[問題追蹤器][4]的向上投票的相關的問題
|
||||
|
||||
* 忽略了 `mediaType` 屬性的 `cameraOptions` 作為 Windows Phone SDK 並不提供從 PHOTOLIBRARY 中選擇視頻的方法。
|
||||
|
||||
[3]: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx
|
||||
[4]: https://issues.apache.org/jira/browse/CB-2083
|
||||
|
||||
## CameraError
|
||||
|
||||
onError 回呼函數的函數提供了一條錯誤訊息。
|
||||
|
||||
function(message) {
|
||||
// Show a helpful message
|
||||
}
|
||||
|
||||
|
||||
### 參數
|
||||
|
||||
* **消息**: 消息提供的設備的本機代碼。*(字串)*
|
||||
|
||||
## cameraSuccess
|
||||
|
||||
onSuccess 提供的圖像資料的回呼函數。
|
||||
|
||||
function(imageData) {
|
||||
// Do something with the image
|
||||
}
|
||||
|
||||
|
||||
### 參數
|
||||
|
||||
* **把圖像資料**: Base64 編碼的圖像資料,*或*影像檔的 URI,取決於 `cameraOptions` 生效。*(字串)*
|
||||
|
||||
### 示例
|
||||
|
||||
// Show image
|
||||
//
|
||||
function cameraCallback(imageData) {
|
||||
var image = document.getElementById('myImage');
|
||||
image.src = "data:image/jpeg;base64," + imageData;
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverHandle
|
||||
|
||||
由創建的彈出對話方塊的控制碼`navigator.camera.getPicture`.
|
||||
|
||||
### 方法
|
||||
|
||||
* **setPosition**: 設置彈出的位置。
|
||||
|
||||
### 支援的平臺
|
||||
|
||||
* iOS
|
||||
|
||||
### setPosition
|
||||
|
||||
設置彈出的位置。
|
||||
|
||||
**參數**:
|
||||
|
||||
* `cameraPopoverOptions`: `CameraPopoverOptions` ,指定新的位置
|
||||
|
||||
### 示例
|
||||
|
||||
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)
|
||||
});
|
||||
|
||||
// Reposition the popover if the orientation changes.
|
||||
window.onorientationchange = function() {
|
||||
var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
|
||||
cameraPopoverHandle.setPosition(cameraPopoverOptions);
|
||||
}
|
||||
|
||||
|
||||
## CameraPopoverOptions
|
||||
|
||||
iOS 僅指定彈出的錨元素的位置和箭頭方向,從 iPad 的庫或專輯選擇圖像時的參數。
|
||||
|
||||
{x: 0,y: 32,寬度: 320,高度: 480,arrowDir: Camera.PopoverArrowDirection.ARROW_ANY} ;
|
||||
|
||||
|
||||
### CameraPopoverOptions
|
||||
|
||||
* **x**: 圖元的 x 座標上的錨定彈出螢幕元素。*(人數)*
|
||||
|
||||
* **y**: 到其錨定彈出螢幕元素的 y 圖元座標。*(人數)*
|
||||
|
||||
* **寬度**: 寬度以圖元為單位),到其錨定彈出螢幕元素。*(人數)*
|
||||
|
||||
* **高度**: 高度以圖元為單位),到其錨定彈出螢幕元素。*(人數)*
|
||||
|
||||
* **arrowDir**: 上彈出的箭頭應指向的方向。定義在 `Camera.PopoverArrowDirection` *(人數)*
|
||||
|
||||
Camera.PopoverArrowDirection = {ARROW_UP: 1,/ / 匹配 iOS UIPopoverArrowDirection 常量 ARROW_DOWN: 2,ARROW_LEFT: 4,ARROW_RIGHT: 8,ARROW_ANY: 15} ;
|
||||
|
||||
|
||||
請注意彈出的大小可能會更改箭頭的方向和螢幕的方向調整。 請確保帳戶方向更改時指定的錨點的元素位置。
|
||||
|
||||
## navigator.camera.cleanup
|
||||
|
||||
刪除中間由從臨時存儲相機所拍攝的照片。
|
||||
|
||||
navigator.camera.cleanup( cameraSuccess, cameraError );
|
||||
|
||||
|
||||
### 說明
|
||||
|
||||
刪除中間打完電話後保留在臨時存儲的影像檔 `camera.getPicture` 。 適用時,才的價值 `Camera.sourceType` 等於 `Camera.PictureSourceType.CAMERA` 和 `Camera.destinationType` 等於`Camera.DestinationType.FILE_URI`.
|
||||
|
||||
### 支援的平臺
|
||||
|
||||
* iOS
|
||||
|
||||
### 示例
|
||||
|
||||
navigator.camera.cleanup(onSuccess, onFail);
|
||||
|
||||
function onSuccess() {
|
||||
console.log("Camera cleanup success.")
|
||||
}
|
||||
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
35
plugin.xml
35
plugin.xml
@@ -1,9 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one
|
||||
or more contributor license agreements. See the NOTICE file
|
||||
distributed with this work for additional information
|
||||
regarding copyright ownership. The ASF licenses this file
|
||||
to you under the Apache License, Version 2.0 (the
|
||||
"License"); you may not use this file except in compliance
|
||||
with the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing,
|
||||
software distributed under the License is distributed on an
|
||||
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied. See the License for the
|
||||
specific language governing permissions and limitations
|
||||
under the License.
|
||||
-->
|
||||
|
||||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:rim="http://www.blackberry.com/ns/widgets"
|
||||
id="org.apache.cordova.camera"
|
||||
version="0.2.8">
|
||||
version="0.3.1">
|
||||
<name>Camera</name>
|
||||
<description>Cordova Camera Plugin</description>
|
||||
<license>Apache 2.0</license>
|
||||
@@ -116,13 +135,14 @@
|
||||
<header-file src="src/ios/CDVCamera.h" />
|
||||
<source-file src="src/ios/CDVCamera.m" />
|
||||
<header-file src="src/ios/CDVJpegHeaderWriter.h" />
|
||||
<source-file src="src/ios/CDVJpegHeaderWriter.m" />
|
||||
<header-file src="src/ios/CDVExif.h" />
|
||||
<framework src="ImageIO.framework" weak="true" />
|
||||
<framework src="CoreLocation.framework" />
|
||||
<framework src="CoreGraphics.framework" />
|
||||
<framework src="AssetsLibrary.framework" />
|
||||
<source-file src="src/ios/CDVJpegHeaderWriter.m" />
|
||||
<header-file src="src/ios/CDVExif.h" />
|
||||
<framework src="ImageIO.framework" weak="true" />
|
||||
<framework src="CoreLocation.framework" />
|
||||
<framework src="CoreGraphics.framework" />
|
||||
<framework src="AssetsLibrary.framework" />
|
||||
<framework src="MobileCoreServices.framework" />
|
||||
<framework src="CoreGraphics.framework" />
|
||||
</platform>
|
||||
|
||||
<!-- blackberry10 -->
|
||||
@@ -183,7 +203,6 @@
|
||||
<!-- windows8 -->
|
||||
<platform name="windows8">
|
||||
|
||||
<dependency id="org.apache.cordova.file" />
|
||||
<config-file target="package.appxmanifest" parent="/Package/Capabilities">
|
||||
<Capability Name="picturesLibrary" />
|
||||
<DeviceCapability Name="webcam" />
|
||||
|
||||
185
src/android/CameraLauncher.java
Executable file → Normal file
185
src/android/CameraLauncher.java
Executable file → Normal file
@@ -34,16 +34,18 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ContentValues;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Bitmap.CompressFormat;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.Bitmap.CompressFormat;
|
||||
import android.media.MediaScannerConnection;
|
||||
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.provider.MediaStore;
|
||||
import android.util.Base64;
|
||||
@@ -58,7 +60,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
|
||||
private static final int DATA_URL = 0; // Return base64 encoded string
|
||||
private static final int FILE_URI = 1; // Return file uri (content://media/external/images/media/2 for Android)
|
||||
private static final int NATIVE_URI = 2; // On Android, this is the same as FILE_URI
|
||||
private static final int NATIVE_URI = 2; // On Android, this is the same as FILE_URI
|
||||
|
||||
private static final int PHOTOLIBRARY = 0; // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)
|
||||
private static final int CAMERA = 1; // Take picture from camera
|
||||
@@ -75,6 +77,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
private static final String GET_All = "Get All";
|
||||
|
||||
private static final String LOG_TAG = "CameraLauncher";
|
||||
private static final int CROP_CAMERA = 100;
|
||||
|
||||
private int mQuality; // Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality)
|
||||
private int targetWidth; // desired width of the image
|
||||
@@ -85,13 +88,14 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
private boolean saveToPhotoAlbum; // Should the picture be saved to the device's photo album
|
||||
private boolean correctOrientation; // Should the pictures orientation be corrected
|
||||
private boolean orientationCorrected; // Has the picture's orientation been corrected
|
||||
//private boolean allowEdit; // Should we allow the user to crop the image. UNUSED.
|
||||
private boolean allowEdit; // Should we allow the user to crop the image.
|
||||
|
||||
public CallbackContext callbackContext;
|
||||
private int numPics;
|
||||
|
||||
private MediaScannerConnection conn; // Used to update gallery app with newly-written files
|
||||
private Uri scanMe; // Uri of image to be added to content store
|
||||
private Uri croppedUri;
|
||||
|
||||
/**
|
||||
* Executes the request and returns PluginResult.
|
||||
@@ -121,7 +125,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
this.targetHeight = args.getInt(4);
|
||||
this.encodingType = args.getInt(5);
|
||||
this.mediaType = args.getInt(6);
|
||||
//this.allowEdit = args.getBoolean(7); // This field is unused.
|
||||
this.allowEdit = args.getBoolean(7);
|
||||
this.correctOrientation = args.getBoolean(8);
|
||||
this.saveToPhotoAlbum = args.getBoolean(9);
|
||||
|
||||
@@ -139,7 +143,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
this.takePicture(destType, encodingType);
|
||||
}
|
||||
else if ((srcType == PHOTOLIBRARY) || (srcType == SAVEDPHOTOALBUM)) {
|
||||
this.getImage(srcType, destType);
|
||||
this.getImage(srcType, destType, encodingType);
|
||||
}
|
||||
}
|
||||
catch (IllegalArgumentException e)
|
||||
@@ -238,33 +242,93 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
* @param quality Compression quality hint (0-100: 0=low quality & high compression, 100=compress of max quality)
|
||||
* @param srcType The album to get image from.
|
||||
* @param returnType Set the type of image to return.
|
||||
* @param encodingType
|
||||
*/
|
||||
// TODO: Images selected from SDCARD don't display correctly, but from CAMERA ALBUM do!
|
||||
public void getImage(int srcType, int returnType) {
|
||||
// TODO: Images from kitkat filechooser not going into crop function
|
||||
public void getImage(int srcType, int returnType, int encodingType) {
|
||||
Intent intent = new Intent();
|
||||
String title = GET_PICTURE;
|
||||
croppedUri = null;
|
||||
if (this.mediaType == PICTURE) {
|
||||
intent.setType("image/*");
|
||||
if (this.allowEdit) {
|
||||
intent.setAction(Intent.ACTION_PICK);
|
||||
intent.putExtra("crop", "true");
|
||||
if (targetWidth > 0) {
|
||||
intent.putExtra("outputX", targetWidth);
|
||||
}
|
||||
if (targetHeight > 0) {
|
||||
intent.putExtra("outputY", targetHeight);
|
||||
}
|
||||
if (targetHeight > 0 && targetWidth > 0 && targetWidth == targetHeight) {
|
||||
intent.putExtra("aspectX", 1);
|
||||
intent.putExtra("aspectY", 1);
|
||||
}
|
||||
File photo = createCaptureFile(encodingType);
|
||||
croppedUri = Uri.fromFile(photo);
|
||||
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, croppedUri);
|
||||
} else {
|
||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
}
|
||||
} else if (this.mediaType == VIDEO) {
|
||||
intent.setType("video/*");
|
||||
title = GET_VIDEO;
|
||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
} else if (this.mediaType == ALLMEDIA) {
|
||||
// I wanted to make the type 'image/*, video/*' but this does not work on all versions
|
||||
// of android so I had to go with the wildcard search.
|
||||
intent.setType("*/*");
|
||||
title = GET_All;
|
||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
}
|
||||
else if (this.mediaType == VIDEO) {
|
||||
intent.setType("video/*");
|
||||
title = GET_VIDEO;
|
||||
}
|
||||
else if (this.mediaType == ALLMEDIA) {
|
||||
// I wanted to make the type 'image/*, video/*' but this does not work on all versions
|
||||
// of android so I had to go with the wildcard search.
|
||||
intent.setType("*/*");
|
||||
title = GET_All;
|
||||
}
|
||||
|
||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
if (this.cordova != null) {
|
||||
this.cordova.startActivityForResult((CordovaPlugin) this, Intent.createChooser(intent,
|
||||
new String(title)), (srcType + 1) * 16 + returnType + 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Brings up the UI to perform crop on passed image URI
|
||||
*
|
||||
* @param picUri
|
||||
*/
|
||||
private void performCrop(Uri picUri) {
|
||||
try {
|
||||
Intent cropIntent = new Intent("com.android.camera.action.CROP");
|
||||
// indicate image type and Uri
|
||||
cropIntent.setDataAndType(picUri, "image/*");
|
||||
// set crop properties
|
||||
cropIntent.putExtra("crop", "true");
|
||||
// indicate output X and Y
|
||||
if (targetWidth > 0) {
|
||||
cropIntent.putExtra("outputX", targetWidth);
|
||||
}
|
||||
if (targetHeight > 0) {
|
||||
cropIntent.putExtra("outputY", targetHeight);
|
||||
}
|
||||
if (targetHeight > 0 && targetWidth > 0 && targetWidth == targetHeight) {
|
||||
cropIntent.putExtra("aspectX", 1);
|
||||
cropIntent.putExtra("aspectY", 1);
|
||||
}
|
||||
// retrieve data on return
|
||||
cropIntent.putExtra("return-data", true);
|
||||
// start the activity - we handle returning in onActivityResult
|
||||
|
||||
if (this.cordova != null) {
|
||||
this.cordova.startActivityForResult((CordovaPlugin) this,
|
||||
cropIntent, CROP_CAMERA);
|
||||
}
|
||||
} catch (ActivityNotFoundException anfe) {
|
||||
Log.e(LOG_TAG, "Crop operation not supported on this device");
|
||||
// Send Uri back to JavaScript for viewing image
|
||||
this.callbackContext.success(picUri.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies all needed transformation to the image received from the camera.
|
||||
*
|
||||
@@ -316,14 +380,19 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
else if (destType == FILE_URI || destType == NATIVE_URI) {
|
||||
if (this.saveToPhotoAlbum) {
|
||||
Uri inputUri = getUriFromMediaStore();
|
||||
//Just because we have a media URI doesn't mean we have a real file, we need to make it
|
||||
uri = Uri.fromFile(new File(FileHelper.getRealPath(inputUri, this.cordova)));
|
||||
try {
|
||||
//Just because we have a media URI doesn't mean we have a real file, we need to make it
|
||||
uri = Uri.fromFile(new File(FileHelper.getRealPath(inputUri, this.cordova)));
|
||||
} catch (NullPointerException e) {
|
||||
uri = null;
|
||||
}
|
||||
} else {
|
||||
uri = Uri.fromFile(new File(getTempDirectoryPath(), System.currentTimeMillis() + ".jpg"));
|
||||
}
|
||||
|
||||
if (uri == null) {
|
||||
this.failPicture("Error capturing image - no media storage found.");
|
||||
return;
|
||||
}
|
||||
|
||||
// If all this is true we shouldn't compress the image.
|
||||
@@ -355,17 +424,22 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
exif.createOutFile(exifPath);
|
||||
exif.writeExifData();
|
||||
}
|
||||
|
||||
if (this.allowEdit) {
|
||||
performCrop(uri);
|
||||
} else {
|
||||
// Send Uri back to JavaScript for viewing image
|
||||
this.callbackContext.success(uri.toString());
|
||||
}
|
||||
}
|
||||
// Send Uri back to JavaScript for viewing image
|
||||
this.callbackContext.success(uri.toString());
|
||||
} else {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
this.cleanup(FILE_URI, this.imageUri, uri, bitmap);
|
||||
bitmap = null;
|
||||
}
|
||||
|
||||
private String ouputModifiedBitmap(Bitmap bitmap, Uri uri) throws IOException {
|
||||
|
||||
private String ouputModifiedBitmap(Bitmap bitmap, Uri uri) throws IOException {
|
||||
// Create an ExifHelper to save the exif data that is lost during compression
|
||||
String modifiedPath = getTempDirectoryPath() + "/modified.jpg";
|
||||
|
||||
@@ -392,7 +466,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
return modifiedPath;
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Applies all needed transformation to the image received from the gallery.
|
||||
*
|
||||
* @param destType In which form should we return the image
|
||||
@@ -400,6 +474,14 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
*/
|
||||
private void processResultFromGallery(int destType, Intent intent) {
|
||||
Uri uri = intent.getData();
|
||||
if (uri == null) {
|
||||
if (croppedUri != null) {
|
||||
uri = croppedUri;
|
||||
} else {
|
||||
this.failPicture("null data from photo library");
|
||||
return;
|
||||
}
|
||||
}
|
||||
int rotate = 0;
|
||||
|
||||
// If you ask for video or all media type you will automatically get back a file URI
|
||||
@@ -495,7 +577,50 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
// Get src and dest types from request code
|
||||
int srcType = (requestCode / 16) - 1;
|
||||
int destType = (requestCode % 16) - 1;
|
||||
// if camera crop
|
||||
if (requestCode == CROP_CAMERA) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
// // get the returned data
|
||||
Bundle extras = intent.getExtras();
|
||||
// get the cropped bitmap
|
||||
Bitmap thePic = extras.getParcelable("data");
|
||||
if (thePic == null) {
|
||||
this.failPicture("Crop returned no data.");
|
||||
return;
|
||||
}
|
||||
|
||||
// now save the bitmap to a file
|
||||
OutputStream fOut = null;
|
||||
File temp_file = new File(getTempDirectoryPath(),
|
||||
System.currentTimeMillis() + ".jpg");
|
||||
try {
|
||||
temp_file.createNewFile();
|
||||
fOut = new FileOutputStream(temp_file);
|
||||
thePic.compress(Bitmap.CompressFormat.JPEG, this.mQuality,
|
||||
fOut);
|
||||
fOut.flush();
|
||||
fOut.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// // Send Uri back to JavaScript for viewing image
|
||||
this.callbackContext
|
||||
.success(Uri.fromFile(temp_file).toString());
|
||||
|
||||
}// If cancelled
|
||||
else if (resultCode == Activity.RESULT_CANCELED) {
|
||||
this.failPicture("Camera cancelled.");
|
||||
}
|
||||
|
||||
// If something else
|
||||
else {
|
||||
this.failPicture("Did not complete!");
|
||||
}
|
||||
|
||||
}
|
||||
// If CAMERA
|
||||
if (srcType == CAMERA) {
|
||||
// If image available
|
||||
@@ -521,7 +646,7 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
|
||||
// If retrieving photo from library
|
||||
else if ((srcType == PHOTOLIBRARY) || (srcType == SAVEDPHOTOALBUM)) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
if (resultCode == Activity.RESULT_OK && intent != null) {
|
||||
this.processResultFromGallery(destType, intent);
|
||||
}
|
||||
else if (resultCode == Activity.RESULT_CANCELED) {
|
||||
@@ -615,11 +740,11 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect
|
||||
Uri uri;
|
||||
try {
|
||||
uri = this.cordova.getActivity().getContentResolver().insert(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
|
||||
} catch (UnsupportedOperationException e) {
|
||||
} catch (RuntimeException e) {
|
||||
LOG.d(LOG_TAG, "Can't write to external media storage.");
|
||||
try {
|
||||
uri = this.cordova.getActivity().getContentResolver().insert(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI, values);
|
||||
} catch (UnsupportedOperationException ex) {
|
||||
} catch (RuntimeException ex) {
|
||||
LOG.d(LOG_TAG, "Can't write to internal media storage.");
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -48,4 +48,4 @@ module.exports = {
|
||||
cleanup: function(){}
|
||||
};
|
||||
|
||||
require("cordova/firefoxos/commandProxy").add("Camera", module.exports);
|
||||
require("cordova/exec/proxy").add("Camera", module.exports);
|
||||
|
||||
@@ -84,7 +84,6 @@ typedef NSUInteger CDVMediaType;
|
||||
* quality: integer between 1 and 100
|
||||
*/
|
||||
- (void)takePicture:(CDVInvokedUrlCommand*)command;
|
||||
- (void)postImage:(UIImage*)anImage withFilename:(NSString*)filename toUrl:(NSURL*)url;
|
||||
- (void)cleanup:(CDVInvokedUrlCommand*)command;
|
||||
- (void)repositionPopover:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#import <Cordova/NSDictionary+Extensions.h>
|
||||
#import <ImageIO/CGImageProperties.h>
|
||||
#import <AssetsLibrary/ALAssetRepresentation.h>
|
||||
#import <AssetsLibrary/AssetsLibrary.h>
|
||||
#import <ImageIO/CGImageSource.h>
|
||||
#import <ImageIO/CGImageProperties.h>
|
||||
#import <ImageIO/CGImageDestination.h>
|
||||
@@ -84,7 +85,7 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
||||
|
||||
bool hasCamera = [UIImagePickerController isSourceTypeAvailable:sourceType];
|
||||
if (!hasCamera) {
|
||||
NSLog(@"Camera.getPicture: source type %d not available.", sourceType);
|
||||
NSLog(@"Camera.getPicture: source type %lu not available.", (unsigned long)sourceType);
|
||||
CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"no camera available"];
|
||||
[self.commandDelegate sendPluginResult:result callbackId:callbackId];
|
||||
return;
|
||||
@@ -150,13 +151,7 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
||||
NSDictionary* options = [command.arguments objectAtIndex:10 withDefault:nil];
|
||||
[self displayPopover:options];
|
||||
} else {
|
||||
SEL selector = NSSelectorFromString(@"presentViewController:animated:completion:");
|
||||
if ([self.viewController respondsToSelector:selector]) {
|
||||
[self.viewController presentViewController:cameraPicker animated:YES completion:nil];
|
||||
} else {
|
||||
// deprecated as of iOS >= 6.0
|
||||
[self.viewController presentModalViewController:cameraPicker animated:YES];
|
||||
}
|
||||
[self.viewController presentViewController:cameraPicker animated:YES completion:nil];
|
||||
}
|
||||
self.hasPendingOperation = YES;
|
||||
}
|
||||
@@ -170,10 +165,10 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
||||
|
||||
- (void)displayPopover:(NSDictionary*)options
|
||||
{
|
||||
int x = 0;
|
||||
int y = 32;
|
||||
int width = 320;
|
||||
int height = 480;
|
||||
NSInteger x = 0;
|
||||
NSInteger y = 32;
|
||||
NSInteger width = 320;
|
||||
NSInteger height = 480;
|
||||
UIPopoverArrowDirection arrowDirection = UIPopoverArrowDirectionAny;
|
||||
|
||||
if (options) {
|
||||
@@ -182,7 +177,7 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
||||
width = [options integerValueForKey:@"width" defaultValue:320];
|
||||
height = [options integerValueForKey:@"height" defaultValue:480];
|
||||
arrowDirection = [options integerValueForKey:@"arrowDir" defaultValue:UIPopoverArrowDirectionAny];
|
||||
if (![org_apache_cordova_validArrowDirections containsObject:[NSNumber numberWithInt:arrowDirection]]) {
|
||||
if (![org_apache_cordova_validArrowDirections containsObject:[NSNumber numberWithUnsignedInteger:arrowDirection]]) {
|
||||
arrowDirection = UIPopoverArrowDirectionAny;
|
||||
}
|
||||
}
|
||||
@@ -265,11 +260,7 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
||||
cameraPicker.popoverController.delegate = nil;
|
||||
cameraPicker.popoverController = nil;
|
||||
} else {
|
||||
if ([cameraPicker respondsToSelector:@selector(presentingViewController)]) {
|
||||
[[cameraPicker presentingViewController] dismissModalViewControllerAnimated:YES];
|
||||
} else {
|
||||
[[cameraPicker parentViewController] dismissModalViewControllerAnimated:YES];
|
||||
}
|
||||
[[cameraPicker presentingViewController] dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
||||
CDVPluginResult* result = nil;
|
||||
@@ -385,14 +376,15 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
||||
{
|
||||
CDVCameraPicker* cameraPicker = (CDVCameraPicker*)picker;
|
||||
|
||||
if ([cameraPicker respondsToSelector:@selector(presentingViewController)]) {
|
||||
[[cameraPicker presentingViewController] dismissModalViewControllerAnimated:YES];
|
||||
} else {
|
||||
[[cameraPicker parentViewController] dismissModalViewControllerAnimated:YES];
|
||||
}
|
||||
// popoverControllerDidDismissPopover:(id)popoverController is called if popover is cancelled
|
||||
[[cameraPicker presentingViewController] dismissViewControllerAnimated:YES completion:nil];
|
||||
|
||||
CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"no image selected"]; // error callback expects string ATM
|
||||
CDVPluginResult* result;
|
||||
if ([ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusAuthorized) {
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"no image selected"]; // error callback expects string ATM
|
||||
} else {
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"has no access to assets"]; // error callback expects string ATM
|
||||
}
|
||||
|
||||
[self.commandDelegate sendPluginResult:result callbackId:cameraPicker.callbackId];
|
||||
|
||||
self.hasPendingOperation = NO;
|
||||
@@ -541,48 +533,6 @@ static NSSet* org_apache_cordova_validArrowDirections;
|
||||
return newImage;
|
||||
}
|
||||
|
||||
- (void)postImage:(UIImage*)anImage withFilename:(NSString*)filename toUrl:(NSURL*)url
|
||||
{
|
||||
self.hasPendingOperation = YES;
|
||||
|
||||
NSString* boundary = @"----BOUNDARY_IS_I";
|
||||
|
||||
NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL:url];
|
||||
[req setHTTPMethod:@"POST"];
|
||||
|
||||
NSString* contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
|
||||
[req setValue:contentType forHTTPHeaderField:@"Content-type"];
|
||||
|
||||
NSData* imageData = UIImagePNGRepresentation(anImage);
|
||||
|
||||
// adding the body
|
||||
NSMutableData* postBody = [NSMutableData data];
|
||||
|
||||
// first parameter an image
|
||||
[postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
[postBody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"upload\"; filename=\"%@\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
[postBody appendData:[@"Content-Type: image/png\r\n\r\n" dataUsingEncoding : NSUTF8StringEncoding]];
|
||||
[postBody appendData:imageData];
|
||||
|
||||
// // second parameter information
|
||||
// [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
// [postBody appendData:[@"Content-Disposition: form-data; name=\"some_other_name\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
// [postBody appendData:[@"some_other_value" dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
// [postBody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r \n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
|
||||
|
||||
[req setHTTPBody:postBody];
|
||||
|
||||
NSURLResponse* response;
|
||||
NSError* error;
|
||||
[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
|
||||
|
||||
// NSData* result = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
|
||||
// NSString * resultStr = [[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding] autorelease];
|
||||
|
||||
self.hasPendingOperation = NO;
|
||||
}
|
||||
|
||||
|
||||
- (CLLocationManager *)locationManager {
|
||||
|
||||
if (locationManager != nil) {
|
||||
|
||||
@@ -190,7 +190,7 @@ const uint mTiffLength = 0x2a; // after byte align bits, next to bits are 0x002a
|
||||
// construct the complete app1 data block
|
||||
app1 = [[NSMutableString alloc] initWithFormat: @"%@%04x%@%@%@%@%@",
|
||||
app1marker,
|
||||
16 + ([exifIFD length]/2) + ([subExifIFD length]/2) /*16+[exifIFD length]/2*/,
|
||||
(unsigned int)(16 + ([exifIFD length]/2) + ([subExifIFD length]/2)) /*16+[exifIFD length]/2*/,
|
||||
exifmarker,
|
||||
tiffheader,
|
||||
ifd0offset,
|
||||
@@ -268,10 +268,10 @@ const uint mTiffLength = 0x2a; // after byte align bits, next to bits are 0x002a
|
||||
}
|
||||
|
||||
// calculate IFD0 terminal offset tags, currently ExifSubIFD
|
||||
int entrycount = [ifdblock count];
|
||||
unsigned int entrycount = (unsigned int)[ifdblock count];
|
||||
if (ifd0flag) {
|
||||
// 18 accounts for 8769's width + offset to next ifd, 8 accounts for start of header
|
||||
NSNumber * offset = [NSNumber numberWithInt:[exifstr length] / 2 + [dbstr length] / 2 + 18+8];
|
||||
NSNumber * offset = [NSNumber numberWithUnsignedInteger:[exifstr length] / 2 + [dbstr length] / 2 + 18+8];
|
||||
|
||||
[self appendExifOffsetTagTo: exifstr
|
||||
withOffset : offset];
|
||||
@@ -293,7 +293,7 @@ const uint mTiffLength = 0x2a; // after byte align bits, next to bits are 0x002a
|
||||
NSNumber * dataformat = [formtemplate objectAtIndex:1];
|
||||
NSNumber * components = [formtemplate objectAtIndex:2];
|
||||
if([components intValue] == 0) {
|
||||
components = [NSNumber numberWithInt: [data length] * DataTypeToWidth[[dataformat intValue]-1]];
|
||||
components = [NSNumber numberWithUnsignedInteger:[data length] * DataTypeToWidth[[dataformat intValue]-1]];
|
||||
}
|
||||
|
||||
return [[NSString alloc] initWithFormat: @"%@%@%08x",
|
||||
@@ -344,7 +344,7 @@ const uint mTiffLength = 0x2a; // after byte align bits, next to bits are 0x002a
|
||||
[datastr appendString:[dataformat objectAtIndex:3]];
|
||||
}
|
||||
if ([datastr length] < 8) {
|
||||
NSString * format = [NSString stringWithFormat:@"%%0%dd", 8 - [datastr length]];
|
||||
NSString * format = [NSString stringWithFormat:@"%%0%dd", (int)(8 - [datastr length])];
|
||||
[datastr appendFormat:format,0];
|
||||
}
|
||||
return datastr;
|
||||
@@ -464,7 +464,7 @@ const uint mTiffLength = 0x2a; // after byte align bits, next to bits are 0x002a
|
||||
-(void) expandContinuedFraction: (NSArray*) fractionlist
|
||||
withResultNumerator: (NSNumber**) numerator
|
||||
withResultDenominator: (NSNumber**) denominator {
|
||||
int i = 0;
|
||||
NSUInteger i = 0;
|
||||
int den = 0;
|
||||
int num = 0;
|
||||
if ([fractionlist count] == 1) {
|
||||
|
||||
@@ -40,7 +40,6 @@ Rectangle {
|
||||
console.log(errorString);
|
||||
}
|
||||
videoRecorder.audioBitRate: 128000
|
||||
videoRecorder.mediaContainer: "mp4"
|
||||
imageCapture {
|
||||
onImageSaved: {
|
||||
root.exec("Camera", "onImageSaved", [path]);
|
||||
@@ -100,7 +99,7 @@ Rectangle {
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
camera.imageCapture.capture();
|
||||
camera.imageCapture.captureToLocation(ui.parent.plugin('Camera').generateLocation("jpg"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ function createObject() { \
|
||||
component.statusChanged.connect(finishCreation); \
|
||||
} \
|
||||
function finishCreation() { \
|
||||
CordovaWrapper.object = component.createObject(root, \
|
||||
CordovaWrapper.global.cameraPluginWidget = component.createObject(root, \
|
||||
{root: root, cordova: cordova}); \
|
||||
} \
|
||||
createObject()";
|
||||
@@ -68,18 +68,15 @@ bool Camera::preprocessImage(QString &path) {
|
||||
|
||||
const char *type;
|
||||
if (convertToPNG) {
|
||||
newImage.setFileTemplate("imgXXXXXX.png");
|
||||
path = generateLocation("png");
|
||||
type = "png";
|
||||
} else {
|
||||
newImage.setFileTemplate("imgXXXXXX.jpg");
|
||||
path = generateLocation("jpg");
|
||||
type = "jpg";
|
||||
}
|
||||
|
||||
newImage.open();
|
||||
newImage.setAutoRemove(false);
|
||||
image.save(newImage.fileName(), type, quality);
|
||||
image.save(path, type, quality);
|
||||
|
||||
path = newImage.fileName();
|
||||
oldImage.remove();
|
||||
|
||||
return true;
|
||||
@@ -98,7 +95,7 @@ void Camera::onImageSaved(QString path) {
|
||||
cbParams = QString("\"%1\"").arg(content.data());
|
||||
image.remove();
|
||||
} else {
|
||||
cbParams = CordovaInternal::format(QUrl::fromLocalFile(absolutePath).toString());
|
||||
cbParams = CordovaInternal::format(QString("file://localhost") + absolutePath);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +133,7 @@ void Camera::takePicture(int scId, int ecId, int quality, int destinationType, i
|
||||
}
|
||||
|
||||
void Camera::cancel() {
|
||||
m_cordova->execQML("CordovaWrapper.object.destroy()");
|
||||
m_cordova->execQML("CordovaWrapper.global.cameraPluginWidget.destroy()");
|
||||
this->cb(_lastEcId, "canceled");
|
||||
|
||||
_lastEcId = _lastScId = 0;
|
||||
|
||||
@@ -54,6 +54,16 @@ public slots:
|
||||
|
||||
void onImageSaved(QString path);
|
||||
|
||||
QString generateLocation(const QString &extension) {
|
||||
int i = 1;
|
||||
for (;;++i) {
|
||||
QString path = QString("%1/.local/share/%2/persistent/%3.%4").arg(QDir::homePath())
|
||||
.arg(QCoreApplication::applicationName()).arg(i).arg(extension);
|
||||
|
||||
if (!QFileInfo(path).exists())
|
||||
return path;
|
||||
}
|
||||
}
|
||||
private:
|
||||
bool preprocessImage(QString &path);
|
||||
|
||||
|
||||
@@ -22,12 +22,8 @@
|
||||
/*global Windows:true, URL:true */
|
||||
|
||||
|
||||
|
||||
var cordova = require('cordova'),
|
||||
Camera = require('./Camera'),
|
||||
FileEntry = require('org.apache.cordova.file.FileEntry'),
|
||||
FileError = require('org.apache.cordova.file.FileError'),
|
||||
FileReader = require('org.apache.cordova.file.FileReader');
|
||||
var cordova = require('cordova'),
|
||||
Camera = require('./Camera');
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -54,13 +50,6 @@ module.exports = {
|
||||
var mediaType = args[6];
|
||||
var saveToPhotoAlbum = args[9];
|
||||
|
||||
var pkg = Windows.ApplicationModel.Package.current;
|
||||
var packageId = pkg.installedLocation;
|
||||
|
||||
var fail = function (fileError) {
|
||||
errorCallback("FileError, code:" + fileError.code);
|
||||
};
|
||||
|
||||
// resize method :)
|
||||
var resizeImage = function (file) {
|
||||
var tempPhotoFileName = "";
|
||||
@@ -69,119 +58,74 @@ module.exports = {
|
||||
} else {
|
||||
tempPhotoFileName = "camera_cordova_temp_return.jpg";
|
||||
}
|
||||
var imgObj = new Image();
|
||||
var success = function (fileEntry) {
|
||||
var successCB = function (filePhoto) {
|
||||
var fileType = file.contentType,
|
||||
reader = new FileReader();
|
||||
reader.onloadend = function () {
|
||||
var image = new Image();
|
||||
image.src = reader.result;
|
||||
image.onload = function () {
|
||||
var imageWidth = targetWidth,
|
||||
imageHeight = targetHeight;
|
||||
var canvas = document.createElement('canvas');
|
||||
|
||||
canvas.width = imageWidth;
|
||||
canvas.height = imageHeight;
|
||||
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(this, 0, 0, imageWidth, imageHeight);
|
||||
|
||||
// The resized file ready for upload
|
||||
var _blob = canvas.msToBlob();
|
||||
var _stream = _blob.msDetachStream();
|
||||
|
||||
var storageFolder = Windows.Storage.ApplicationData.current.localFolder;
|
||||
storageFolder.createFileAsync(tempPhotoFileName, Windows.Storage.CreationCollisionOption.generateUniqueName).done(function (file) {
|
||||
file.openAsync(Windows.Storage.FileAccessMode.readWrite).done(function (fileStream) {
|
||||
Windows.Storage.Streams.RandomAccessStream.copyAndCloseAsync(_stream, fileStream).done(function () {
|
||||
var _imageUrl = URL.createObjectURL(file);
|
||||
successCallback(_imageUrl);
|
||||
}, function () {
|
||||
errorCallback("Resize picture error.");
|
||||
});
|
||||
}, function () {
|
||||
errorCallback("Resize picture error.");
|
||||
});
|
||||
}, function () {
|
||||
errorCallback("Resize picture error.");
|
||||
});
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
reader.readAsDataURL(filePhoto);
|
||||
};
|
||||
|
||||
var failCB = function () {
|
||||
errorCallback("File not found.");
|
||||
};
|
||||
fileEntry.file(successCB, failCB);
|
||||
};
|
||||
|
||||
var storageFolder = Windows.Storage.ApplicationData.current.localFolder;
|
||||
file.copyAsync(storageFolder, file.name, Windows.Storage.NameCollisionOption.replaceExisting).then(function (storageFile) {
|
||||
success(new FileEntry(storageFile.name, storageFile.path));
|
||||
Windows.Storage.FileIO.readBufferAsync(storageFile).then(function(buffer) {
|
||||
var strBase64 = Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String(buffer);
|
||||
var imageData = "data:" + file.contentType + ";base64," + strBase64;
|
||||
var image = new Image();
|
||||
image.src = imageData;
|
||||
image.onload = function() {
|
||||
var imageWidth = targetWidth,
|
||||
imageHeight = targetHeight;
|
||||
var canvas = document.createElement('canvas');
|
||||
|
||||
canvas.width = imageWidth;
|
||||
canvas.height = imageHeight;
|
||||
|
||||
canvas.getContext("2d").drawImage(this, 0, 0, imageWidth, imageHeight);
|
||||
|
||||
var fileContent = canvas.toDataURL(file.contentType).split(',')[1];
|
||||
|
||||
var storageFolder = Windows.Storage.ApplicationData.current.localFolder;
|
||||
|
||||
storageFolder.createFileAsync(tempPhotoFileName, Windows.Storage.CreationCollisionOption.generateUniqueName).done(function (storagefile) {
|
||||
var content = Windows.Security.Cryptography.CryptographicBuffer.decodeFromBase64String(fileContent);
|
||||
Windows.Storage.FileIO.writeBufferAsync(storagefile, content).then(function () {
|
||||
successCallback("ms-appdata:///local/" + storagefile.name);
|
||||
}, function () {
|
||||
errorCallback("Resize picture error.");
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
||||
}, function () {
|
||||
fail(FileError.INVALID_MODIFICATION_ERR);
|
||||
}, function () {
|
||||
errorCallback("Folder not access.");
|
||||
errorCallback("Can't access localStorage folder");
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
// because of asynchronous method, so let the successCallback be called in it.
|
||||
var resizeImageBase64 = function (file) {
|
||||
var imgObj = new Image();
|
||||
var success = function (fileEntry) {
|
||||
var successCB = function (filePhoto) {
|
||||
var fileType = file.contentType,
|
||||
reader = new FileReader();
|
||||
reader.onloadend = function () {
|
||||
var image = new Image();
|
||||
image.src = reader.result;
|
||||
|
||||
image.onload = function () {
|
||||
var imageWidth = targetWidth,
|
||||
imageHeight = targetHeight;
|
||||
var canvas = document.createElement('canvas');
|
||||
Windows.Storage.FileIO.readBufferAsync(file).done( function(buffer) {
|
||||
var strBase64 = Windows.Security.Cryptography.CryptographicBuffer.encodeToBase64String(buffer);
|
||||
var imageData = "data:" + file.contentType + ";base64," + strBase64;
|
||||
|
||||
canvas.width = imageWidth;
|
||||
canvas.height = imageHeight;
|
||||
var image = new Image();
|
||||
image.src = imageData;
|
||||
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(this, 0, 0, imageWidth, imageHeight);
|
||||
image.onload = function() {
|
||||
var imageWidth = targetWidth,
|
||||
imageHeight = targetHeight;
|
||||
var canvas = document.createElement('canvas');
|
||||
|
||||
// The resized file ready for upload
|
||||
var finalFile = canvas.toDataURL(fileType);
|
||||
canvas.width = imageWidth;
|
||||
canvas.height = imageHeight;
|
||||
|
||||
// Remove the prefix such as "data:" + contentType + ";base64," , in order to meet the Cordova API.
|
||||
var arr = finalFile.split(",");
|
||||
var newStr = finalFile.substr(arr[0].length + 1);
|
||||
successCallback(newStr);
|
||||
};
|
||||
};
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(this, 0, 0, imageWidth, imageHeight);
|
||||
|
||||
reader.readAsDataURL(filePhoto);
|
||||
// The resized file ready for upload
|
||||
var finalFile = canvas.toDataURL(file.contentType);
|
||||
|
||||
// Remove the prefix such as "data:" + contentType + ";base64," , in order to meet the Cordova API.
|
||||
var arr = finalFile.split(",");
|
||||
var newStr = finalFile.substr(arr[0].length + 1);
|
||||
successCallback(newStr);
|
||||
};
|
||||
var failCB = function () {
|
||||
errorCallback("File not found.");
|
||||
};
|
||||
fileEntry.file(successCB, failCB);
|
||||
};
|
||||
|
||||
var storageFolder = Windows.Storage.ApplicationData.current.localFolder;
|
||||
file.copyAsync(storageFolder, file.name, Windows.Storage.NameCollisionOption.replaceExisting).then(function (storageFile) {
|
||||
success(new FileEntry(storageFile.name, "ms-appdata:///local/" + storageFile.name));
|
||||
}, function () {
|
||||
fail(FileError.INVALID_MODIFICATION_ERR);
|
||||
}, function () {
|
||||
errorCallback("Folder not access.");
|
||||
});
|
||||
|
||||
|
||||
};
|
||||
|
||||
if (sourceType != Camera.PictureSourceType.CAMERA) {
|
||||
@@ -209,9 +153,7 @@ module.exports = {
|
||||
file.copyAsync(storageFolder, file.name, Windows.Storage.NameCollisionOption.replaceExisting).then(function (storageFile) {
|
||||
successCallback(URL.createObjectURL(storageFile));
|
||||
}, function () {
|
||||
fail(FileError.INVALID_MODIFICATION_ERR);
|
||||
}, function () {
|
||||
errorCallback("Folder not access.");
|
||||
errorCallback("Can't access localStorage folder.");
|
||||
});
|
||||
|
||||
}
|
||||
@@ -273,7 +215,7 @@ module.exports = {
|
||||
cameraCaptureUI.captureFileAsync(Windows.Media.Capture.CameraCaptureUIMode.photo).then(function (picture) {
|
||||
if (picture) {
|
||||
// save to photo album successCallback
|
||||
var success = function (fileEntry) {
|
||||
var success = function () {
|
||||
if (destinationType == Camera.DestinationType.FILE_URI) {
|
||||
if (targetHeight > 0 && targetWidth > 0) {
|
||||
resizeImage(picture);
|
||||
@@ -283,9 +225,7 @@ module.exports = {
|
||||
picture.copyAsync(storageFolder, picture.name, Windows.Storage.NameCollisionOption.replaceExisting).then(function (storageFile) {
|
||||
successCallback("ms-appdata:///local/" + storageFile.name);
|
||||
}, function () {
|
||||
fail(FileError.INVALID_MODIFICATION_ERR);
|
||||
}, function () {
|
||||
errorCallback("Folder not access.");
|
||||
errorCallback("Can't access localStorage folder.");
|
||||
});
|
||||
}
|
||||
} else {
|
||||
@@ -308,7 +248,7 @@ module.exports = {
|
||||
if (saveToPhotoAlbum) {
|
||||
Windows.Storage.StorageFile.getFileFromPathAsync(picture.path).then(function (storageFile) {
|
||||
storageFile.copyAsync(Windows.Storage.KnownFolders.picturesLibrary, picture.name, Windows.Storage.NameCollisionOption.generateUniqueName).then(function (storageFile) {
|
||||
success(storageFile);
|
||||
success();
|
||||
}, function () {
|
||||
fail();
|
||||
});
|
||||
@@ -325,9 +265,7 @@ module.exports = {
|
||||
picture.copyAsync(storageFolder, picture.name, Windows.Storage.NameCollisionOption.replaceExisting).then(function (storageFile) {
|
||||
successCallback("ms-appdata:///local/" + storageFile.name);
|
||||
}, function () {
|
||||
fail(FileError.INVALID_MODIFICATION_ERR);
|
||||
}, function () {
|
||||
errorCallback("Folder not access.");
|
||||
errorCallback("Can't access localStorage folder.");
|
||||
});
|
||||
}
|
||||
} else {
|
||||
@@ -351,4 +289,4 @@ module.exports = {
|
||||
}
|
||||
};
|
||||
|
||||
require("cordova/windows8/commandProxy").add("Camera",module.exports);
|
||||
require("cordova/exec/proxy").add("Camera",module.exports);
|
||||
|
||||
390
src/wp/Camera.cs
390
src/wp/Camera.cs
@@ -113,8 +113,6 @@ namespace WPCordovaClassLib.Cordova.Commands
|
||||
[DataMember(IsRequired = false, Name = "correctOrientation")]
|
||||
public bool CorrectOrientation { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Ignored
|
||||
/// </summary>
|
||||
@@ -176,16 +174,6 @@ namespace WPCordovaClassLib.Cordova.Commands
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Used to open photo library
|
||||
/// </summary>
|
||||
PhotoChooserTask photoChooserTask;
|
||||
|
||||
/// <summary>
|
||||
/// Used to open camera application
|
||||
/// </summary>
|
||||
CameraCaptureTask cameraTask;
|
||||
|
||||
/// <summary>
|
||||
/// Camera options
|
||||
/// </summary>
|
||||
@@ -198,54 +186,70 @@ namespace WPCordovaClassLib.Cordova.Commands
|
||||
string[] args = JSON.JsonHelper.Deserialize<string[]>(options);
|
||||
// ["quality", "destinationType", "sourceType", "targetWidth", "targetHeight", "encodingType",
|
||||
// "mediaType", "allowEdit", "correctOrientation", "saveToPhotoAlbum" ]
|
||||
this.cameraOptions = new CameraOptions();
|
||||
this.cameraOptions.Quality = int.Parse(args[0]);
|
||||
this.cameraOptions.DestinationType = int.Parse(args[1]);
|
||||
this.cameraOptions.PictureSourceType = int.Parse(args[2]);
|
||||
this.cameraOptions.TargetWidth = int.Parse(args[3]);
|
||||
this.cameraOptions.TargetHeight = int.Parse(args[4]);
|
||||
this.cameraOptions.EncodingType = int.Parse(args[5]);
|
||||
this.cameraOptions.MediaType = int.Parse(args[6]);
|
||||
this.cameraOptions.AllowEdit = bool.Parse(args[7]);
|
||||
this.cameraOptions.CorrectOrientation = bool.Parse(args[8]);
|
||||
this.cameraOptions.SaveToPhotoAlbum = bool.Parse(args[9]);
|
||||
|
||||
//this.cameraOptions = String.IsNullOrEmpty(options) ?
|
||||
// new CameraOptions() : JSON.JsonHelper.Deserialize<CameraOptions>(options);
|
||||
cameraOptions = new CameraOptions();
|
||||
cameraOptions.Quality = int.Parse(args[0]);
|
||||
cameraOptions.DestinationType = int.Parse(args[1]);
|
||||
cameraOptions.PictureSourceType = int.Parse(args[2]);
|
||||
cameraOptions.TargetWidth = int.Parse(args[3]);
|
||||
cameraOptions.TargetHeight = int.Parse(args[4]);
|
||||
cameraOptions.EncodingType = int.Parse(args[5]);
|
||||
cameraOptions.MediaType = int.Parse(args[6]);
|
||||
cameraOptions.AllowEdit = bool.Parse(args[7]);
|
||||
cameraOptions.CorrectOrientation = bool.Parse(args[8]);
|
||||
cameraOptions.SaveToPhotoAlbum = bool.Parse(args[9]);
|
||||
|
||||
// a very large number will force the other value to be the bound
|
||||
if (cameraOptions.TargetWidth > -1 && cameraOptions.TargetHeight == -1)
|
||||
{
|
||||
cameraOptions.TargetHeight = 100000;
|
||||
}
|
||||
else if (cameraOptions.TargetHeight > -1 && cameraOptions.TargetWidth == -1)
|
||||
{
|
||||
cameraOptions.TargetWidth = 100000;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
this.DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, ex.Message));
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION, ex.Message));
|
||||
return;
|
||||
}
|
||||
|
||||
//TODO Check if all the options are acceptable
|
||||
|
||||
if(cameraOptions.DestinationType != Camera.FILE_URI && cameraOptions.DestinationType != Camera.DATA_URL )
|
||||
{
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Incorrect option: destinationType"));
|
||||
return;
|
||||
}
|
||||
|
||||
ChooserBase<PhotoResult> chooserTask = null;
|
||||
if (cameraOptions.PictureSourceType == CAMERA)
|
||||
{
|
||||
cameraTask = new CameraCaptureTask();
|
||||
cameraTask.Completed += onCameraTaskCompleted;
|
||||
cameraTask.Show();
|
||||
chooserTask = new CameraCaptureTask();
|
||||
}
|
||||
else if ((cameraOptions.PictureSourceType == PHOTOLIBRARY) || (cameraOptions.PictureSourceType == SAVEDPHOTOALBUM))
|
||||
{
|
||||
chooserTask = new PhotoChooserTask();
|
||||
}
|
||||
// if chooserTask is still null, then PictureSourceType was invalid
|
||||
if (chooserTask != null)
|
||||
{
|
||||
chooserTask.Completed += onTaskCompleted;
|
||||
chooserTask.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((cameraOptions.PictureSourceType == PHOTOLIBRARY) || (cameraOptions.PictureSourceType == SAVEDPHOTOALBUM))
|
||||
{
|
||||
photoChooserTask = new PhotoChooserTask();
|
||||
photoChooserTask.Completed += onPickerTaskCompleted;
|
||||
photoChooserTask.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.NO_RESULT));
|
||||
}
|
||||
Debug.WriteLine("Unrecognized PictureSourceType :: " + cameraOptions.PictureSourceType.ToString());
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.NO_RESULT));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onCameraTaskCompleted(object sender, PhotoResult e)
|
||||
public void onTaskCompleted(object sender, PhotoResult e)
|
||||
{
|
||||
var task = sender as ChooserBase<PhotoResult>;
|
||||
if (task != null)
|
||||
{
|
||||
task.Completed -= onTaskCompleted;
|
||||
}
|
||||
|
||||
if (e.Error != null)
|
||||
{
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR));
|
||||
@@ -259,125 +263,75 @@ namespace WPCordovaClassLib.Cordova.Commands
|
||||
{
|
||||
string imagePathOrContent = string.Empty;
|
||||
|
||||
if (cameraOptions.DestinationType == FILE_URI)
|
||||
// Save image back to media library
|
||||
// only save to photoalbum if it didn't come from there ...
|
||||
if (cameraOptions.PictureSourceType == CAMERA && cameraOptions.SaveToPhotoAlbum)
|
||||
{
|
||||
// Save image in media library
|
||||
if (cameraOptions.SaveToPhotoAlbum)
|
||||
{
|
||||
MediaLibrary library = new MediaLibrary();
|
||||
Picture pict = library.SavePicture(e.OriginalFileName, e.ChosenPhoto); // to save to photo-roll ...
|
||||
}
|
||||
|
||||
int orient = ImageExifHelper.getImageOrientationFromStream(e.ChosenPhoto);
|
||||
int newAngle = 0;
|
||||
switch (orient)
|
||||
{
|
||||
case ImageExifOrientation.LandscapeLeft:
|
||||
newAngle = 90;
|
||||
break;
|
||||
case ImageExifOrientation.PortraitUpsideDown:
|
||||
newAngle = 180;
|
||||
break;
|
||||
case ImageExifOrientation.LandscapeRight:
|
||||
newAngle = 270;
|
||||
break;
|
||||
case ImageExifOrientation.Portrait:
|
||||
default: break; // 0 default already set
|
||||
}
|
||||
|
||||
Stream rotImageStream = ImageExifHelper.RotateStream(e.ChosenPhoto, newAngle);
|
||||
|
||||
// we should return stream position back after saving stream to media library
|
||||
rotImageStream.Seek(0, SeekOrigin.Begin);
|
||||
|
||||
WriteableBitmap image = PictureDecoder.DecodeJpeg(rotImageStream);
|
||||
|
||||
imagePathOrContent = this.SaveImageToLocalStorage(image, Path.GetFileName(e.OriginalFileName));
|
||||
|
||||
|
||||
MediaLibrary library = new MediaLibrary();
|
||||
Picture pict = library.SavePicture(e.OriginalFileName, e.ChosenPhoto); // to save to photo-roll ...
|
||||
}
|
||||
else if (cameraOptions.DestinationType == DATA_URL)
|
||||
|
||||
int orient = ImageExifHelper.getImageOrientationFromStream(e.ChosenPhoto);
|
||||
int newAngle = 0;
|
||||
switch (orient)
|
||||
{
|
||||
imagePathOrContent = this.GetImageContent(e.ChosenPhoto);
|
||||
case ImageExifOrientation.LandscapeLeft:
|
||||
newAngle = 90;
|
||||
break;
|
||||
case ImageExifOrientation.PortraitUpsideDown:
|
||||
newAngle = 180;
|
||||
break;
|
||||
case ImageExifOrientation.LandscapeRight:
|
||||
newAngle = 270;
|
||||
break;
|
||||
case ImageExifOrientation.Portrait:
|
||||
default: break; // 0 default already set
|
||||
}
|
||||
else
|
||||
|
||||
if (newAngle != 0)
|
||||
{
|
||||
// TODO: shouldn't this happen before we launch the camera-picker?
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Incorrect option: destinationType"));
|
||||
return;
|
||||
using (Stream rotImageStream = ImageExifHelper.RotateStream(e.ChosenPhoto, newAngle))
|
||||
{
|
||||
// we should reset stream position after saving stream to media library
|
||||
rotImageStream.Seek(0, SeekOrigin.Begin);
|
||||
if (cameraOptions.DestinationType == DATA_URL)
|
||||
{
|
||||
imagePathOrContent = GetImageContent(rotImageStream);
|
||||
}
|
||||
else // FILE_URL
|
||||
{
|
||||
imagePathOrContent = SaveImageToLocalStorage(rotImageStream, Path.GetFileName(e.OriginalFileName));
|
||||
}
|
||||
}
|
||||
}
|
||||
else // no need to reorient
|
||||
{
|
||||
if (cameraOptions.DestinationType == DATA_URL)
|
||||
{
|
||||
imagePathOrContent = GetImageContent(e.ChosenPhoto);
|
||||
}
|
||||
else // FILE_URL
|
||||
{
|
||||
imagePathOrContent = SaveImageToLocalStorage(e.ChosenPhoto, Path.GetFileName(e.OriginalFileName));
|
||||
}
|
||||
}
|
||||
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.OK, imagePathOrContent));
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Error retrieving image."));
|
||||
}
|
||||
break;
|
||||
|
||||
case TaskResult.Cancel:
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Selection cancelled."));
|
||||
break;
|
||||
|
||||
default:
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Selection did not complete!"));
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onPickerTaskCompleted(object sender, PhotoResult e)
|
||||
{
|
||||
if (e.Error != null)
|
||||
{
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR));
|
||||
return;
|
||||
}
|
||||
|
||||
switch (e.TaskResult)
|
||||
{
|
||||
case TaskResult.OK:
|
||||
try
|
||||
{
|
||||
string imagePathOrContent = string.Empty;
|
||||
|
||||
if (cameraOptions.DestinationType == FILE_URI)
|
||||
{
|
||||
WriteableBitmap image = PictureDecoder.DecodeJpeg(e.ChosenPhoto);
|
||||
imagePathOrContent = this.SaveImageToLocalStorage(image, Path.GetFileName(e.OriginalFileName));
|
||||
}
|
||||
else if (cameraOptions.DestinationType == DATA_URL)
|
||||
{
|
||||
imagePathOrContent = this.GetImageContent(e.ChosenPhoto);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: shouldn't this happen before we launch the camera-picker?
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Incorrect option: destinationType"));
|
||||
return;
|
||||
}
|
||||
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.OK, imagePathOrContent));
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Error retrieving image."));
|
||||
}
|
||||
break;
|
||||
|
||||
case TaskResult.Cancel:
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Selection cancelled."));
|
||||
break;
|
||||
|
||||
default:
|
||||
DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, "Selection did not complete!"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns image content in a form of base64 string
|
||||
/// </summary>
|
||||
@@ -385,76 +339,119 @@ namespace WPCordovaClassLib.Cordova.Commands
|
||||
/// <returns>Base64 representation of the image</returns>
|
||||
private string GetImageContent(Stream stream)
|
||||
{
|
||||
int streamLength = (int)stream.Length;
|
||||
byte[] fileData = new byte[streamLength + 1];
|
||||
stream.Read(fileData, 0, streamLength);
|
||||
byte[] imageContent = null;
|
||||
|
||||
//use photo's actual width & height if user doesn't provide width & height
|
||||
if (cameraOptions.TargetWidth < 0 && cameraOptions.TargetHeight < 0)
|
||||
try
|
||||
{
|
||||
stream.Close();
|
||||
return Convert.ToBase64String(fileData);
|
||||
// Resize photo and convert to JPEG
|
||||
imageContent = ResizePhoto(stream);
|
||||
}
|
||||
else
|
||||
finally
|
||||
{
|
||||
// resize photo
|
||||
byte[] resizedFile = ResizePhoto(stream, fileData);
|
||||
stream.Close();
|
||||
return Convert.ToBase64String(resizedFile);
|
||||
stream.Dispose();
|
||||
}
|
||||
|
||||
return Convert.ToBase64String(imageContent);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Resize image
|
||||
/// </summary>
|
||||
/// <param name="stream">Image stream</param>
|
||||
/// <param name="fileData">File data</param>
|
||||
/// <returns>resized image</returns>
|
||||
private byte[] ResizePhoto(Stream stream, byte[] fileData)
|
||||
private byte[] ResizePhoto(Stream stream)
|
||||
{
|
||||
int streamLength = (int)stream.Length;
|
||||
int intResult = 0;
|
||||
|
||||
//output
|
||||
byte[] resizedFile;
|
||||
|
||||
stream.Read(fileData, 0, streamLength);
|
||||
|
||||
BitmapImage objBitmap = new BitmapImage();
|
||||
MemoryStream objBitmapStream = new MemoryStream(fileData);
|
||||
MemoryStream objBitmapStreamResized = new MemoryStream();
|
||||
WriteableBitmap objWB;
|
||||
objBitmap.SetSource(stream);
|
||||
objWB = new WriteableBitmap(objBitmap);
|
||||
objBitmap.CreateOptions = BitmapCreateOptions.None;
|
||||
|
||||
// resize the photo with user defined TargetWidth & TargetHeight
|
||||
Extensions.SaveJpeg(objWB, objBitmapStreamResized, cameraOptions.TargetWidth, cameraOptions.TargetHeight, 0, cameraOptions.Quality);
|
||||
WriteableBitmap objWB = new WriteableBitmap(objBitmap);
|
||||
objBitmap.UriSource = null;
|
||||
|
||||
//Convert the resized stream to a byte array.
|
||||
streamLength = (int)objBitmapStreamResized.Length;
|
||||
resizedFile = new Byte[streamLength]; //-1
|
||||
objBitmapStreamResized.Position = 0;
|
||||
//for some reason we have to set Position to zero, but we don't have to earlier when we get the bytes from the chosen photo...
|
||||
intResult = objBitmapStreamResized.Read(resizedFile, 0, streamLength);
|
||||
// Calculate resultant image size
|
||||
int width, height;
|
||||
if (cameraOptions.TargetWidth >= 0 && cameraOptions.TargetHeight >= 0)
|
||||
{
|
||||
// Keep proportionally
|
||||
double ratio = Math.Min(
|
||||
(double)cameraOptions.TargetWidth / objWB.PixelWidth,
|
||||
(double)cameraOptions.TargetHeight / objWB.PixelHeight);
|
||||
width = Convert.ToInt32(ratio * objWB.PixelWidth);
|
||||
height = Convert.ToInt32(ratio * objWB.PixelHeight);
|
||||
}
|
||||
else
|
||||
{
|
||||
width = objWB.PixelWidth;
|
||||
height = objWB.PixelHeight;
|
||||
}
|
||||
|
||||
//Hold the result stream
|
||||
using (MemoryStream objBitmapStreamResized = new MemoryStream())
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
// resize the photo with user defined TargetWidth & TargetHeight
|
||||
Extensions.SaveJpeg(objWB, objBitmapStreamResized, width, height, 0, cameraOptions.Quality);
|
||||
}
|
||||
finally
|
||||
{
|
||||
//Dispose bitmaps immediately, they are memory expensive
|
||||
DisposeImage(objBitmap);
|
||||
DisposeImage(objWB);
|
||||
GC.Collect();
|
||||
}
|
||||
|
||||
//Convert the resized stream to a byte array.
|
||||
int streamLength = (int)objBitmapStreamResized.Length;
|
||||
resizedFile = new Byte[streamLength]; //-1
|
||||
objBitmapStreamResized.Position = 0;
|
||||
|
||||
//for some reason we have to set Position to zero, but we don't have to earlier when we get the bytes from the chosen photo...
|
||||
objBitmapStreamResized.Read(resizedFile, 0, streamLength);
|
||||
}
|
||||
|
||||
return resizedFile;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Util: Dispose a bitmap resource
|
||||
/// </summary>
|
||||
/// <param name="image">BitmapSource subclass to dispose</param>
|
||||
private void DisposeImage(BitmapSource image)
|
||||
{
|
||||
if (image != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var ms = new MemoryStream(new byte[] { 0x0 }))
|
||||
{
|
||||
image.SetSource(ms);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves captured image in isolated storage
|
||||
/// </summary>
|
||||
/// <param name="imageFileName">image file name</param>
|
||||
/// <returns>Image path</returns>
|
||||
private string SaveImageToLocalStorage(WriteableBitmap image, string imageFileName)
|
||||
private string SaveImageToLocalStorage(Stream stream, string imageFileName)
|
||||
{
|
||||
|
||||
if (image == null)
|
||||
if (stream == null)
|
||||
{
|
||||
throw new ArgumentNullException("imageBytes");
|
||||
}
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
var isoFile = IsolatedStorageFile.GetUserStoreForApplication();
|
||||
|
||||
if (!isoFile.DirectoryExists(isoFolder))
|
||||
@@ -464,16 +461,41 @@ namespace WPCordovaClassLib.Cordova.Commands
|
||||
|
||||
string filePath = System.IO.Path.Combine("///" + isoFolder + "/", imageFileName);
|
||||
|
||||
using (var stream = isoFile.CreateFile(filePath))
|
||||
using (IsolatedStorageFileStream outputStream = isoFile.CreateFile(filePath))
|
||||
{
|
||||
// resize image if Height and Width defined via options
|
||||
if (cameraOptions.TargetHeight > 0 && cameraOptions.TargetWidth > 0)
|
||||
BitmapImage objBitmap = new BitmapImage();
|
||||
objBitmap.SetSource(stream);
|
||||
objBitmap.CreateOptions = BitmapCreateOptions.None;
|
||||
|
||||
WriteableBitmap objWB = new WriteableBitmap(objBitmap);
|
||||
objBitmap.UriSource = null;
|
||||
|
||||
try
|
||||
{
|
||||
image.SaveJpeg(stream, cameraOptions.TargetWidth, cameraOptions.TargetHeight, 0, cameraOptions.Quality);
|
||||
|
||||
//use photo's actual width & height if user doesn't provide width & height
|
||||
if (cameraOptions.TargetWidth < 0 && cameraOptions.TargetHeight < 0)
|
||||
{
|
||||
objWB.SaveJpeg(outputStream, objWB.PixelWidth, objWB.PixelHeight, 0, cameraOptions.Quality);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Resize
|
||||
//Keep proportionally
|
||||
double ratio = Math.Min((double)cameraOptions.TargetWidth / objWB.PixelWidth, (double)cameraOptions.TargetHeight / objWB.PixelHeight);
|
||||
int width = Convert.ToInt32(ratio * objWB.PixelWidth);
|
||||
int height = Convert.ToInt32(ratio * objWB.PixelHeight);
|
||||
|
||||
// resize the photo with user defined TargetWidth & TargetHeight
|
||||
objWB.SaveJpeg(outputStream, width, height, 0, cameraOptions.Quality);
|
||||
}
|
||||
}
|
||||
else
|
||||
finally
|
||||
{
|
||||
image.SaveJpeg(stream, image.PixelWidth, image.PixelHeight, 0, cameraOptions.Quality);
|
||||
//Dispose bitmaps immediately, they are memory expensive
|
||||
DisposeImage(objBitmap);
|
||||
DisposeImage(objWB);
|
||||
GC.Collect();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -484,6 +506,10 @@ namespace WPCordovaClassLib.Cordova.Commands
|
||||
//TODO: log or do something else
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
stream.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user