真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

html5調(diào)用相冊,HTML相冊

怎么用html5或js調(diào)用手機的攝像頭拍照上傳以及調(diào)用手機相冊選取照片

1、實現(xiàn)頭的方法代碼。

網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了柘城免費建站歡迎大家使用!

2、編寫CSS樣式的方法代碼。

3、html上傳代碼。

4、JS處理方法代碼。

5、測試結果如下。

注意事項:

JavaScript是一種網(wǎng)絡腳本語言,在web應用開發(fā)中得到了廣泛的應用,它經(jīng)常被用來為網(wǎng)頁添加各種動態(tài)功能,為用戶提供更加流暢美觀的瀏覽效果,通常JavaScript腳本被嵌入到HTML中來實現(xiàn)自己的功能。

html5怎樣調(diào)用手機攝像頭或者相冊

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

function?showPics(url,name){??????????

//根據(jù)路徑讀取到文件???

plus.io.resolveLocalFileSystemURL(url,function(entry){??

entry.file(?function(file){??

var?fileReader?=?new?plus.io.FileReader();??

fileReader.readAsDataURL(file);??

span?style="white-space:pre"???/span???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?+=?'divimg?src="'+picUrl+'"?class="upload_img"?style="width:100%;height:100%;"http://div';??

html?+=?'/div';??

html?+=?$("#image-list").html();??

$("#image-list").html(html);???

span?style="white-space:pre"???/span}??

});??

});???

}??

//壓縮圖片????

function?compressImage(url,filename){????

var?name="_doc/upload/"+filename;??

plus.zip.compressImage({????

src:url,//src:?(String?類型?)壓縮轉(zhuǎn)換原始圖片的路徑????

dst:name,//壓縮轉(zhuǎn)換目標圖片的路徑????

quality:40,//quality:?(Number?類型?)壓縮圖片的質(zhì)量.取值范圍為1-100????

overwrite:true//overwrite:?(Boolean?類型?)覆蓋生成新文件????

},????

function(zip)?{??

//頁面顯示圖片??

showPics(zip.target,name);??

},function(error)?{????

plus.nativeUI.toast("壓縮圖片失敗,請稍候再試");????

});????

}???

//調(diào)用手機攝像頭并拍照??

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"????

});????

}??

//點擊事件,彈出選擇攝像頭和相冊的選項??

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();????

}????

}????

);????

}

首先是html代碼,很簡單,就是給一個添加按鈕,點擊觸發(fā)事件

其次方法共分為5個方法 看第二段JS代碼

html5怎樣調(diào)用手機攝像頭或者相冊?

先簡單的添加需要的控件

video id="video" autoplay=""style='width:640px;height:480px'/video

button id='picture'PICTURE/button

canvas id="canvas" width="640" height="480"/canvas

并在script中定義

var video = document.getElementById("video");

var context = canvas.getContext("2d")

var errocb = function () {

console.log('sth wrong!');

}

然后,簡單的說就是利用html5的api navigator.getUserMedia來開啟設備的攝像頭,瀏覽器上會出現(xiàn)圖示中的提示

if (navigator.getUserMedia) { // 標準的API

navigator.getUserMedia({ "video": true }, function (stream) {

video.src = stream;

video.play();

}, errocb);

} else if (navigator.webkitGetUserMedia) { // WebKit 核心的API

navigator.webkitGetUserMedia({ "video": true }, function (stream) {

video.src = window.webkitURL.createObjectURL(stream);

video.play();

}, errocb);

}

網(wǎng)上有些例子中,navigator.getUserMedia第一個參數(shù)是‘video’,這可能是早期的版本,現(xiàn)在必須是obj

還有關于getUserMedia和webkitGetUserMedia 的判斷,網(wǎng)上有這么寫的

navigator.getUserMedia = (navigator.getUserMedia ||

navigator.webkitGetUserMedia ||

navigator.mozGetUserMedia ||

navigator.msGetUserMedia);

但要注意,他們綁定video.src的方法不一樣,偶沒有測過createObjectURL是否通用

拍照功能就是簡單的調(diào)用canvas中的drawImage即可

document.getElementById("picture").addEventListener("click", function () {

context.drawImage(video, 0, 0, 640, 480);

});

html5怎樣調(diào)用手機攝像頭或者相冊?

HTML5技術支持WebApp在手機上拍照,顯示在頁面上并上傳到服務器。這是手機微博應用中常見的功能,當然你也可以在其它類型應用中適當使用此技術。

1、 視頻流

HTML5 的 The Media Capture(媒體捕捉) API 提供了對攝像頭的可編程訪問,用戶可以直接用 getUserMedia(請注意目前僅Chrome和Opera支持)獲得攝像頭提供的視頻流。我們需要做的是添加一個HTML5 的 Video 標簽,并將從攝像頭獲得的視頻作為這個標簽的輸入來源。

video id=”video” autoplay=”"/video

script

var video_element=document.getElementById(‘video’);

if(navigator.getUserMedia){ // opera應使用opera.getUserMedianow

navigator.getUserMedia(‘video’,success,error); //success是回調(diào)函數(shù),當然你也可以直接在此寫一個匿名函數(shù)

}

function success(stream){

video_element.src=stream;

}

/script

此時,video 標簽內(nèi)將顯示動態(tài)的攝像視頻流。下面需要進行拍照了。

2、 拍照

拍照是采用HTML5的Canvas功能,實時捕獲Video標簽的內(nèi)容,因為Video元素可以作為Canvas圖像的輸入,所以這一點很好實現(xiàn)。主要代碼如下:

var canvas=document.createElement(‘canvas’); //動態(tài)創(chuàng)建畫布對象

var ctx=canvas.getContext(’2d’);

var cw=vw,ch=vh;

ctx.fillStyle=”#ffffff”;

ctx.fillRect(0,0,cw,ch);

ctx.drawImage(video_element,0,0,cw,ch,0,0,vw,vh); //將video對象內(nèi)指定的區(qū)域捕捉繪制到畫布上指定的區(qū)域,可進行不等大不等位的繪制。

document.body.append(canvas);

3、 圖片獲取

從Canvas獲取圖片數(shù)據(jù)的核心思路是用canvas的toDataURL將Canvas的數(shù)據(jù)轉(zhuǎn)換為base64位編碼的PNG圖像,類似于“data:image/png;base64,xxxxx”的格式。

var imgData=canvas.toDataURL(“image/png”);

這樣,imgData變量就存儲了一長串的字符數(shù)據(jù)內(nèi)容,表示的就是一個PNG圖像的base64編碼。因為真正的圖像數(shù)據(jù)是base64編碼逗號之后的部分,所以要讓實際服務器接收的圖像數(shù)據(jù)應該是這部分,我們可以用兩種辦法來獲取。

第一種:是在前端截取22位以后的字符串作為圖像數(shù)據(jù),例如:

var data=imgData.substr(22);

如果要在上傳前獲取圖片的大小,可以使用:

var length=atob(data).length; //atob 可解碼用base-64解碼的字串

第二種:是在后端獲取傳輸?shù)臄?shù)據(jù)后用后臺語言截取22位以后的字符串(也就是在前臺略過上面這步直接上傳)。例如PHP里:

$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);

4、 圖片上傳

在前端可以使用Ajax將上面獲得的圖片數(shù)據(jù)上傳到后臺腳本。例如使用jQuery時可以用:

$.post(‘upload.php’,{‘data’:data});

在后臺我們用PHP腳本接收數(shù)據(jù)并存儲為圖片。

function convert_data($data){

$image=base64_decode(str_replace(‘data:image/jpeg;base64,’,”,$data);

save_to_file($image);

}

function save_to_file($image){

$fp=fopen($filename,’w');

fwrite($fp,$image);

fclose($fp);

}

以上的解決方案不僅能用于Web App拍照上傳,也可以通過Canvas的編輯功能函數(shù)提供圖片編輯,例如裁剪、上色、涂鴉、圈點等功能,然后把用戶編輯完的圖片上傳保存到服務器上。

在還在不斷補充修正的HTML5的驅(qū)動下,Web App與Native App之間的距離將越來越小。在可預見的不遠的未來,越來越多老的和新的開發(fā)項目必將會遷移到WEB應用上來。

相關規(guī)范:

The MediaCapture API:

Canvas:

html5 如何調(diào)用手機相冊

需要加載cordova.js

方法:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {

pictureSource = navigator.camera.PictureSourceType;

destinationType = navigator.camera.DestinationType;

}

//相冊

function fromCamera()

{

var source = pictureSource.PHOTOLIBRARY;

navigator.camera.getPicture(function (imageData) {

setimg(imageData);

}, function (message) {

if (source == pictureSource.CAMERA)

alert('加載照相機出錯!' + message);

else

alert('加載相冊出錯!' + message);

}, {

quality: 50,

destinationType: destinationType.FILE_URI,

sourceType: source

});

}

//拍照

function EditImgPz()

{

navigator.camera.getPicture(function (imageData) {

setimg(imageData);

}, function (message) {

alert(message);

}, {

quality: 50,

destinationType: navigator.camera.DestinationType.FILE_URI,

sourceType: Camera.PictureSourceType.CAMERA,

allowEdit: true,

encodingType: Camera.EncodingType.JPEG,

popoverOptions: CameraPopoverOptions,

saveToPhotoAlbum: true

});

}

html5或者JS怎樣調(diào)用手機攝像頭或者相冊?

你給的網(wǎng)頁用的是 input accept="image/*" type="file",在IOS端點擊時會提示選擇圖片或相機,安卓端要看瀏覽器對這兩個屬性的優(yōu)化,部分瀏覽器會直接跳轉(zhuǎn)到資源管理器,優(yōu)化做得好的可以直接提示選擇相冊或相機。

移動設備和桌面電腦上的客戶端API起初并不是同步的。最初總是移動設備上先擁有某些功能和相應的API,但慢慢的,這些API會出現(xiàn)在桌面電腦上。其中一個應用接口技術就是getUserMedia API,它能讓應用開發(fā)者訪問用戶的攝像頭或內(nèi)置相機。


網(wǎng)站標題:html5調(diào)用相冊,HTML相冊
轉(zhuǎn)載源于:http://weahome.cn/article/dschhpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部