首頁 web前端 js教程 js實作圖片旋轉的三種方法_javascript技巧

js實作圖片旋轉的三種方法_javascript技巧

May 16, 2016 pm 04:53 PM
圖片旋轉

1 使用jQueryRotate.js實作

範例程式碼:

複製程式碼程式碼如下:
複製程式碼


程式碼



標題>

#div1 {
寬度:800px ;
高度:600px;
背景顏色:#ff0;
位置:絕對;
}
.imgRotate {
寬度:100px;
高度:80px; >位置:絕對;
頂部:50%;
左:50%;
邊距:-40px 0 0 -50px;
}
風格>
頭>


js實作圖片旋轉的三種方法_javascript技巧>


身體>



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;
}
}
樣式>
頭>


js實作圖片旋轉的三種方法_javascript技巧>


身體>


函數旋轉(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對象

示例代碼: 代碼如下:







js實作圖片旋轉的三種方法_javascript技巧







測試結果:chrome下不能旋轉;ie8下效果正常,旋轉後img物件仍為img物件。 BasicImage()僅一個參數。

查看這三種方法的程式碼會發現,本質上是一種解決方案:chrome下使用canvas物件實現,ie8下使用VML或Matrix()或BasicImage()實作。本人近期改造一個組件:其中涉及到旋轉、放大圖片,由於jQueryRotate.js在ie8下會產生一個新的對象,導致放大圖片前選擇圖片時,需要進行特殊處理。後來決定對chrome、ie8分開處理,chrome下使用jQueryRotate實現,ie8下使用BasicImage()實現,保證了程式碼的簡潔性和可讀性。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

使用uniapp實現圖片旋轉功能 使用uniapp實現圖片旋轉功能 Nov 21, 2023 am 11:58 AM

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

如何使用 JavaScript 實現圖片旋轉效果? 如何使用 JavaScript 實現圖片旋轉效果? Oct 20, 2023 pm 07:09 PM

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

實現微信小程式中的圖片旋轉效果 實現微信小程式中的圖片旋轉效果 Nov 21, 2023 am 08:26 AM

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

利用PHP和GD庫實現圖片旋轉的方法 利用PHP和GD庫實現圖片旋轉的方法 Jul 12, 2023 am 11:52 AM

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

Golang實現圖片旋轉和翻轉的方法 Golang實現圖片旋轉和翻轉的方法 Aug 27, 2023 pm 01:03 PM

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

Vue開發中如何解決行動端圖片旋轉問題 Vue開發中如何解決行動端圖片旋轉問題 Jun 29, 2023 pm 09:22 PM

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

優化Java開發中的圖片旋轉縮放效能的方法 優化Java開發中的圖片旋轉縮放效能的方法 Jun 30, 2023 pm 04:34 PM

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

使用PHP和GD庫實現圖片旋轉的最佳實踐 使用PHP和GD庫實現圖片旋轉的最佳實踐 Jul 12, 2023 am 09:53 AM

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

See all articles