在之前一家公司的时候要做一个app里面有上传头像的功能,当时研究了好久,找到了一篇文章关于h5摄像头以及相册的调用的,所以就解决了这个问题了!!我这里记录一下以便后面有人需要,可以参考一下!!!!

下面是完整的一个HTML页面内容,放在服务器上然后浏览就可以了,只支持Chrome和Safari核的浏览器,QQ浏览器,Chrome,Safari浏览器都可以。在不同的手机和浏览器上面展现的方式不一样。

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title>上传图片</title>
  5. <meta charset="utf-8">
  6. </head>
  7. <body>
  8. <iframe name="uploadfrm" id="uploadfrm" style="display: none;"></iframe>
  9. <form name="formHead" method="post" action="" id="formHead" enctype="multipart/form-data" target="uploadfrm">
  10. <div>
  11. <div>
  12. <input type="file" name="file_head" id="file_head" onchange="javascript:setImagePreview();" />
  13. </div>
  14. <div>
  15. <div id="DivUp" style="display: none">
  16. <input type="submit" data-inline="true" id="BtnUp" value="确认上传" data-mini="true" />
  17. </div>
  18. </div>
  19. </div>
  20. </form>
  21. <div data-role="fieldcontain">
  22. <div id="localImag">
  23. <img id="preview" width="-1" height="-1" style="display: none" />
  24. </div>
  25. </div>
  26. <script type="text/javascript">
  27. function setImagePreview() {
  28. var preview, img_txt, localImag, file_head = document.getElementById("file_head"),
  29. picture = file_head.value;
  30. if (!picture.match(/.jpg|.gif|.png|.bmp/i)) return alert("您上传的图片格式不正确,请重新选择!"),
  31. !1;
  32. if (preview = document.getElementById("preview"), file_head.files && file_head.files[0]) preview.style.display = "block",
  33. preview.style.width = "63px",
  34. preview.style.height = "63px",
  35. preview.src = window.navigator.userAgent.indexOf("Chrome") >= 1 || window.navigator.userAgent.indexOf("Safari") >= 1 ? window.webkitURL.createObjectURL(file_head.files[0]) : window.URL.createObjectURL(file_head.files[0]);
  36. else {
  37. file_head.select(),
  38. file_head.blur(),
  39. img_txt = document.selection.createRange().text,
  40. localImag = document.getElementById("localImag"),
  41. localImag.style.width = "63px",
  42. localImag.style.height = "63px";
  43. try {
  44. localImag.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)",
  45. localImag.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = img_txt
  46. } catch(f) {
  47. return alert("您上传的图片格式不正确,请重新选择!"),
  48. !1
  49. }
  50. preview.style.display = "none",
  51. document.selection.empty()
  52. }
  53. return document.getElementById("DivUp").style.display = "block",
  54. !0
  55. }
  56. </script>
  57. </body>
  58. </html>

下面是几个效果图:

Chrome浏览器效果:

QQ浏览器效果:

拍照效果:

参考文献:http://blog.csdn.net/jwzhangjie/article/details/40391537#comments

h5调用手机相册摄像头以及文件夹的更多相关文章

  1. h5调用手机前后摄像头,拍照

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="pacam.aspx.cs& ...

  2. WebApp调用手机相册或摄像头、拨打电话

    WebApp调用手机相册或摄像头.拨打电话 一.总结 一句话总结:input标签,指定type为file,选择好对应的accept即可.camera——相机,相应的accept为image : cam ...

  3. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    进入正题 1. PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template> <div> &l ...

  4. ios最新调用手机相册选取头像(UIActionSheet过期)

    由于 UIActionSheet过期所以可以使用如下调用手机相册 前提不要忘记添加代理如下两个 UIImagePickerControllerDelegate,UINavigationControll ...

  5. Unity调用windows系统dialog 选择文件夹

    #region 调用windows系统dialog 选择文件夹 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public ...

  6. 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码

    接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...

  7. H5 调用 手机设备的功能

    1.调用 邮件 : 参考 https://blog.csdn.net/github_38516987/article/details/77637546 (亲测有效) <a href=" ...

  8. 【Android】14.3 浏览手机中的所有文件夹和文件

    分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 前面我们了解了内部存储.外部存储的含义,用一句话说,内部存储实际上是保存在"data"文件夹下 ...

  9. web调用手机相册,并实现动态增加图片功能

    注:经测试h5调用相册效果有兼容性问题,安卓仅能调用拍照功能(部分安卓可能会调不起来,所以建议用app原生调用),ios可调起拍照和相册功能. <html xmlns="http:// ...

随机推荐

  1. Java程序员必备的Intellij插件(长期更新,截止到2018-05-03)

    善用Intellij插件可大幅提升我们的效率 以下是我用过不错的Intellij插件 1. .ignore 生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写 截图:   ...

  2. 问题:oracle 12c rac数据库服务器的home目录丢失问题解决2018-06-25 18:30

    问题原因:是由于运维粗心,在缩容/home(此目录下挂载了逻辑卷lv_home)时没有先缩小文件系统(resize2fs)也没有备份,导致home数据损坏,重启时系统无法正常启动 解决方案:跳过此ho ...

  3. Codeforces 817C Really Big Numbers - 二分法 - 数论

    Ivan likes to learn different things about numbers, but he is especially interested in really big nu ...

  4. SVM学习笔记4-核函数和离群点的处理

    核函数在svm里,核函数是这样定义的.核函数是一个n*n(样本个数)的矩阵,其中:$K_{ij}=exp(-\frac{||x^{(i)}-x^{(j)}||^{2}}{2\sigma ^{2}})$ ...

  5. Python3 tkinter基础 Listbox delete 删除单个、所有元素

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. grub基本应用

    一.基本概念 GRUB(boot  loader):  GRand Unified Bootloader 两个版本: grub .x: grup legacy grub .x: grub2 grub ...

  7. shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢?

    shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢? 这确实是一个困扰很久的一个问题? how it can be an issue? 事实上, 在shell中, 你可以认为 ...

  8. FileAttributes Enum

    https://docs.microsoft.com/en-us/dotnet/api/system.io.fileattributes?view=netframework-4.7.2 读取FileA ...

  9. Nuget EPPlus的使用

    EPPlus:网站 Supported Functions Excel Merge Operate public class ExcelMergeOperate { private static Lo ...

  10. [UVA-11100] The Trip

    题目大意 大箱子能装小箱子,求在满足最少箱子的情况下,最小化每个箱子中最大的箱子个数. 解析 想到二分枚举箱子数,然后贪心的选择放进箱子的位置. 最优策略一定是将最大的 \(m\) 个先找出来,然后把 ...