使圖片旋轉的3種解決方案_基礎知識

來源:互聯網
上載者:User

圖片旋轉效果的研究
最近在項目中需要做圖片的旋轉功能,我研究了一下。下面來總結下圖片旋轉在各個瀏覽器的支援情況

一、圖片旋轉的方案

1)css3實現圖片旋轉功能:支援的瀏覽器有chrome,firefox;opera是不支援的。

具體代碼為:-moz-transfrom:rotate(90deg);-webkit-ransfrom:rotate(90deg);
上述代碼的意思就是將圖片順時針旋轉90度,其實可以旋轉任意的度數。但是支援css3的瀏覽器只有chrome,firefox3.6 ,safari,ie瀏覽器是不支援的。那麼IE
下該怎麼處理呢?於是就有了下面的一種方案

2)在IE下通過濾鏡來實現旋轉

具體代碼為:filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
這裡的rotation 參數可以為0,1,2,3 ,表示的意思就是這些數字乘以90後的旋轉角度。IE下如果要旋轉任意的角度要用到矩陣變換濾鏡,我們在日常的使用過程中,
大部分使用的是變換90的倍數,這裡就不討論任意的角度了。但是還是有問題的,如果非ie瀏覽器,不支援CSS3,那麼如果實現圖片的旋轉呢,其實canvas也是可以圖片旋轉的。

3)用canvas來實現圖片的旋轉

canvas在chrome,firefox,opera等瀏覽器中均支援,他是有一個基於 JavaScript 的繪圖 API,。首先我們來看看怎樣利用canvas+JavaScript實現圖片的旋轉

代碼如下:

複製代碼 代碼如下:

var test = function(){
        var canvas = document.getElementById("result");
        var oImg = document.getElementById("Img");       
        canvas.height = 300;
        canvas.width = 200;
        var context = canvas.getContext("2d");
        context.save();
        context.translate(200,0);
        context.rotate(Math.PI/3);
        context.drawImage(oImg, 0, 0, 300, 200);
        context.restore();
        oImg.style.display = "none";
};

上述代碼首先得到一個canvas對象,然後設定他的高度,開始繪圖了。這個改變canvas的中心點和旋轉角度,然後將圖片畫到canvas中去,將其儲存起來,然後
隱藏之前的圖片。這種方法實現還是比較平滑的。

二、各種方案的對比

css3的實現方案,不會改變原始圖片所佔空間的大小的,但是ie下的濾鏡會改變圖片所佔空間的大小。
其實ie下也是可以支援canvas的,只需要引用一個canvas的指令碼。這個是有google提供的一個。但是這個指令碼有點大,沒有壓縮前有20多k
我比較建議在ie下使用濾鏡來實現,其他的瀏覽器使用canvas 標籤來實現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.