使用HTML5+呼叫手機攝像頭和相簿
例項:
具體流程:點選觸發選擇拍照或相簿-->拍照或相簿選擇照片-->拿到圖片路徑進行壓縮-->讀取檔案並顯示在頁面上
- 首先是html程式碼,很簡單,就是給一個新增按鈕,點選觸發事件,這裡我就不把css檔案放出來,大家知道是一個新增按鈕就行。
<h2 class="title-detail"> 圖片描述 </h2> <input type="hidden" id="picIndex" value="0"> <div id='image-list' class="row image-list"> <!-- <input id="upload_image" type="file" name="image" accept="image/*" /> --> <div class="image-item space" onclick="showActionSheet()"> <div class="image-up"></div> </div> </div>
- 後面我們來看下具體的js程式碼,按照上面我們說的方法共分為5個方法,具體如下:
//圖片顯示 function showPics(url,name){ //根據路徑讀取到檔案 plus.io.resolveLocalFileSystemURL(url,function(entry){ entry.file( function(file){ var fileReader = new plus.io.FileReader(); fileReader.readAsDataURL(file); fileReader.onloadend = function(e) { var picUrl = e.target.result.toString(); var picIndex = $("#picIndex").val(); var nowIndex = parseInt(picIndex)+1; $("#picIndex").val(nowIndex); var html = ''; html += '<div class="image-item " id="item'+nowIndex+'">'; html += '<div class="image-close" onclick="delPic('+nowIndex+')">X</div>'; html += '<div><img src="'+picUrl+'" class="upload_img" style="width:100%;height:100%;"/></div>'; html += '</div>'; html += $("#image-list").html(); $("#image-list").html(html); } }); }); } //壓縮圖片 function compressImage(url,filename){ var name="_doc/upload/"+filename; plus.zip.compressImage({ src:url,//src: (String 型別 )壓縮轉換原始圖片的路徑 dst:name,//壓縮轉換目標圖片的路徑 quality:40,//quality: (Number 型別 )壓縮圖片的質量.取值範圍為1-100 overwrite:true//overwrite: (Boolean 型別 )覆蓋生成新檔案 }, function(zip) { //頁面顯示圖片 showPics(zip.target,name); },function(error) { plus.nativeUI.toast("壓縮圖片失敗,請稍候再試"); }); } //呼叫手機攝像頭並拍照 function getImage() { var cmr = plus.camera.getCamera(); cmr.captureImage(function(p) { plus.io.resolveLocalFileSystemURL(p, function(entry) { compressImage(entry.toLocalURL(),entry.name); }, function(e) { plus.nativeUI.toast("讀取拍照檔案錯誤:" + e.message); }); }, function(e) { }, { filter: 'image' }); } //從相簿選擇照片(單張) function galleryImgs() { plus.gallery.pick(function(e) { var name = e.substr(e.lastIndexOf('/') + 1); compressImage(e,name); }, function(e) { }, { filter: "image" }); } //從相簿選擇照片(多張) galleryImgs(){ let _this = this; plus.gallery.pick(function(event) { var files = event.files; for(var i=0;i<files.length;++i){ var file = files[i]; plus.io.resolveLocalFileSystemURL(file,function(entry){ _this.showPics(entry.fullPath); }); } }, function(e) { }, { filter: "image", multiple:true }); } //點選事件,彈出選擇攝像頭和相簿的選項 function showActionSheet() { var bts = [{ title: "拍照" }, { title: "從相簿選擇" }]; plus.nativeUI.actionSheet({ cancel: "取消", buttons: bts }, function(e) { if (e.index == 1) { getImage(); } else if (e.index == 2) { galleryImgs(); } } ); }
- 有幾點進行說明下:(1):壓縮圖片方法,這裡我採用的是重新寫一個新檔案 (2):圖片顯示方法,該方法很重要。因為我這邊坐的是WEB端APP,頁面都由伺服器返回,我們可以拿到的是手機本地的圖片,網上很多說法是直接拿檔案路徑就顯示了,但是我卻怎麼都沒顯示出來。所以才用了FileReader將本地檔案讀取過來,e.target.result.toString();這個方法返回的就是我們的圖片的base64編碼,所以你看到下面我是動態拼HTML頁面,直接將該內容賦值給img標籤的src就可以直接顯示圖片。【這裡曾經糾結很久】有了這個base64編碼的url,我們就可以直接上傳到後臺。
使用注意:
這裡主要講打包工具不同需要做的工作也不太一樣。我這邊是用的Hbuilder線上打包,當然外殼也可以是Android環境打包,下面具體講下要注意的地方。
- Hbuilder:這個是一個很方便的web開發工具,可以線上打包APP。【由於網路問題,我上傳不了圖片,儘量文字描述】我們需要在Hbuilder裡面建一個APP專案,點開manifest.json檔案,這個檔案就是我們APP的配置資訊,下面導航欄分別為:應用資訊、圖示配置、啟動Flash配置、SDK配置、許可權模組配置等。一般我們需要配下應用資訊(APP的名字、入口),圖示,啟動flash(可以選擇啟動圖片),SDK配置一般是一些地圖、支付、推送等。重點來了,我們如果使用HTML5+,需要在模組許可權配置裡面,選擇我們用到的功能,比如我們用到了plus.nativeUI.*,就需要選擇NativeUI(原生UI)模組,也就是說,我們用了plus.xx.*,就需要勾選相應的模組。【這個manifest.json是視覺化介面,大家下載安裝就能明白】
- Android環境:相對Hbuilder,Android環境稍微複雜一點,由於我沒有在Android環境裡搞過這個,這裡只是介紹下Hbuilder官網的一些使用說明。
舉例說明:例如我們需要使用Camera物件,需要做如下配置:
2.1:新增camera.jar。
2.2:AndroidManifest.xml permission節點中新增:
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera"/>2.3:properties.xml features節點中新增:
<featurename="Camera" value="io.dcloud.js.camera.CameraFeatureImpl"/>
- 這個配置方式在Hbuilder的官網上可以下載,裡面包含所有的jar包和不同的許可權所需的配置。
- 感謝分享http://blog.csdn.net/u013185616/article/details/53195820
相關推薦
使用HTML5+呼叫手機攝像頭和相簿
例項: 具體流程:點選觸發選擇拍照或相簿-->拍照或相簿選擇照片-->拿到圖片路徑進行壓縮-->讀取檔案並顯示在頁面上 首先是html程式碼,很簡單,就是給一個新增按鈕,點選觸發事件,這裡我就不把css檔案放出來,大家知道是一個新增按鈕就行。 &
html5呼叫手機攝像頭
<input type="file" accept="image/*" capture="camera"><input type="file" accept="video/*" capture="camcorder"><input type="file" accept="audi
Html5呼叫手機攝像頭並實現人臉識別
需求 混合App開發,原生殼子+webApp,在web部分呼叫原生攝像頭功能並且在網頁指定區域顯示攝像頭內容,同時可以手動拍照並進行人臉識別,將識別結果顯示在網頁上。 技術棧 vue、Html5、video標籤、Android、IOS、百度AI 分析 1、使用navi
HTML5呼叫手機攝像頭拍照
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ http://blog.sina.com.cn/s/blog_4ad7c2540101lnak.html HTML5 The Media
H5 file呼叫手機相機和相簿(相容安卓ios,親測有效)
<input id="input" type="file"/>標籤,iOS直接吊起相機拍照或是相簿選擇,但Android中只調起選擇相簿,沒有調起相機拍照 解決辦法: 只需要加上 accept="image/*" 就完美的相容安卓和IOS了(accept表示開啟的系統檔案目錄) <
html5呼叫手機攝像頭,實現拍照上傳功能
http://www.glve.net/html5-calls-cell-phone-cameras-to-achieve-photo-upload-feature.html 今天做手機網站,想實現手機掃描二維碼功能。首先實現在瀏覽器中呼叫手機攝像頭,實現拍照功能並且把拍下的照片顯示在頁面並上傳到伺服器
Vue呼叫手機相機和相簿以及上傳
元件<template> <div> <input id="upload_file" type="file" style="display: none;" accept='image/*' name="file" @
HTML5呼叫手機攝像機、相簿功能
input標籤 type值為file,可以呼叫系統預設的照相機、相簿、攝像機、錄音功能。先上程式碼:<input type="file" accept="image/*" capture="camera"><input type="file" accept=
HTML5 呼叫手機攝像頭掃描二維碼
最近有個專案需要使用H5呼叫手機攝像頭掃描二維碼斌且識別。(很奇葩的需求) 百度了下找到了這個api: 舊版:(目前只有UC瀏覽器支援,其他的手機瀏覽器一律沒有反應) https://developer.mozilla.org/zh-CN/docs/Web/API/Navi
html5 file呼叫手機攝像頭
在切圖網一個客戶的webapp專案中需要用到 html5呼叫手機攝像頭,找了很多資料,大都是 js呼叫api 然後怎樣怎樣,做了幾個demo測試發現根本不行, 後來恍然大悟,用html5自帶的 input file="" ,純html5,並且不涉及到js ,
Android學習筆記9-呼叫攝像頭和相簿
呼叫攝像頭和手機的相簿 呼叫手機的攝像頭和相機拍照的功能,在許多app中都非常常見,當我們用qq,微信,微博等app給別人分享圖片時都會用到這個功能。 1,呼叫攝像頭拍照 activity_main.xml佈局程式碼 <?xml version="1.0" enc
HTML5+呼叫手機相簿,轉碼為base64並替換元素背景圖
HTML5+ 呼叫手機相簿圖片,轉化為bas64編碼上傳並顯示。 這個方法存在一個弊端: 圖片轉碼為Base64格式時間長,上傳時間長,如果使用者在base64編碼轉換完成前,點選提交按鈕,會導致沒有上傳或者上傳有誤。 故,不建議使用。更好的方式是使用檔案上傳,見另一篇文章
HTML5呼叫手機攝像拍照、相簿等功能樣式美化及demo
最近用MUI做了個移動端專案,設計中涉及到呼叫手機攝像頭拍照等功能需求,然而在PLUS環境下才能直接呼叫,這就讓人有點頭疼了,後經查詢資料學習瞭解到有一個很簡單的方法就是input:file標籤,不需要複雜程式碼操作就能實現呼叫拍照、相簿等功能。 //capture -- 設定選擇需
(親測可用)html5 file呼叫手機攝像頭
在切圖網一個客戶的webapp專案中需要用到 html5呼叫手機攝像頭,找了很多資料,大都是 js呼叫api 然後怎樣怎樣,做了幾個demo測試發現根本不行, 後來恍然大悟,用html5自帶的 input file="" ,純html5,並且不涉及到js ,就可以實現。
呼叫攝像頭和相簿(呼叫攝像頭拍照和從相簿中選擇圖片)
public class MainActivity extends Activity { public static final int TAKE_PHOTO=1; public static final int CROP_PHOTO=0; public static
Html5呼叫本地攝像頭
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> #c
html5呼叫手機相機並壓縮、上傳
近日剛做的一個功能,要在app裡使用內嵌頁面進行影象的上傳。 從功能上看,原生的實現應該是最好的。畢竟頁面上所有的東西都隔著一個瀏覽器,所有的實現都要依賴瀏覽器提供的介面,不同的瀏覽器對介面的實現又有差異……到最後又會陷入相容性的大坑! 吐槽歸吐槽,但是折騰的勁頭不能丟! 使用input file[
H5呼叫手機攝像頭,圖片,視訊等
限制只能選擇圖片<input type="file" accept="image/*">限制只能選擇視訊<input type="file" accept="video/*">限
Android呼叫系統相機和相簿
拍照和相簿的功能在實際開發中是最常見的功能,這裡記錄下。 準備工作 許可權 1234 <!-- 往SDCard寫入資料許可權 --> <uses-permission android:name="android.permission.WRIT
linux opencv呼叫手機攝像頭
手機端安裝IP攝像頭 先上原始碼: #include "cv.h" #include "highgui.h" #include <iostream> int main(int, char**) { cv::VideoCapture vcap;