如何使用Javascript(使用base64数据)将图像保存到 iPhone

我的网页需要能够将图像保存到用户的设备,无论他们从什么设备或网络浏览器查看。图像是由网页本身创建的,所以我需要使用 img 元素,画布元素,或者只是图像的 base64 数据 (任何都可以)。

我的网页需要能够将图像保存到用户的设备,无论他们从什么设备或网络浏览器查看。图像是由网页本身创建的,所以我需要使用 img 元素,画布元素,或者只是图像的 base64 数据 (任何都可以)。

方法 1:通过锚元素下载

在单击时下载图像的页面上创建一个 anchor 元素:

<a download="myImage.png" href="data:image/png;base64,[base64-data-here]">Click me</a>

适用于 PC 和 Android。但是在 iPhone 上,会出现一个弹出窗口,询问用户是否要下载图像。如果您按“下载”,似乎什么也没发生。如果确实下载了图像,则它不会出现在“照片”应用程序中。

方法 2:P5JS 图形对象上的.save()方法

我使用的是 P5JS 库,它有一个特殊的图形对象(基本上只是一个画布 DOM 元素的包装),它带有一个.save()方法,将图像保存到用户的文件系统:

myGraphicsObject.save("myImage.png")

这似乎只在 iPhone 上工作了一半。一半的时间它似乎什么也没做,或者它打开了一个页面,上面写着“找不到文件”。非常奇怪。

方法 3:允许用户长按图像保存自己

在 Google 图片上,任何移动用户都可以长按图像以将其保存到其图库中。我试图通过在页面上放置一个简单的 img 元素来在我的网页上重新创建它。我尝试将 style 属性设置为-webkit-user-select: none,以防止长按仅突出显示页面上的元素。我甚至尝试使用document.open()从网页中删除所有其他元素,以查看是否有帮助:

document.open();
document.write("<html><body></body></html>")
myCanvas.setAttribute('style', "-webkit-user-select: none;")
document.body.appendChild(myCanvas);

当我尝试这个时,长按图像似乎没有在 iPhoneAndroid 上做任何事情。这种方法似乎是最有前途的,但我不知道如何使我的网页表现得像谷歌图片。

0

原来我对方法 3 是错误的。长按 html img 元素按预期工作。问题是我不小心使用了 canvas 元素而不是 image 元素。这是我如何将我的 canvas 元素转换为 image 元素:

var canvas_data = canvas.toDataURL();
var img_element = document.createElement("img")
img_element.src = canvas_data;
document.body.appendChild(img_element);

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(868)
vCenter vSphere之间的区别
上一篇
用JavaScript显示当地时间(洛杉矶或太平洋)和纽约的时间
下一篇

相关推荐

  • javascript作品:利用JavaScript实现动态数据可视化

    示例示例作品是指使用语言编写的脚本,可以在网页上实现动态效果。例如:一个简单的脚本,可以用来显示当前时间:…

    2023-08-20 12:19:17
    0 70 40
  • javascript交互效果:使用JavaScript轻松实现交互效果

    JavaScript交互效果是指,当用户与网页进行交互时,网页会有相应的反应,以及动态效果。例如:鼠标移动到一个元素上,元素就会改变颜色;点击某个按钮,网页就会显示新的内容;滚动页面,某个元素就会固定在页面上,等等。…

    2023-05-07 12:38:50
    0 75 92
  • java和js的区别:Java与JavaScript的异同点比较

    示例示例Java和之间有很多明显的区别,主要如下:Java是一种面向对象的编程语言,而是一种脚本语言。…

    2023-11-19 10:40:20
    0 42 66
  • javascript入门学习学习如何使用JavaScript

    JavaScript是一种开放的、跨平台的、轻量级的脚本语言,它可以用来编写网页应用程序。JavaScript入门学习的步骤如下:…

    2023-06-22 05:43:40
    0 21 21
  • javascript 替换字符串 Hello JavaScript

    JavaScript 替换字符串可以使用 String.prototype.replace() 方法来实现。该方法接受两个参数,第一个参数是要被替换的子字符串,第二个参数是用来替换的字符串。…

    2023-05-03 03:39:37
    0 71 61
  • javascript 正则表达式 在线 John Smith

    JavaScript 正则表达式在线是一种用于搜索和替换文本的强大工具。它们可以用来验证文本,查找特定的字符串,替换文本,或者用于数据提取等等。…

    2023-05-12 14:25:27
    0 69 23
  • javascript垃圾回收机制如何优化内存使用

    JavaScript垃圾回收机制是一种自动内存管理机制,它可以帮助开发人员释放不再使用的内存。它可以跟踪变量和对象,并在不再需要时自动释放内存。…

    2023-04-30 03:43:42
    0 71 14
  • javascript的输出语句:使用JavaScript输出结果

    JavaScript的输出语句是指在网页中显示文本或其他内容的语句,常用的输出语句有document.write()、window.alert()和console.log()。…

    2023-02-09 10:17:17
    0 66 70

发表评论

登录 后才能评论

评论列表(60条)