HTML5のキャンバスを使って画像の回転を行います。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> <title>画像の回転</title> <script type="text/javascript"> // 画像 var img01 = null; // イメージ番号 var imgNum = 0; // 角度 var angle = 0; // 拡大率 var zoom = 1; // タイマー var timer = null; // キャンバス取得 var canvas = null; // コンテキスト var ctx = null; /* 画像の描画 */ function DrawImage() { // 描画中心 var posX = canvas.width / 2; var posY = canvas.height / 2; // 角度をラジアンに変換 var rad = angle * Math.PI / 180; // ハムスター var imgX = 0; var imgY = 0; var imgW = img01.width; var imgH = img01.height; var img = img01; var imgDrawW = imgW * zoom; var imgDrawH = imgH * zoom; var imgPosX = posX - imgDrawW / 2; var imgPosY = posY - imgDrawH / 2; // キャンバスのクリア ctx.fillStyle = '#FFFFFF'; ctx.fillRect( 0, 0, canvas.width, canvas.height ); // コンテキスト保存 ctx.save(); // 回転 ctx.setTransform( Math.cos(rad), Math.sin(rad), -Math.sin(rad), Math.cos(rad), posX - posX * Math.cos(rad) + posY * Math.sin(rad), posY - posX * Math.sin(rad) - posY * Math.cos(rad) ); // イメージの描画 ctx.drawImage( img , imgX // 画像上の描画開始位置X , imgY // 画像上の描画開始位置Y , imgW // 描画する画像の幅 , imgH // 描画する画像の高さ , imgPosX // 描画位置X , imgPosY // 描画位置Y , imgDrawW // 描画幅 , imgDrawH // 描画高さ ); // コンテキスト復元 ctx.restore(); } /* ページロード完了 */ function OnLoad() { /* 初期化 */ function OnInit() { // マウスイベントを受け取る canvas.addEventListener( "mousedown", function (e) { /* タップ位置の取得 FireFoxの場合は、offsetXとoffsetYがundefinedになる */ var posX = (e.offsetX !== undefined) ? e.offsetX : (e.layerX - e.target.offsetLeft); var posY = (e.offsetY !== undefined) ? e.offsetY : (e.layerY - e.target.offsetTop); // 画像の描画 DrawImage(); // 角度の変更 angle += 10; if (angle > 359) { angle = 0; } } ); // 画像の描画 DrawImage(); } // キャンバス取得 canvas = document.getElementById( "canvas" ); // コンテキストの取得 ctx = canvas.getContext('2d'); // キャンバスのクリア ctx.fillStyle = 'white'; ctx.fillRect( 0, 0, canvas.width, canvas.height ); /* イメージの読み込み */ { // 1枚目の読み込み img01 = new Image(); img01.onload = function () { // 初期化 OnInit(); }; img01.src = "./img/hidekiti.png"; } } </script> </head> <body bgcolor="#c0c0ff" onload="OnLoad()"> <h1>画像の回転</h1> <canvas width="300" height="240" id="canvas" style="background-color:black;"></canvas> <br /> 画像を回転させます。クリックすると画像が回転します。 <br /> <a href="../html5_list.html">戻る</a> </body> </html>