openEventsPlatformApp/plugins/cordova-plugin-camera/doc/zh/index.md
plugins/cordova-plugin-camera/doc/zh/index.mdRaw
1<!---
2 Licensed to the Apache Software Foundation (ASF) under one
3 or more contributor license agreements. See the NOTICE file
4 distributed with this work for additional information
5 regarding copyright ownership. The ASF licenses this file
6 to you under the Apache License, Version 2.0 (the
7 "License"); you may not use this file except in compliance
8 with the License. You may obtain a copy of the License at
9
10 http://www.apache.org/licenses/LICENSE-2.0
11
12 Unless required by applicable law or agreed to in writing,
13 software distributed under the License is distributed on an
14 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 KIND, either express or implied. See the License for the
16 specific language governing permissions and limitations
17 under the License.
18-->
19
20# cordova-plugin-camera
21
22這個外掛程式定義了一個全球 `navigator.camera` 物件,它提供了 API,拍照,從系統的圖像庫中選擇圖像。
23
24雖然該物件附加到全球範圍內 `導航器`,它不可用直到 `deviceready` 事件之後。
25
26 document.addEventListener("deviceready", onDeviceReady, false);
27 function onDeviceReady() {
28 console.log(navigator.camera);
29 }
30
31
32## 安裝
33
34 cordova plugin add cordova-plugin-camera
35
36
37## navigator.camera.getPicture
38
39需要一張照片,使用相機,或從設備的圖像庫檢索一張照片。 圖像被傳遞給成功回檔的 base64 編碼 `String`,或作為 URI 為影像檔。 該方法本身返回一個 `CameraPopoverHandle` 物件,它可以用來重新置放檔選擇氣泡框。
40
41 navigator.camera.getPicture( cameraSuccess, cameraError, cameraOptions );
42
43
44### 說明
45
46`camera.getPicture` 函數打開該設備的預設攝像頭應用程式,允許使用者拍照。 `Camera.sourceType` 等於 `Camera.PictureSourceType.CAMERA` 時,預設情況下,發生此行為。 一旦使用者打斷了他的照片,相機應用程式關閉,且應用程式還原。
47
48如果 `Camera.sourceType` 是 `Camera.PictureSourceType.PHOTOLIBRARY` 或 `Camera.PictureSourceType.SAVEDPHOTOALBUM`,然後顯示一個對話方塊,允許使用者選擇一個現有的圖像。 `camera.getPicture` 函數返回一個 `CameraPopoverHandle` 物件,它可以用於重新置放圖像選擇的對話方塊,例如,當設備的方向變化。
49
50傳回值是發送到 `cameraSuccess` 回呼函數中,在以下的格式,具體取決於指定的 `cameraOptions` 之一:
51
52* A `String` 包含的 base64 編碼的照片圖像。
53
54* A `String` 表示在本機存放區 (預設值) 上的影像檔位置。
55
56你可以做任何你想要的編碼的圖像或 URI,例如:
57
58* 呈現在圖像 `<img>` 標記,如下面的示例所示
59
60* 保存本地的資料 ( `LocalStorage` , [Lawnchair][1],等等.)
61
62* 將資料發佈到遠端伺服器
63
64 [1]: http://brianleroux.github.com/lawnchair/
65
66**注**: 在更新設備上的照片解析度是很好。 選擇從設備的庫的照片是不壓縮螢幕使其以較低的品質,即使指定了一個 `quality` 參數。 要避免常見的記憶體問題,請將 `Camera.destinationType` 設置為 `FILE_URI`,而不是 `DATA_URL`.
67
68### 支援的平臺
69
70* 亞馬遜火 OS
71* Android 系統
72* 黑莓 10
73* 瀏覽器
74* 火狐瀏覽器的作業系統
75* iOS
76* 泰
77* Windows Phone 7 和 8
78* Windows 8
79
80### 首選項 (iOS)
81
82* **CameraUsesGeolocation**(布林值,預設值為 false)。 用於捕獲 jpeg 檔,設置為 true,以在 EXIF 頭資訊中獲取地理定位資料。 這將觸發請求的地理位置的許可權,如果設置為 true。
83
84 <preference name="CameraUsesGeolocation" value="false" />
85
86
87### 亞馬遜火 OS 怪癖
88
89亞馬遜火 OS 使用意圖啟動相機活動設備來捕捉圖像上, 和手機上記憶體不足,科爾多瓦活動可能被殺害。 在這種情況下,可能不會顯示圖像時恢復了科爾多瓦活動。
90
91### Android 的怪癖
92
93Android 使用意圖以啟動相機活動設備來捕捉圖像上, 和手機上記憶體不足,科爾多瓦活動可能被殺害。 在這種情況下,可能不會顯示圖像時恢復了科爾多瓦活動。
94
95### 瀏覽器的怪癖
96
97可以只返回照片作為 base64 編碼的圖像。
98
99### 火狐瀏覽器作業系統的怪癖
100
101觀景窗外掛程式目前實施使用 [Web 活動][2].
102
103 [2]: https://hacks.mozilla.org/2013/01/introducing-web-activities/
104
105### iOS 的怪癖
106
107包括 JavaScript `alert ()` 中的回呼函數會導致問題。 包裝內 `setTimeout()` 允許 iOS 圖像選取器或氣泡框以完全關閉之前,警報將顯示警報:
108
109 setTimeout(function() {
110 // do your thing here!
111 }, 0);
112
113
114### Windows Phone 7 的怪癖
115
116調用本機攝像頭應用程式,而通過 Zune 所連接的設備不能工作,並且觸發錯誤回檔。
117
118### 泰怪癖
119
120泰只支援 `destinationType` 的 `Camera.DestinationType.FILE_URI` 和 `Camera.PictureSourceType.PHOTOLIBRARY` 的 `sourceType`.
121
122### 示例
123
124拍一張照片,並檢索它作為一個 base64 編碼的圖像:
125
126 navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
127 destinationType: Camera.DestinationType.DATA_URL
128 });
129
130 function onSuccess(imageData) {
131 var image = document.getElementById('myImage');
132 image.src = "data:image/jpeg;base64," + imageData;
133 }
134
135 function onFail(message) {
136 alert('Failed because: ' + message);
137 }
138
139
140拍一張照片和檢索圖像的檔位置:
141
142 navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
143 destinationType: Camera.DestinationType.FILE_URI });
144
145 function onSuccess(imageURI) {
146 var image = document.getElementById('myImage');
147 image.src = imageURI;
148 }
149
150 function onFail(message) {
151 alert('Failed because: ' + message);
152 }
153
154
155## CameraOptions
156
157要自訂相機設置的可選參數。
158
159 { quality : 75,
160 destinationType : Camera.DestinationType.DATA_URL,
161 sourceType : Camera.PictureSourceType.CAMERA,
162 allowEdit : true,
163 encodingType: Camera.EncodingType.JPEG,
164 targetWidth: 100,
165 targetHeight: 100,
166 popoverOptions: CameraPopoverOptions,
167 saveToPhotoAlbum: false };
168
169
170### 選項
171
172* **品質**: 保存的圖像,表示為範圍 0-100,100,是通常全解析度,無損失從檔案壓縮的品質。 預設值為 50。 *(人數)*(請注意相機的解析度有關的資訊是不可用)。
173
174* **可**: 選擇傳回值的格式。預設值是 FILE_URI。定義在 `navigator.camera.DestinationType` *(人數)*
175
176 Camera.DestinationType = {
177 DATA_URL : 0, // Return image as base64-encoded string
178 FILE_URI : 1, // Return image file URI
179 NATIVE_URI : 2 // Return image native URI (e.g., assets-library:// on iOS or content:// on Android)
180 };
181
182
183* **時**: 設置圖片的來源。預設值是觀景窗。定義在 `navigator.camera.PictureSourceType` *(人數)*
184
185 Camera.PictureSourceType = {
186 PHOTOLIBRARY : 0,
187 CAMERA : 1,
188 SAVEDPHOTOALBUM : 2
189 };
190
191
192* **allowEdit**: 允許簡單編輯前選擇圖像。*(布林)*
193
194* **encodingType**: 選擇返回的影像檔的編碼。預設值為 JPEG。定義在 `navigator.camera.EncodingType` *(人數)*
195
196 Camera.EncodingType = {
197 JPEG : 0, // Return JPEG encoded image
198 PNG : 1 // Return PNG encoded image
199 };
200
201
202* **targetWidth**: 向尺度圖像的圖元寬度。必須用**targetHeight**。縱橫比保持不變。*(人數)*
203
204* **targetHeight**: 以圖元為單位向尺度圖像的高度。必須用**targetWidth**。縱橫比保持不變。*(人數)*
205
206* **媒體類型**: 設置的媒體,從選擇類型。 時才起作用 `PictureSourceType` 是 `PHOTOLIBRARY` 或 `SAVEDPHOTOALBUM` 。 定義在 `nagivator.camera.MediaType` *(人數)*
207
208 Camera.MediaType = {
209 PICTURE: 0, // allow selection of still pictures only. 預設情況。 Will return format specified via DestinationType
210 VIDEO: 1, // allow selection of video only, WILL ALWAYS RETURN FILE_URI
211 ALLMEDIA : 2 // allow selection from all media types
212 };
213
214
215* **correctOrientation**: 旋轉圖像,該設備時捕獲的定向的正確。*(布林)*
216
217* **saveToPhotoAlbum**: 將圖像保存到相冊在設備上捕獲後。*(布林)*
218
219* **popoverOptions**: 只有 iOS 在 iPad 中指定氣泡框位置的選項。在中定義`CameraPopoverOptions`.
220
221* **cameraDirection**: 選擇相機以使用 (前面或後面-面向)。預設值是背。定義在 `navigator.camera.Direction` *(人數)*
222
223 Camera.Direction = {
224 BACK : 0, // Use the back-facing camera
225 FRONT : 1 // Use the front-facing camera
226 };
227
228
229### 亞馬遜火 OS 怪癖
230
231* 任何 `cameraDirection` 值回朝的照片中的結果。
232
233* 忽略 `allowEdit` 參數。
234
235* `Camera.PictureSourceType.PHOTOLIBRARY`和 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 都顯示相同的相冊。
236
237### Android 的怪癖
238
239* 任何 `cameraDirection` 值結果在背面的照片。
240
241* 忽略 `allowEdit` 參數。
242
243* `Camera.PictureSourceType.PHOTOLIBRARY`和 `Camera.PictureSourceType.SAVEDPHOTOALBUM` 都顯示相同的寫真集。
244
245### 黑莓 10 的怪癖
246
247* 忽略 `quality` 參數。
248
249* 忽略 `allowEdit` 參數。
250
251* `Camera.MediaType`不受支援。
252
253* 忽略 `correctOrientation` 參數。
254
255* 忽略 `cameraDirection` 參數。
256
257### 火狐瀏覽器作業系統的怪癖
258
259* 忽略 `quality` 參數。
260
261* `Camera.DestinationType`將被忽略並且等於 `1` (影像檔的 URI)
262
263* 忽略 `allowEdit` 參數。
264
265* 忽略 `PictureSourceType` 參數 (使用者選擇它在對話方塊視窗中)
266
267* 忽略`encodingType`
268
269* 忽略了 `targetWidth` 和`targetHeight`
270
271* `Camera.MediaType`不受支援。
272
273* 忽略 `correctOrientation` 參數。
274
275* 忽略 `cameraDirection` 參數。
276
277### iOS 的怪癖
278
279* 設置 `quality` 低於 50,避免在某些設備上的記憶體不足錯誤。
280
281* 當使用 `destinationType.FILE_URI` ,照片都保存在應用程式的臨時目錄。應用程式結束時,將刪除該應用程式的臨時目錄中的內容。
282
283### 泰怪癖
284
285* 不支援的選項
286
287* 總是返回一個檔的 URI
288
289### Windows Phone 7 和 8 的怪癖
290
291* 忽略 `allowEdit` 參數。
292
293* 忽略 `correctOrientation` 參數。
294
295* 忽略 `cameraDirection` 參數。
296
297* 忽略 `saveToPhotoAlbum` 參數。 重要: 使用 wp7/8 科爾多瓦攝像頭 API 拍攝的所有圖像總是都複製到手機的相機膠捲。 根據使用者的設置,這可能也意味著圖像是自動上傳到他們另。 這有可能意味著的圖像,可以比你的應用程式的目的更多的觀眾。 如果此阻滯劑您的應用程式,您將需要實現 CameraCaptureTask 在 msdn 上記載: [HTTP://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx][3]你可能還評論或在[問題追蹤器][4]的向上投票的相關的問題
298
299* 忽略了 `mediaType` 屬性的 `cameraOptions` 作為 Windows Phone SDK 並不提供從 PHOTOLIBRARY 中選擇視頻的方法。
300
301 [3]: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394006.aspx
302 [4]: https://issues.apache.org/jira/browse/CB-2083
303
304## CameraError
305
306onError 的回呼函數提供了一條錯誤訊息。
307
308 function(message) {
309 // Show a helpful message
310 }
311
312
313### 參數
314
315* **message**: 消息提供的設備的本機代碼。*(String)*
316
317## cameraSuccess
318
319提供的圖像資料的 onSuccess 回呼函數。
320
321 function(imageData) {
322 // Do something with the image
323 }
324
325
326### 參數
327
328* **imageData**: Base64 編碼進行編碼的圖像資料,*或*影像檔的 URI,取決於 `cameraOptions` 效果。*(String)*
329
330### 示例
331
332 // Show image
333 //
334 function cameraCallback(imageData) {
335 var image = document.getElementById('myImage');
336 image.src = "data:image/jpeg;base64," + imageData;
337 }
338
339
340## CameraPopoverHandle
341
342由 `navigator.camera.getPicture` 創建的氣泡框對話方塊的控制碼.
343
344### 方法
345
346* **setPosition**: 設置氣泡框的位置。
347
348### 支援的平臺
349
350* iOS
351
352### setPosition
353
354設置氣泡框的位置。
355
356**參數**:
357
358* `cameraPopoverOptions`: `CameraPopoverOptions` ,指定新的位置
359
360### 示例
361
362 var cameraPopoverHandle = navigator.camera.getPicture(onSuccess, onFail,
363 { destinationType: Camera.DestinationType.FILE_URI,
364 sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
365 popoverOptions: new CameraPopoverOptions(300, 300, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY)
366 });
367
368 // Reposition the popover if the orientation changes.
369 window.onorientationchange = function() {
370 var cameraPopoverOptions = new CameraPopoverOptions(0, 0, 100, 100, Camera.PopoverArrowDirection.ARROW_ANY);
371 cameraPopoverHandle.setPosition(cameraPopoverOptions);
372 }
373
374
375## CameraPopoverOptions
376
377iOS 僅指定氣泡框的錨元素的位置和箭頭方向,從 iPad 庫或專輯選擇圖像時的參數。
378
379 { x : 0,
380 y : 32,
381 width : 320,
382 height : 480,
383 arrowDir : Camera.PopoverArrowDirection.ARROW_ANY
384 };
385
386
387### CameraPopoverOptions
388
389* **x**: x 螢幕元素到其錨定氣泡框上的圖元座標。*(人數)*
390
391* **y**: 螢幕元素到其錨定氣泡框上的 y 圖元座標。*(人數)*
392
393* **width**: 寬度以圖元為單位),到其錨定氣泡框上的螢幕元素。*(人數)*
394
395* **height**: 高度以圖元為單位),到其錨定氣泡框上的螢幕元素。*(人數)*
396
397* **arrowDir**: 氣泡框上的箭頭應指向的方向。定義在 `Camera.PopoverArrowDirection` *(人數)*
398
399 Camera.PopoverArrowDirection = {
400 ARROW_UP : 1, // matches iOS UIPopoverArrowDirection constants
401 ARROW_DOWN : 2,
402 ARROW_LEFT : 4,
403 ARROW_RIGHT : 8,
404 ARROW_ANY : 15
405 };
406
407
408請注意氣泡框的大小可能會更改箭頭的方向和螢幕的方向進行調整。 請確保帳戶方向更改時指定錨元素位置。
409
410## navigator.camera.cleanup
411
412刪除中間從臨時存儲攝像機所拍攝的照片。
413
414 navigator.camera.cleanup( cameraSuccess, cameraError );
415
416
417### 描述
418
419刪除保留在臨時存儲在調用 `camera.getPicture` 後的中間的影像檔。 適用只有當 `Camera.sourceType` 的值等於 `Camera.PictureSourceType.CAMERA` 和 `Camera.destinationType` 等於 `Camera.DestinationType.FILE_URI`.
420
421### 支援的平臺
422
423* iOS
424
425### 示例
426
427 navigator.camera.cleanup(onSuccess, onFail);
428
429 function onSuccess() {
430 console.log("Camera cleanup success.")
431 }
432
433 function onFail(message) {
434 alert('Failed because: ' + message);
435 }