6

我有一个粘贴处理程序,它在剪贴板中获取图像并将其上传到服务器。我可以成功访问剪贴板数据,但如果剪贴板图像数据的分辨率高于 72ppi,它会被下采样到 72ppi。

这在将 MacBook Retina 上的屏幕截图到剪贴板时尤其烦人(通过Command-Control-Shift-3。图像的剪贴板数据为 144ppi — 这是我粘贴到 Photoshop 时出现的 ppi。但是,当我粘贴到浏览器中时,图像被下采样一半。

我在 Google 上搜索了粘贴日,试图找到解决方案,但没有运气。我假设下采样是使用 .getAsFile() 方法进行的。

这是代码的简化版本:

$('html').bind('paste', function(e) {
  e.preventDefault();
  var item = (e.clipboardData || e.originalEvent.clipboardData).items[0];
  var type = item.type.split('/').shift();
  if (type == "image"){
    var file = item.getAsFile();
    var blob = URL.createObjectURL(file); // Blob
    window.open(blob);
  }
});

这是一个JSFiddle:

http://jsfiddle.net/zd5pX/1/

要在 Retina 机器上重现该问题:

  1. 截图到剪贴板Command-Control-Shift-3
  2. 单击 JSFiddle 中的 HTML 窗格
  3. 粘贴 ( Command-V)
  4. 将出现一个新窗口,显示粘贴的图像。
  5. 现在打开 Photoshop,创建一个新文档,然后再次粘贴。
  6. 观察浏览器和 Photoshop 之间的图像分辨率和大小不同。

任何建议将不胜感激!

4

0 回答 0