Javascript,将照片从相机(画布)存储到本地/服务器

Posted

技术标签:

【中文标题】Javascript,将照片从相机(画布)存储到本地/服务器【英文标题】:Javascript, store photo from camera (canvas) to local/server 【发布时间】:2020-01-25 14:27:13 【问题描述】:

问题

我正在使用这个网站的 javascript

https://developers.google.com/web/fundamentals/media/capturing-images/#acquire_access_to_the_camera

有关于画布的信息,我可以:

直接上传到服务器 在本地存储 对图像应用时髦的效果

我如何例如从画布存储到本地或服务器?那么时髦的效果呢? :)

是否可以在没有查看相机video tag 窗口的情况下将输入从相机存储到文件?

谢谢。

系统

Linux local 5.0.0-29-lowlatency #31-Ubuntu SMP PREEMPT Thu Sep 12 14:13:01 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

更新

那么保存到特定文件夹呢?例如javascript脚本所在的同一文件夹?可能吗?谢谢。 还有一个问题,用户是否可以逃避摄像头访问? 然后在笔记本电脑上打开摄像头但没有指示灯,某种间谍模式? 访问网页时是否可以只拍照并保存到服务器上的磁盘?

【问题讨论】:

@all 告诉我,为什么是-2?问题是关于代码的,那么它有什么问题?我认为这是非常有用的事情。谢谢。 【参考方案1】:

您可以使用 canvas.toDataURL("img/png") 将图像 src 保存为 base64:

captureButton.addEventListener('click', () => 
    // Draw the video frame to the canvas.
    context.drawImage(player, 0, 0, canvas.width, canvas.height);
    // Get the image src (base64)
    const imgSrc=canvas.toDataURL("img/png");

    // Apply the src to an image element
    const img = new Image();
    img.src = imgSrc

    // Add the newly created image to the DOM
    // A html element with the class .image-holder needs to exist on the page
    document.querySelector('.image-holder').appendChild(img);

    // Store the src in local storage
    localStorage.setItem('imgSrc', imgSrc)
  );

要将其保存到本地计算机,您可以使用FileSaver 之类的东西(感谢this SO 回答):

captureButton.addEventListener('click', () => 
    // Draw the video frame to the canvas.
    context.drawImage(player, 0, 0, canvas.width, canvas.height);

    // save the file
    canvas.toBlob(function(blob) 
        saveAs(blob, "image-name.jpg");
    );
  );

编辑:这里的工作示例https://codepen.io/relativemc/pen/QWLoOZO

【讨论】:

谢谢。我尝试了复制工作示例,但它只显示现场捕获的图像,没有保存。请看我的更新。错误是Uncaught ReferenceError: saveAs is not defined。谢谢。 是否可以用一些变量保存文件image-name.jpg?例如日期和时间。谢谢。 修改string 是您应该考虑的事情。还研究内置方法,如Date。当您不确定如何做某事时,您应该首先尝试自己解决解决方案,这就是您变得更好的方法。如果您无法解决解决方案,请尝试谷歌“如何在 javascript 中将日期添加到字符串”,例如会引导您直接找到答案。在您用尽这两个选项后,然后发布问题。

以上是关于Javascript,将照片从相机(画布)存储到本地/服务器的主要内容,如果未能解决你的问题,请参考以下文章

将照片从相机保存到安卓内部存储

如何将捕获的照片(从浏览器 - 画布)上传到节点服务器?

firebase 存储 - 使用 android 相机上传照片,但在将照片提交到 firebase 存储时崩溃

在 iOS 中将照片从相机发布到 Facebook 页面

将使用相机拍摄的照片捕获并存储到本地数据库/PhoneGap/Cordova/iOS

从 WKWebView 打开照片库或相机?