我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

html5调用相册,HTML相册

怎么用html5或js调用手机的摄像头拍照上传以及调用手机相册选取照片

1、实现头的方法代码。

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了柘城免费建站欢迎大家使用!

2、编写CSS样式的方法代码。

3、html上传代码。

4、JS处理方法代码。

5、测试结果如下。

注意事项:

JavaScript是一种网络脚本语言,在web应用开发中得到了广泛的应用,它经常被用来为网页添加各种动态功能,为用户提供更加流畅美观的浏览效果,通常JavaScript脚本被嵌入到HTML中来实现自己的功能。

html5怎样调用手机摄像头或者相册

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){          

//根据路径读取到文件   

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%;"//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 类型 )压缩转换原始图片的路径    

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"    

});    

}  

//点击事件,弹出选择摄像头和相册的选项  

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代码,很简单,就是给一个添加按钮,点击触发事件

其次方法共分为5个方法 看第二段JS代码

html5怎样调用手机摄像头或者相册?

先简单的添加需要的控件

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来开启设备的摄像头,浏览器上会出现图示中的提示

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

}

网上有些例子中,navigator.getUserMedia第一个参数是‘video’,这可能是早期的版本,现在必须是obj

还有关于getUserMedia和webkitGetUserMedia 的判断,网上有这么写的

navigator.getUserMedia = (navigator.getUserMedia ||

navigator.webkitGetUserMedia ||

navigator.mozGetUserMedia ||

navigator.msGetUserMedia);

但要注意,他们绑定video.src的方法不一样,偶没有测过createObjectURL是否通用

拍照功能就是简单的调用canvas中的drawImage即可

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

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

});

html5怎样调用手机摄像头或者相册?

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是回调函数,当然你也可以直接在此写一个匿名函数

}

function success(stream){

video_element.src=stream;

}

/script

此时,video 标签内将显示动态的摄像视频流。下面需要进行拍照了。

2、 拍照

拍照是采用HTML5的Canvas功能,实时捕获Video标签的内容,因为Video元素可以作为Canvas图像的输入,所以这一点很好实现。主要代码如下:

var canvas=document.createElement(‘canvas’); //动态创建画布对象

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对象内指定的区域捕捉绘制到画布上指定的区域,可进行不等大不等位的绘制。

document.body.append(canvas);

3、 图片获取

从Canvas获取图片数据的核心思路是用canvas的toDataURL将Canvas的数据转换为base64位编码的PNG图像,类似于“data:image/png;base64,xxxxx”的格式。

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

这样,imgData变量就存储了一长串的字符数据内容,表示的就是一个PNG图像的base64编码。因为真正的图像数据是base64编码逗号之后的部分,所以要让实际服务器接收的图像数据应该是这部分,我们可以用两种办法来获取。

第一种:是在前端截取22位以后的字符串作为图像数据,例如:

var data=imgData.substr(22);

如果要在上传前获取图片的大小,可以使用:

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

第二种:是在后端获取传输的数据后用后台语言截取22位以后的字符串(也就是在前台略过上面这步直接上传)。例如PHP里:

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

4、 图片上传

在前端可以使用Ajax将上面获得的图片数据上传到后台脚本。例如使用jQuery时可以用:

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

在后台我们用PHP脚本接收数据并存储为图片。

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的编辑功能函数提供图片编辑,例如裁剪、上色、涂鸦、圈点等功能,然后把用户编辑完的图片上传保存到服务器上。

在还在不断补充修正的HTML5的驱动下,Web App与Native App之间的距离将越来越小。在可预见的不远的未来,越来越多老的和新的开发项目必将会迁移到WEB应用上来。

相关规范:

The MediaCapture API:

Canvas:

html5 如何调用手机相册

需要加载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怎样调用手机摄像头或者相册?

你给的网页用的是 input accept="image/*" type="file",在IOS端点击时会提示选择图片或相机,安卓端要看浏览器对这两个属性的优化,部分浏览器会直接跳转到资源管理器,优化做得好的可以直接提示选择相册或相机。

移动设备和桌面电脑上的客户端API起初并不是同步的。最初总是移动设备上先拥有某些功能和相应的API,但慢慢的,这些API会出现在桌面电脑上。其中一个应用接口技术就是getUserMedia API,它能让应用开发者访问用户的摄像头或内置相机。


当前文章:html5调用相册,HTML相册
URL分享:http://mswzjz.cn/article/dschhpj.html

其他资讯