最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實現(xiàn)點擊圖片翻轉效果

 更新時間:2021年10月18日 09:24:26   作者:蒙奇. D. 檸檬  
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)點擊圖片翻轉效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近在做一個有關人臉采集的項目,然后在編寫前端模塊時,遇到了一個問題,就是當客戶上傳照片或直接拍照上傳時,會遇到有些圖片可能會90度翻轉過來所以,我們需要給個按鈕客戶讓客戶自己可以對照品進行旋轉效果大致如下

圖1.正常圖片上傳

圖2.圖片左旋轉

圖3.圖片右旋轉

以上就是一個圖片旋轉功能

下面我們就開始代碼部分吧

這里我采取了一個方法,然后當前我的圖片格式是base64,如果遇到其它格式也無所謂,因為我們最終的效果還是要轉為image對象來實現(xiàn)的

/**
     * 圖片旋轉
     * @param direction 旋轉的方向
     */
    rotate (direction) {
      const img = new Image()
      // 這里的思維就是,把圖片映射到一個畫板上,然后對圖片進行重新繪制,所以這里要建一個canvas對象來充當我們的畫板
      const canvas = document.createElement('canvas')
      // base64轉換image對象
      img.src = this.uploadImage
      // 這里記得一定要在base64轉換成圖片對象后再進行其它操作,筆者在這里踩了個坑,onload方法就是圖片加載再進行其它操作,如果圖片是文件路徑方式跨域調用效果更加明顯
      img.onload = () => {
        // img的高度和寬度不能在img元素隱藏后獲取,否則會出錯
        const height = img.height
        const width = img.width
        // 旋轉角度以弧度值為參數(shù)
        const ctx = canvas.getContext('2d')
        if (direction === 'right') {
          canvas.width = height
          canvas.height = width
          ctx.rotate(90 * Math.PI / 180)
          ctx.drawImage(img, 0, 0, width, -height)
        } else {
          canvas.width = height
          canvas.height = width
          ctx.rotate(-90 * Math.PI / 180)
          ctx.drawImage(img, 0, 0, -width, height)
        }
        // 旋轉后的圖片重新轉為base64
        this.uploadImage = this.getBase64Image(img, canvas)
      }
    },
    /**
    * 把image文件轉為base64
    */
    getBase64Image (img, canvas) {
      const ctx = canvas.getContext('2d')
      ctx.drawImage(img, 0, 0, img.width, img.height)
      const ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase()
      return canvas.toDataURL('image/' + ext)
    }

注意:如果圖片是跨域獲取的話這里可能會使canvas轉回base64出現(xiàn)問題,這時可能需要開啟代理來進行圖片獲取

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • JavaScript中英文字符長度統(tǒng)計方法示例【按照中文占2個字符】

    JavaScript中英文字符長度統(tǒng)計方法示例【按照中文占2個字符】

    這篇文章主要介紹了JavaScript中英文字符長度統(tǒng)計方法,涉及javascript針對中英文字符的匹配與運算相關操作技巧,需要的朋友可以參考下
    2017-01-01
  • 一文帶你玩轉JavaScript的箭頭函數(shù)

    一文帶你玩轉JavaScript的箭頭函數(shù)

    在ES6中新增了函數(shù)的簡寫方式----箭頭函數(shù),箭頭函數(shù)的出現(xiàn)不僅簡化了大量代碼,也讓代碼看起來更加優(yōu)雅,同時也解決了this指向問題,下面我們就來詳細講解如何玩轉箭頭函數(shù)
    2022-09-09
  • ES6 Generator基本使用方法示例

    ES6 Generator基本使用方法示例

    這篇文章主要介紹了ES6 Generator基本使用方法,結合實例形式分析了ES6 Generator基本功能、使用方法與操作注意事項,需要的朋友可以參考下
    2020-06-06
  • js實現(xiàn)動態(tài)增加文件域表單功能

    js實現(xiàn)動態(tài)增加文件域表單功能

    這篇文章主要為大家詳細介紹了js實現(xiàn)動態(tài)增加文件域表單功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 在html頁面上拖放移動標簽

    在html頁面上拖放移動標簽

    在html頁面上拖放移動標簽,需要的朋友可以參考下。
    2010-01-01
  • 使用JS實現(xiàn)在空白頁上展示出一個有趣的時鐘

    使用JS實現(xiàn)在空白頁上展示出一個有趣的時鐘

    在我們日常的網頁瀏覽中,空白的頁面往往會被視為一種無趣的事物,一片等待填充的空間,今天我們來學習一下如何使用JS在空白的網頁上展示出一個有趣的時鐘吧,感興趣的小伙伴跟著小編一起來看看吧
    2024-04-04
  • 基于Echarts實現(xiàn)餅圖效果

    基于Echarts實現(xiàn)餅圖效果

    這篇文章主要為大家詳細介紹了基于Echarts實現(xiàn)餅圖效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 微信小程序實現(xiàn)select二級下拉

    微信小程序實現(xiàn)select二級下拉

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)select二級下拉效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript輸出為[object?Object]問題的解決辦法

    JavaScript輸出為[object?Object]問題的解決辦法

    平時我們在接收后端返回的json對象通常是一個字符串類型的object,所以一般我們要對這個object進行類型轉化后,我們才能使用object里面的數(shù)據(jù),這篇文章主要給大家介紹了關于JavaScript輸出為[object?Object]問題的解決辦法,需要的朋友可以參考下
    2023-11-11
  • JavaScript雙向鏈表實現(xiàn)LFU緩存算法

    JavaScript雙向鏈表實現(xiàn)LFU緩存算法

    本文主要介紹了JavaScript雙向鏈表實現(xiàn)LFU緩存算法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

日喀则市| 内黄县| 丰原市| 上饶市| 台北县| 北京市| 峨边| 新龙县| 呼玛县| 丰台区| 常德市| 桦甸市| 博白县| 静安区| 弥渡县| 汪清县| 隆安县| 克拉玛依市| 保靖县| 河东区| 安图县| 黔江区| 曲松县| 大连市| 山东省| 工布江达县| 天全县| 临夏县| 桃园市| 双江| 辽宁省| 邓州市| 治县。| 新郑市| 长岭县| 大同县| 华阴市| 石首市| 霞浦县| 高阳县| 年辖:市辖区|