来自 Mozilla Firefox 和 MS Edge 的剪贴板时,Alpha 变为黑色

Posted

技术标签:

【中文标题】来自 Mozilla Firefox 和 MS Edge 的剪贴板时,Alpha 变为黑色【英文标题】:Alpha becomes black when coming from clipboard on Mozilla Firefox and MS Edge 【发布时间】:2017-09-22 22:08:25 【问题描述】:

我正在使用代码from here 将剪贴板中的图像粘贴到页面上。它适用于所有浏览器(Chrome、Firefox、Edge 和 Opera)。

问题是:当图像是带有 alpha 通道(透明区域)的 PNG 或 GIF 时,alpha 在 Firefox 和 Edge 中变为黑色。

这里是代码 sn-p (or jsfiddle if you prefer):

document.getElementById('pasteArea').onpaste = function (event) 
  // use event.originalEvent.clipboard for newer chrome versions
  var items = (event.clipboardData  || event.originalEvent.clipboardData).items;
  console.log(JSON.stringify(items)); // will give you the mime types
  // find pasted image among pasted items
  var blob = null;
  for (var i = 0; i < items.length; i++) 
    if (items[i].type.indexOf("image") === 0) 
      blob = items[i].getAsFile();
    
  
  // load image if there is a pasted image
  if (blob !== null) 
    var reader = new FileReader();
    reader.onload = function(event) 
      console.log(event.target.result); // data url!
      document.getElementById("pastedImage").src = event.target.result;
    ;
    reader.readAsDataURL(blob);
  
body 
background-color: skyblue;
<textarea id="pasteArea" placeholder="Paste Image Here"></textarea><br>
<img id="pastedImage">

这是我在下一个演示中使用的源图像:

这就是 Chrome/Opera 中发生的情况(良好的输出):

这是 Firefox/Edge 中发生的情况(输出错误):

我还在 Adob​​e Illustrator 和 Corel Draw 等其他软件中看到了这种不良行为(粘贴时出现黑色 alpha),您需要“打开”或“放置/导入”文件而不是“粘贴”以避免黑色 alpha .

系统信息:Windows 10(周年更新)32bits; Chrome 58.0.3029.81、Opera 44.0、Firefox 53.0、Microsoft Edge 38.14393.0.0

我的问题是:如何避免在 Mozilla Firefox/MS Edge 的网页中粘贴图像上出现黑色 alpha?

【问题讨论】:

我不知道它依赖什么,但我无法在两台装有 Firefox/53.0 的不同 Windows 10 x64 计算机上重现它——但它确实发生在 Edge/38.14393.1066.0 中。 Edge 中生成的图像小 2 KB。 附加信息:我使用的是 Windows 10 32 位; Chrome 58.0.3029.81、Opera 44.0、Firefox 53.0、Microsoft Edge 38.14393.0.0 Alpha 已在 items[i].getAsFile() 丢失。我怀疑这与剪贴板可能以多种格式存储数据有关。我手头没有剪贴板查看器,但是当我将图片粘贴到文字处理器中时,我得到了三种不同的选择,其中一种缺少 alpha 通道。不知道大家在使用这个API的时候能不能选择。 非常有趣@ÁlvaroGonzález 感谢您提供的信息;顺便说一句,我的一个 64 位系统的朋友在 Firefox 上得到了相同的黑色 alpha 输出。 【参考方案1】:

您将无法自己解决此问题。您的用户可以避免这种情况的唯一方法是上传或下载图像,而不是使用剪贴板来导入或导出它们。

【讨论】:

以上是关于来自 Mozilla Firefox 和 MS Edge 的剪贴板时,Alpha 变为黑色的主要内容,如果未能解决你的问题,请参考以下文章

火狐Firefox浏览器所有历史版本下载地址

Mozilla Firefox 58.0 “Quantum” 现在可供下载

Mozilla计划秋季推出Firefox Premium

Mozilla启动Firefox品牌重塑,要换新的图标了

Mozilla Firefox 和函数执行问题

仅使用 Firefox 的 SSL 无效安全证书