js實作圖片旋轉的三種方法_javascript技巧
1 使用jQueryRotate.js實作
範例程式碼:
程式碼
標題>
#div1 {
寬度:800px ;
高度:600px;
背景顏色:#ff0;
位置:絕對;
}
.imgRotate {
寬度:100px;
高度:80px; >位置:絕對;
頂部:50%;
左:50%;
邊距:-40px 0 0 -50px;
}
風格>
頭>

身體>
var num = 0;
$("#input2").click(function(){
num ;
$("#img1") .rotate(90*num);
});
腳本>
測試結果:chrome下效果正常,旋轉後img物件下面仍然為img對象;ie8下效果正常,但旋轉後img對象變成對象,由於對象變化,若旋轉後仍按原來方法獲取img對象,東南報js錯誤。欲取得影像對象,可依類別取得。如果影像旋轉後,不進行其他操作,則可用此方法。若進行影像其他操作,如放大、縮小,可用此方法程式碼如下:
;
:group>
2 使用Microsoft提供的Matrix物件
範例程式碼: 程式碼如下:
標題>
#div1 {
寬度:800px ;
高度:600px;
背景顏色:#ff0;
位置:絕對;
}
.imgRotate {
寬度:100px;
高度:100px; >位置:絕對;
頂部:50%;
左:50%;
邊距:-50px 0 0 -50px;
}
#imgRotate {
寬度:100px ;
高度:100px;
位置:絕對;
頂部:50%;
左:50%;
邊距:-50px 0 0 -50px;
}
}
樣式>
頭>

身體>
函數旋轉(id,角度,whence) {
var p = document.getElementById(id);
// 我們將角度儲存在圖片標籤內以實現持久化
if (!whence) {
p.angle = ((p.angle==undefined?0:p.angle) angle ) %360;
} else {
p.angle = 角度;
}
}
}
if (p.angle >= 0) {
var 旋轉= Math.PI * p.angle / 180;
} else {
var 旋轉= Math.PI * (360 p.angle ) / 180;
}
var costheta = Math.cos(旋轉);
var sintheta = Math.sin(旋轉);
if (document.all && !window.opera ) {
var canvas = document.createElement('img');
canvas.src = p.src;
canvas.height = p.height;
canvas.width = p .width;
canvas.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11="costheta",M12="(-sintheta)",M21="sintheta",M22="costheta" ,SizingMethod= '自動擴充')";
} else {
var canvas = document.createElement('canvas');
if (!p.oImage) {
canvas.oImage = new Image();
canvas.oImage.src = p.src;
} else {
canvas.oImage = p.oImage;
}
canvas.style.width =canvas.style.width = canvas.width = Math.abs(costheta*canvas.oImage.width) Math.abs(sintheta*canvas.oImage.height);
canvas.style.height = canvas.height = Math.abs(costheta*canvas. oImage.height) Math.abs(sintheta*canvas.oImage.width);
var context = canvas.getContext('2d');
context.save();
if (rotation context.translate(sintheta*canvas.oImage.height,0);
} else if (rotation context.translate(canvas .width,-costheta*canvas.oImage.height);
} else if (rotation context.translate(-costheta*canvas.oImage.width,canvas.height) ;
} else {
context.translate(0,-sintheta*canvas.oImage.width);
}
context.rotate(旋轉);
context.drawImage(canvas.oImage , 0, 0, canvas.oImage.width, canvas.oImage.height);
context.restore();
}
canvas.id = p.id;
canvas.angle = p .angle;
p.parentNode.replaceChild(canvas, p);
}
函數rotateRight(id,angle) {
旋轉(id,angle==undefined?90:angle );
}
函數rotateLeft(id,角度) {
旋轉(id,角度==未定義? -90:-角度);
}
$("#input1").click(function(){
$("img.imgRotate").attr("id","imgRotate") ;
rotateLeft(" imgRotate",90);
$("#imgRotate").attr("頂部","50%");
$("#imgRotate").attr("左","50%" );
$("#imgRotate").attr("邊距","-50px 0 0 -50px");
腳本>
測試結果:chrome下效果正常,但旋轉後img物件變成canvas物件;ie8下效果正常,旋轉後img物件仍為img物件。
3 使用微軟提供的BasicImage對象
示例代碼: 代碼如下:
測試結果:chrome下不能旋轉;ie8下效果正常,旋轉後img物件仍為img物件。 BasicImage()僅一個參數。
查看這三種方法的程式碼會發現,本質上是一種解決方案:chrome下使用canvas物件實現,ie8下使用VML或Matrix()或BasicImage()實作。本人近期改造一個組件:其中涉及到旋轉、放大圖片,由於jQueryRotate.js在ie8下會產生一個新的對象,導致放大圖片前選擇圖片時,需要進行特殊處理。後來決定對chrome、ie8分開處理,chrome下使用jQueryRotate實現,ie8下使用BasicImage()實現,保證了程式碼的簡潔性和可讀性。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用uniapp實現圖片旋轉功能在行動應用開發中,經常遇到需要對圖片進行旋轉的場景,例如拍攝照片後需要進行調整角度,或實現類似相機拍照後旋轉的效果。本文將介紹如何使用uniapp框架實現圖片旋轉功能,並提供具體的程式碼範例。 uniapp是一個基於Vue.js的跨平台開發框架,可以同時開發和發布iOS、Android、H5等多個平台的應用程式。在uniapp中實現

如何使用JavaScript實現圖片旋轉效果?在網頁開發中,常會遇到需要實現圖片旋轉效果的場景,例如展示產品360°旋轉圖、實現圖片輪播效果等。而JavaScript是一種強大的腳本語言,可以輕鬆實現這種圖片旋轉效果。以下將介紹一種基於JavaScript實現圖片旋轉效果的方法,並提供具體的程式碼範例。首先,我們建立一個簡單的HTML結

實現微信小程式中的圖片旋轉效果,需要具體程式碼範例微信小程式是一種輕量級的應用程序,為用戶提供了豐富的功能和良好的用戶體驗。在小程式中,開發者可以利用各種元件和API來實現各種效果。其中,圖片旋轉效果是一種常見的動畫效果,可以為小程式增添趣味性和視覺效果。在微信小程式中實作圖片旋轉效果,需要使用小程式提供的動畫API。以下是一個具體的程式碼範例,展示如何在小程

利用PHP和GD庫實現圖片旋轉的方法圖片旋轉是一個常見的影像處理需求,透過旋轉圖片可以實現一些特殊的效果或滿足使用者需求。在PHP中,可以藉助GD庫來實現圖片旋轉功能。本文將介紹如何使用PHP和GD庫來實現圖片旋轉,並附帶程式碼範例。首先,確保你的PHP環境已經安裝了GD庫拓展。在命令列中輸入php-m,查看是否有gd模組,如果沒有則需要先安裝。下面是一個簡單

Golang實現圖片旋轉和翻轉的方法在影像處理中,經常需要對圖片進行旋轉和翻轉的操作。本文將介紹使用Golang實現圖片旋轉和翻轉的方法,並提供相應的程式碼範例。首先,我們需要導入image和image/draw兩個套件:import("image""image/draw")接下來,我們定義一個函數

隨著行動互聯網的快速發展,越來越多的網站和應用程式開始採用Vue.js進行行動裝置開發。然而,在行動端開發過程中,常會遇到圖片旋轉的問題。圖片旋轉是指當使用者在行動裝置上拍攝照片時,由於裝置方向的變化,導致照片在頁面上顯示的角度與實際拍攝的角度不一致。解決圖片旋轉問題,首先需要了解圖片旋轉的原因。當使用者在行動裝置上拍攝照片時,裝置會自動為照片添加一些元數據,其

隨著網路的發展,圖片的處理變得越來越常見。在Java開發中,經常需要處理圖片的旋轉和縮放,如何優化這些操作的效能成為開發者關注的問題。本文將討論如何在Java開發中優化圖片旋轉縮放的效能。首先,我們來了解圖片旋轉和縮放的原理。圖片旋轉是指將圖片依照旋轉中心逆時針或順時針旋轉一定的角度。而圖片縮放是指透過改變圖片的尺寸來達到縮小或放大的效果。在Java開

使用PHP和GD庫實現圖片旋轉的最佳實踐概述:圖片旋轉是Web開發中常見的需求之一,透過旋轉圖片可以達到改變圖片方向或調整圖片角度的目的。在PHP中,可以透過GD庫來實現圖片旋轉的功能。本文將介紹如何使用PHP和GD庫來實現圖片旋轉,並分享一些最佳實踐和程式碼範例。一、安裝GD函式庫在開始前,我們要確保伺服器上已經安裝了GD函式庫。如果沒有安裝的話,可以按照以下
