<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>picker</title> <style type="text/css"> * {margin: 0;padding: 0;} img {display: inline-block;height: auto;} canvas {position: fixed;top: -9999999px;left: -9999999px;} .img-wrap {text-align: center;padding: 50px 0;} .img-wrap img {width: 500px;} .btn {text-align: center;} .btn > button {margin-right: 20px;display: inline-block;} </style> </head> <body> <div id="app"> <canvas>系统版本太低</canvas> <div class="img-wrap"> <img id="t_img"> </div> <div class="btn"> <button type="button" onclick="changeDir('left')">往左旋转</button> <button type="button" onclick="changeDir('right')">往右旋转</button> <button type="button" onclick="down()">导出</button> </div> </div> </body> <script type="text/javascript"> var oc = document.querySelector('canvas'); var ctx, image, xTimes = 0; var t_img = document.querySelector('#t_img'); if (oc.getContext('2d')) { ctx = oc.getContext('2d'); image = new Image(); image.src = './img/cat.jpg'; image.onload = function() { oc.width = image.width; oc.height = image.height; ctx.drawImage(this, 0, 0); t_img.src = oc.toDataURL('image/jpeg'); } } function changeDir(_dir) { if (_dir === 'left') { xTimes++; } else { xTimes--; } ctx.clearRect(0, 0, oc.width, oc.height); var temp = oc.width; oc.width = oc.height; oc.height = temp; var center = { x: Math.round(oc.width / 2), y: Math.round(oc.height / 2) }; console.log(center); ctx.translate(center.x, center.y); ctx.rotate(-90 * xTimes * Math.PI / 180); if (xTimes % 2 !== 0) { ctx.translate(-center.y, -center.x); } else { ctx.translate(-center.x, -center.y); } ctx.drawImage(image, 0, 0); t_img.src = oc.toDataURL('image/jpeg'); } function down() { var aDom = document.createElement('a'); aDom.download = "勒是一只猫"; aDom.href = oc.toDataURL('image/jpeg', 0.7); aDom.click(); } </script> </html>