js base64图片旋转90度

在这里插入图片描述

<html>
<head>

    <style type="text/css">
        body, button {
            font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        }
    </style>

</head>
<body>

<div style="width:50px; height:50px; margin:100px auto;text-align:center;line-height:50px;">
    <img id ="test"/>
    <img id="img"/>
</div>
</body>
<script>
    function rotateBase64Img(src, edg, callback) {
        var canvas = document.createElement("canvas");
        var ctx = canvas.getContext("2d");
        var imgW;//图片宽度
        var imgH;//图片高度
        var size;//canvas初始大小
        if (edg % 90 != 0) {
            console.error("旋转角度必须是90的倍数!");
            throw '旋转角度必须是90的倍数!';
        }
        (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())
        };
    }
    var url = 'data:image/png;base64,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';
    function callback(base64data) {
        document.getElementById("img").src = base64data;
    }
    //原本的图片
    document.getElementById("test").src=url;
    //图片旋转
    rotateBase64Img(url, 270, callback);
</script>
</html>
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值