我有一个粘贴处理程序,它在剪贴板中获取图像并将其上传到服务器。我可以成功访问剪贴板数据,但如果剪贴板图像数据的分辨率高于 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 机器上重现该问题:
- 截图到剪贴板
Command-Control-Shift-3
。 - 单击 JSFiddle 中的 HTML 窗格
- 粘贴 (
Command-V
) - 将出现一个新窗口,显示粘贴的图像。
- 现在打开 Photoshop,创建一个新文档,然后再次粘贴。
- 观察浏览器和 Photoshop 之间的图像分辨率和大小不同。
任何建议将不胜感激!