base64图片旋转后输出

说明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);
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值