Ajax — cropper (圖片剪裁)基本用法

jQuery-cropper插件完整的API:http://www.jq22.com/jquery-info9322

1. 基本使用步驟

  1. <head> 中導入 cropper.css 樣式表:
<link rel="stylesheet" href="/assets/lib/cropper/cropper.css" />
  1. <body> 的結束標簽之前,按順序導入如下的 js 腳本:
<script src="/assets/lib/jquery.js"></script>
<script src="/assets/lib/cropper/Cropper.js"></script>
<script src="/assets/lib/cropper/jquery-cropper.js"></script>

3、在卡片的 layui-card-body 主體區域中,定義如下的 HTML 結構:

 <!-- 第一行的圖片裁剪和預覽區域 --><div class="row1"><!-- 圖片裁剪區域 --><div class="cropper-box"><!-- 這個 img 標簽很重要,將來會把它初始化為裁剪區域 --><img id="image" src="/assets/images/sample.jpg" /></div><!-- 圖片的預覽區域 --><div class="preview-box"><div><!-- 寬高為 100px 的預覽區域 --><div class="img-preview w100"></div><p class="size">100 x 100</p></div><div><!-- 寬高為 50px 的預覽區域 --><div class="img-preview w50"></div><p class="size">50 x 50</p></div></div></div><!-- 第二行的按鈕區域 --><div class="row2"><button type="button" class="layui-btn">上傳</button><button type="button" class="layui-btn layui-btn-danger">確定</button></div>

4、美化的樣式:

/* 設置卡片主體區域的寬度 */
.layui-card-body {width: 500px;
}/* 設置按鈕行的樣式 */
.row2 {display: flex;justify-content: flex-end;margin-top: 20px;
}/* 設置裁剪區域的樣式 */
.cropper-box {width: 350px;height: 350px;background-color: cyan;overflow: hidden;
}/* 設置第一個預覽區域的樣式 */
.w100 {width: 100px;height: 100px;background-color: gray;
}/* 設置第二個預覽區域的樣式 */
.w50 {width: 50px;height: 50px;background-color: gray;margin-top: 50px;
}/* 設置預覽區域下方文本的樣式 */
.size {font-size: 12px;color: gray;text-align: center;
}/* 設置圖片行的樣式 */
.row1 {display: flex;
}/* 設置 preview-box 區域的的樣式 */
.preview-box {display: flex;flex-direction: column;flex: 1;align-items: center;
}/* 設置 img-preview 區域的樣式 */
.img-preview {overflow: hidden;border-radius: 50%;
}

5、實現基本裁剪效果:

// 1.1 獲取裁剪區域的 DOM 元素var $image = $('#image')// 1.2 配置選項const options = {// 縱橫比aspectRatio: 1,// 指定預覽區域preview: '.img-preview'}// 1.3 創建裁剪區域$image.cropper(options)

2. 更換裁剪的圖片

  1. 拿到用戶選擇的文件
var file = e.target.files[0]

2、根據選擇的文件,創建一個對應的 URL 地址:

var newImgURL = URL.createObjectURL(file)

3、先銷毀舊的裁剪區域,再重新設置圖片路徑,之后再創建新的裁剪區域

$image.cropper('destroy')      // 銷毀舊的裁剪區域.attr('src', newImgURL)  // 重新設置圖片路徑.cropper(options)        // 重新初始化裁剪區域

4、將裁剪后的圖片,輸出為 base64 格式的字符串

var dataURL = $image.cropper('getCroppedCanvas', { // 創建一個 Canvas 畫布width: 100,height: 100}).toDataURL('image/png')       // 將 Canvas 畫布上的內容,轉化為 base64 格式的字符串

Canvas 技術,是瀏覽器網頁中實現繪圖的一門技術。它是由 <canvas> 標簽和一套繪圖 API 組成的!

   $('#sure').click(function(){let i = image.cropper('getCroppedCanvas', { // 創建一個 Canvas 畫布width: 100,height: 100});//將圖片轉為base64var str = i.toDataURL();$.ajax({type:'POST',url:'/my/update/avatar',data :{avatar: str},success:function(res){layer.msg(res.message);if(res.status === 0){window.parent.getUserInfo();}}});});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248020.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248020.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248020.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

「短篇小說」靈囚 540 天

轉載&#xff1a;知乎 - BIMBOX 孫彬 - https://zhuanlan.zhihu.com/p/24655832 「我們總有一天會逾越那條上帝劃好的界限&#xff0c;而最終我們將無法面對真實和虛假&#xff0c;正義與罪惡。」 「不幸的是&#xff0c;從伊甸園那一次&#xff0c;我們就已經越界了。」 第十天…

iOS 夠逼格的注釋總結

首先關于注意這里就不說什么VVDocument了&#xff0c;來點新鮮的&#xff01; 也許你使用過#warning 警告提示 也許你也使用過#pragma marks。 但是你見過或者使用過下面這個嗎&#xff1f; Comments containing:MARK:TODO:FIXME:!!!:???: 沒有&#xff0c;那么你就快速的看…

Git圖形化管理工具

Git圖形化管理工具 注意&#xff1a;必須在創建的倉庫中進行右鍵打開 復制這段內容后打開百度網盤App&#xff0c;操作更方便哦。 鏈接&#xff1a;https://pan.baidu.com/s/1eXIk01LXSmzmXvYfw3MnEA 提取碼&#xff1a;J166 --來自百度網盤超級會員V5的分享 分類 sourceTr…

TCP/IP(一):數據鏈路層

背景 這一系列的文章主要是為一般的、非專業開發崗位(如移動端)的工程師準備&#xff0c;一方面可以對網絡的基本知識有基本的了解&#xff0c;另一方面不至于面試中被問到相關問題時束手無策。知識以 TCP/IP 協議簇為主&#xff0c;也會有應用層和數據鏈路層的簡單介紹。 文…

富文本和封面制作

1. 富文本編輯器的實現步驟 添加如下的 layui 表單行&#xff1a; <div class"layui-form-item"><!-- 左側的 label --><label class"layui-form-label">文章內容</label><!-- 為富文本編輯器外部的容器設置高度 --><div…

Linux系統編程——線程(1)

目錄 線程概要Linux內核線程實現原理線程的共享/不共享資源線程優缺點線程控制原語pthread_selfpthread_createpthread_exitpthread_joinpthread_cancel終止線程方式控制原語對比前情提要&#xff1a; Linux用戶級線程和內核級線程區別 線程概要 Linux內核線程實現原理 類Unix系…

TCP/IP(二):IP協議

IP協議處于OSI參考模型的第三層——網絡層&#xff0c;網絡層的主要作用是實現終端節點間的通信。IP協議是網絡層的一個重要協議&#xff0c;網絡層中還有ARP(獲取MAC地址)和ICMP協議(數據發送異常通知) 數據鏈路層的作用在于實現同一種數據鏈路下的包傳遞&#xff0c;而網絡層…

Ajax — 大事件項目(第四天)

分類管理 添加分類 初步使用彈出層 給 “添加分類” 綁定一個單擊事件單擊事件中&#xff0c;使用 layer.open() 實現一個彈出層 type: 1, 彈層的類型是頁面層title, “添加文字分類”content: ‘字符串&#xff0c;DOM’,area: [‘500px’, ‘250px’] // ---------------…

redis學習(四)

一、Redis 鍵(key) 1、Redis 鍵命令用于管理 redis 的鍵。 2、Redis 鍵命令的基本語法如下&#xff1a;redis 127.0.0.1:6379> COMMAND KEY_NAME 3、常用key命令 keys * 獲取所有的keyselect 0 選擇第一個庫move myString 1 將當前的數據庫key移動到某個…

TCP/IP(三):IP協議相關技術

在前兩篇文章中&#xff0c;我分別介紹了數據鏈路層和網絡層的IP協議。雖然這個系列教程的重點是搞定 TCP/IP&#xff0c;不過不用著急&#xff0c;本文簡要介紹完與 IP 協議相關的技術&#xff0c;下一篇文章就會正式、詳細的介紹 傳輸層與 TCP 協議。這篇文章會介紹 DNS、ARP…

Node — 第一天

Node-01 會 JavaScript&#xff0c;就能學會 Node.js&#xff01;&#xff01;&#xff01; **Node.js 的官網地址&#xff1a; ** Node.js 的學習路徑&#xff1a; JavaScript 基礎語法 Node.js 內置 API 模塊&#xff08;fs、path、http等&#xff09; 第三方 API 模塊&…

TCP/IP(四):TCP 與 UDP 協議簡介

從本章開始&#xff0c;我們開始介紹最重要的傳輸層。傳輸層位于 OSI 七層模型的第四層&#xff08;由下往上&#xff09;。顧名思義&#xff0c;傳輸層的主要作用是實現應用程序之間的通信。網絡層主要是保證不同數據鏈路下數據的可達性&#xff0c;至于如何傳輸數據則是由傳輸…

Node — 第二天

http模塊 搭建服務器的步驟 ① 導入 http 模塊 ② 創建 web 服務器實例 ③ 為服務器實例綁定 request 事件&#xff0c;監聽客戶端的請求 ④ 啟動服務器 // ① 導入 http 模塊 const http require(http);// ② 創建 web 服務器實例 const server http.createServer();/…

《學習之道》第九章不要突擊工作

靈感從天而降的時刻確實是存在的。 這樣少見的創造性突破&#xff0c;通常是在經歷了一番神經緊張的準備、竭盡全力的努力&#xff0c;甚至包括熬夜工作后才姍姍來遲。這與 數學 和 科學標準的一天學習 是大不相同的。 它更像體育運動&#xff1a;每隔一陣子會有一天的比賽&…

TCP/IP(五):TCP 協議詳解

上一節 中講過&#xff0c;TCP 協議是面向有連接的協議&#xff0c;它具有丟包重發和流量控制的功能&#xff0c;這是它區別于 UDP 協議最大的特點。本文就主要討論這兩個功能。 數據包重發 數據發送 丟包重發的前提是發送方能夠知道接收方是否成功的接收了消息。所以&#…

nodeJS — 學習的筆記

Node介紹 為什么要學習Node.js 企業需求 具有服務端開發經驗更改front-endback-end全棧開發工程師基本的網站開發能力 服務端前端運維部署 多人社區 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MVqHkEIo-1588084625862)(C:\Users\A\AppData\R…

TCP/IP(六):HTTP 與 HTTPS 簡介

本文是準備面試過程中網絡部分總結整理的最后一篇文章&#xff0c;主要介紹以下知識&#xff1a; HTTP 協議概述POST 請求和 GET 請求Cookie 和 Session數據傳輸時的加密HTTPS 簡介 HTTP 協議 在 OSI 七層模型中&#xff0c;HTTP 協議位于最頂層的應用層中。通過瀏覽器訪問網…

Node — 第三天

模塊化 什么是模塊化 模塊化是指解決一個復雜問題時&#xff0c;自頂向下逐層把系統劃分成若干模塊的過程。 對于整個系統來說&#xff0c;模塊是可組合、分解和更換的單元。 生活中的模塊化 編程中的模塊化 編程領域中的模塊化&#xff0c;就是遵守固定的規則&#xff0c;…

FireDAC 中文字段過濾問題

當使用 FireDAC Filter 過濾數據的時候&#xff0c;通常這樣寫&#xff1a; FDMemTable.Filtered : False; FDMemTable1.Filter : 姓名 string(edtFilter.Text).QuotedString; FDMemTable.Filtered : True; 將會報錯&#xff1a;[FireDAC][Stan][Eval]-107. Invalid characte…

UIScrollViewDelegate-代理API詳解

在iOS編程中&#xff0c;經常用到UIScrollView控件。自然也會用到UIScrollViewDelegate協議。 今天就抽空&#xff0c;研究了一下UIScrollViewDelegate中所有的委托方法。 僅做Mark&#xff01;如有&#xff0c;錯誤之處&#xff0c;歡迎留言指正&#xff0c;交流&#xff01;貼…