我试图从画布中获取图像. PNG图像正确到位,但JPEG正在产生问题.我附上图片在这里.第一张图片是我的画布.随着PNG然后JPEG.So我想要我的JPEG图像与白色背景或我需要一个解决方案PNG到JPEG转换在JS
canvas = $('.jSignature')[0]; imgData = canvas.toDataURL(); imgDatajpeg = canvas.toDataURL("image/jpeg"); $(".sigCapHolder").append('<img src='+imgData+' /> ') $(".sigCapHolder").append('<img src='+imgDatajpeg+' /> ')
解决方法
原因
这样做的原因是画布是透明的.然而,透明度为黑色的透明Alpha通道,因此它不会显示在屏幕上.
另一边的JPEG不支持Alpha通道,因此默认的黑色将被剥去其alpha通道留下黑色背景.
你PNG支持alpha通道,因此它与canvas的工作方式兼容.
解
为了解决这个问题,您必须在绘制图像之前在画布上手动绘制白色背景:
var canvas = $('.jSignature')[0]; var ctx = canvas.getContext('2d'); ctx.fillStyle = '#fff'; /// set white fill style ctx.fillRect(0,canvas.width,canvas.height); /// draw image and then use toDataURL() here