当前位置:首页 > JavaScript

js实现拍照

2026-03-14 07:43:56JavaScript

使用HTML5和JavaScript实现拍照功能

通过浏览器的getUserMedia API可以访问设备的摄像头,结合canvas元素实现拍照功能。以下是一个完整的实现示例:

<!DOCTYPE html>
<html>
<head>
    <title>拍照示例</title>
    <style>
        #video, #canvas {
            width: 400px;
            height: 300px;
            border: 1px solid #ccc;
        }
        #capture {
            margin-top: 10px;
            padding: 8px 16px;
            background: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <video id="video" autoplay></video>
    <canvas id="canvas"></canvas>
    <button id="capture">拍照</button>

    <script>
        const video = document.getElementById('video');
        const canvas = document.getElementById('canvas');
        const captureBtn = document.getElementById('capture');
        const context = canvas.getContext('2d');

        navigator.mediaDevices.getUserMedia({ video: true })
            .then(stream => {
                video.srcObject = stream;
            })
            .catch(err => {
                console.error('无法访问摄像头:', err);
            });

        captureBtn.addEventListener('click', () => {
            context.drawImage(video, 0, 0, canvas.width, canvas.height);
            const imageData = canvas.toDataURL('image/png');
            console.log(imageData); // 这里可以上传到服务器或保存
        });
    </script>
</body>
</html>

关键代码解析

navigator.mediaDevices.getUserMedia({ video: true })请求访问用户摄像头,返回一个Promise。成功后会得到一个媒体流对象。

video.srcObject = stream将媒体流赋值给video元素的srcObject属性,这样视频就会在页面上显示。

context.drawImage(video, 0, 0, canvas.width, canvas.height)将video当前帧绘制到canvas上。

js实现拍照

canvas.toDataURL('image/png')将canvas内容转换为base64编码的图片数据,可以用于保存或上传。

注意事项

页面必须通过HTTPS协议或在localhost环境下运行,否则getUserMediaAPI会被浏览器阻止。

部分浏览器可能需要用户明确授权才能访问摄像头。如果用户拒绝授权,Promise会被拒绝。

js实现拍照

移动设备上需要考虑横竖屏切换时的布局适配问题。

扩展功能

可以添加滤镜效果,通过修改canvas的像素数据实现。

添加照片保存功能,将base64数据转换为Blob对象后下载。

实现连续拍照功能,设置定时器自动捕获多张照片。

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…