簡介
APICloud 拍照模塊
https://docs.apicloud.com/Client-API/Func-Ext/FNPhotograph
正如文檔所說,有2種拍照的方案。
(1) 通過 open 接口打開一個自帶 UI 的拍照視圖…
(2) 開發者可通過 openCameraView 接口打開一個純視頻界面的 frame
下面分開進行介紹
方式1
自帶拍照界面,使用方便,流暢。
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.open({
path: 'fs://savePath',
album: false ,
quality: 'medium' // quality: 'low'
}, function(ret){
if (ret.eventType == "show") {
} else if (ret.eventType == "takePhoto") {
alert(ret.imagePath);
FNPhotograph.close();
} else if (ret.eventType == "close") {
alert("close");
} else {
alert(JSON.stringify(ret));
}
});
備註:有時候機型性能不太好,打開攝像頭可能得等一段時間。
方式2
適合自定義界面的需求,比如:不想要選擇系統相冊圖片的功能。
// 拍照
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.openCameraView({
rect: {
x: 0,
y: 0,
w: 'auto',
h: api.winHeight - 100
},
orientation: 'landscapeRight',
fixedOn: api.frameName
}, function(ret) {
if (!ret.status) {
alert('相機打開失敗,請確認已經授權使用相機!');
}
// alert('openCameraView ret:'+JSON.stringify(ret));
})
可以調整頁面的高度,在頁面底部放上一個拍照按鈕,通過點擊該按鈕,調用拍照功能,拍照成功後,自動關閉照相頁面。
var FNPhotograph = api.require('FNPhotograph');
FNPhotograph.takePhoto({
quality: 'medium',
path: examPhotoPath,
album: false
}, (ret) => {
var imagePath = (ret.imagePath);
FNPhotograph.closeCameraView((ret) => {
if (ret) {
alert("拍照成功!");
}
});
});
如果app採用橫盤的方式進行拍攝,拍出的照片,會自動旋轉了90度。
【解決方法】簡單地,在顯示拍攝照片的地方,添加 css 樣式旋轉,糾正旋轉的照片
style="transform:rotate(-90deg); "
總結
官方模塊文檔中的例子代碼,有些地方參數寫得不準,需要覈對文檔參數
拍照模塊調試起來比較麻煩,要多耐下性子進行調試