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

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
如何使用 JavaScript 实现图片旋转效果?如何使用 JavaScript 实现图片旋转效果?Oct 20, 2023 pm 07:09 PM

如何使用JavaScript实现图片旋转效果?在网页开发中,经常会遇到需要实现图片旋转效果的场景,比如展示产品360°旋转图、实现图片轮播效果等。而JavaScript是一种强大的脚本语言,可以轻松地实现这种图片旋转效果。下面将介绍一种基于JavaScript实现图片旋转效果的方法,并提供具体的代码示例。首先,我们创建一个简单的HTML结

使用uniapp实现图片旋转功能使用uniapp实现图片旋转功能Nov 21, 2023 am 11:58 AM

使用uniapp实现图片旋转功能在移动应用开发中,经常遇到需要对图片进行旋转的场景,比如拍摄照片后需要进行调整角度,或者实现类似相机拍照后旋转的效果。本文将介绍如何使用uniapp框架实现图片旋转功能,并提供具体的代码示例。uniapp是一个基于Vue.js的跨平台开发框架,可以同时开发和发布iOS、Android、H5等多个平台的应用。在uniapp中实现

实现微信小程序中的图片旋转效果实现微信小程序中的图片旋转效果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模块,如果没有则需要先安装。下面是一个简单

Vue开发中如何解决移动端图片旋转问题Vue开发中如何解决移动端图片旋转问题Jun 29, 2023 pm 09:22 PM

随着移动互联网的快速发展,越来越多的网站和应用程序开始采用Vue.js进行移动端开发。然而,在移动端开发过程中,经常会遇到图片旋转的问题。图片旋转是指当用户在移动设备上拍摄照片时,由于设备方向的变化,导致照片在页面上显示的角度与实际拍摄的角度不一致。解决图片旋转问题,首先需要了解图片旋转的原因。当用户在移动设备上拍摄照片时,设备会自动为照片添加一些元数据,其

优化Java开发中的图片旋转缩放性能的方法优化Java开发中的图片旋转缩放性能的方法Jun 30, 2023 pm 04:34 PM

随着互联网的发展,图片的处理变得越来越常见。在Java开发中,经常需要处理图片的旋转和缩放,如何优化这些操作的性能成为开发者关注的问题。本文将讨论如何在Java开发中优化图片旋转缩放的性能。首先,我们来了解一下图片旋转和缩放的原理。图片旋转是指将图片按照旋转中心逆时针或顺时针旋转一定的角度。而图片缩放是指通过改变图片的尺寸来达到缩小或放大的效果。在Java开

Golang实现图片旋转和翻转的方法Golang实现图片旋转和翻转的方法Aug 27, 2023 pm 01:03 PM

Golang实现图片旋转和翻转的方法在图像处理中,经常需要对图片进行旋转和翻转的操作。本文将介绍使用Golang实现图片旋转和翻转的方法,并提供相应的代码示例。首先,我们需要导入image和image/draw两个包:import("image""image/draw")接下来,我们定义一个函数

如何使用php和Imagick实现图片旋转如何使用php和Imagick实现图片旋转Jul 28, 2023 pm 05:39 PM

如何使用php和Imagick实现图片旋转图片旋转在网页开发中是一个常见的需求,可以用来改变图片的朝向或者制作图片旋转特效。在php开发中,可以使用Imagick库来实现图片旋转的功能。本文将介绍如何使用php和Imagick来实现图片旋转,并提供代码示例供参考。Imagick是一个功能强大的图片处理扩展,可以在php中对图片进行各种操作,包括旋转、裁剪、尺

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具