说明1:rotateBase64Img函数第四个参数是自己加的。 参数1:图片的base64值。 参数2:旋转的角度。(如输入90deg为顺时针旋转90度,以此类推) 参数3:为回调函数,即在完成旋转后执行的函数,由自己定义,即在拿到返回的数据后可以进行的操作。 说明:文章大部分内容为参考此页面的内容:https://segmentfault.com/a/1190000014352583?utm_source=tag-newest 输入:三个参数 输出:回调函数,可以在回调函数里面执行自己任意想要的操作 function rotateBase64Img(src, edg, callback,count) { //base64图片的旋转 var canvas = document.createElement("canvas"); var ctx = canvas.getContext("2d"); var imgW;//图片宽度 var imgH;//图片高度 var size;//canvas初始大小 (edg < 0) && (edg = (edg % 360) + 360) const quadrant = (edg / 90) % 4; //旋转象限 const cutCoor = {sx: 0, sy: 0, ex: 0, ey: 0}; //裁剪坐标 var image = new Image(); image.crossOrigin = "anonymous" image.src = src; image.onload = function () { imgW = image.width; imgH = image.height; size = imgW > imgH ? imgW : imgH; canvas.width = size * 2; canvas.height = size * 2; switch (quadrant) { case 0: cutCoor.sx = size; cutCoor.sy = size; cutCoor.ex = size + imgW; cutCoor.ey = size + imgH; break; case 1: cutCoor.sx = size - imgH; cutCoor.sy = size; cutCoor.ex = size; cutCoor.ey = size + imgW; break; case 2: cutCoor.sx = size - imgW; cutCoor.sy = size - imgH; cutCoor.ex = size; cutCoor.ey = size; break; case 3: cutCoor.sx = size; cutCoor.sy = size - imgW; cutCoor.ex = size + imgH; cutCoor.ey = size + imgW; break; } ctx.translate(size, size); ctx.rotate(edg * Math.PI / 180); ctx.drawImage(image, 0, 0); var imgData = ctx.getImageData(cutCoor.sx, cutCoor.sy, cutCoor.ex, cutCoor.ey); if (quadrant % 2 == 0) { canvas.width = imgW; canvas.height = imgH; } else { canvas.width = imgH; canvas.height = imgW; } ctx.putImageData(imgData, 0, 0); callback(canvas.toDataURL(),count) }; } function callback(base64data,count) { var _photoStr=base64data.split("base64,")[1]; var photo = { "Num": 1, "Imgstr":_photoStr, "ChoiceTray": "0", "ChoicePaper": "0", "ChoiceColor": "0" }; var data = JSON.stringify(photo); send_command( "printBitmap", data, function (receivedData) { info = JSON.parse(receivedData); if (info.status == 100) { gSucessNumber++; if(count==(gPrintNumber-1)){ var _rightMessage=getPageMessage(); showRight("打印成功",_rightMessage); } } else if (info.status == 300) { var _wrongMessage=getPageMessage()+",打印模块未开启,请联系管理员"; showError("打印错误",_wrongMessage); } else if (info.status == 200){ var _wrongMessage=getPageMessage()+","+info.msg; showError("打印失败",_wrongMessage); } }); } function printA4(count){ var _photoSrc1 = $("#A4_img").attr("src"); rotateBase64Img(_photoSrc1, 90, callback,count); }
base64图片旋转后输出
最新推荐文章于 2024-03-04 17:01:54 发布