无法使用画布复制图像
Unable to copy img using canvas
我有一个PNG验证码图像,我想创建一个副本,以便删除它的透明度,因为然后验证码解析器(ocrad.js)函数工作。
但问题是,以下功能几乎正常工作,但captcha图像被移动和调整大小。
如何保持验证码图像的相同尺寸?
我试过将画布宽度设置为与img元素相同,但不起作用。
function copy(pic) {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
context.fillStyle = '#fff'; /// set white fill style
context.fillRect(0, 0, canvas.width, canvas.height);
context.drawImage(pic, pic.width, pic.height);
var dataURL = canvas.toDataURL();
document.getElementById('cimage').src = dataURL;
alert(OCRAD(document.getElementById('cimage'))); //decode it
}
所以如果我在这个页面上的谷歌Chrome的控制台输入以下代码,你会看到验证码图像(在中心)移动的地方,这是我不想要的:
pic = document.getElementById('cimage');
var canvas = document.createElement('canvas');
canvas.width = pic.width;
canvas.height = pic.height;
var context = canvas.getContext('2d');
context.fillStyle = '#fff'; /// set white fill style
context.fillRect(0, 0, canvas.width, canvas.height);
context.drawImage(pic, pic.width, pic.height);
var dataURL = canvas.toDataURL("image/jpeg");
document.getElementById('cimage').src = dataURL;
在绘制图像之前设置画布元素的大小。元素的默认大小是300x150像素:
var canvas = document.createElement('canvas');
canvas.width = pic.width;
canvas.height = pic.height;
另外,你使用错误的drawImage -前两个参数是位置,而不是大小。由于画布已经使用上面的代码设置了正确的大小,您只需要将图像放置在原点(0,0):
context.drawImage(pic, 0, 0);
相关文章:
- 复制图像路径以单击它
- 当页面包含指向一个图像的多个链接时,fancyBox会复制缩略图辅助图像
- 使用JavaScript从网页复制HTML代码或图像链接
- 如何使用PHP、提交和单选按钮复制/重命名/覆盖图像
- HTML将图像从画布复制到另一个画布
- Anythingsslider+Fancybox复制图像
- 是否可以将画布图像复制到剪贴板
- 使用Jquery将剪贴板图像复制到网页中
- 如何禁止复制浏览我的网站的图像
- 将javascript制作的图像复制到剪贴板
- 如何在 MobileSafari 中接收复制的图像
- 如何将画布图像数据复制到论文.js 光栅对象
- 我怎样才能检测到“;复制图像”;浏览器事件
- 使用jquery/javascript复制图像并将其粘贴到word文件中
- 在Gallery中复制图像
- Cordova / Javascript从URL复制图像到本地存储
- 从iframe复制图像到textarea
- 复制图像/粘贴base64编码的图像
- 我如何复制图像到一个表使用jQuery拖拽
- 无法使用画布复制图像