h5上傳圖片及預覽

来源:http://www.cnblogs.com/colima/archive/2016/04/22/5422658.html
-Advertisement-
Play Games

第一次做圖片上傳,記錄一些問題。 1,圖片的base64編碼就是可以將一副圖片數據編碼成一串字元串,使用該字元串代替圖像地址。而網頁上的每一個圖片,都是需要消耗一個http請求下載而來的,使用base64就不用請求http。 2,上傳圖片: 3,圖片轉base64(readAsDataURL方法用於 ...


    第一次做圖片上傳,記錄一些問題。

    1,圖片的base64編碼就是可以將一副圖片數據編碼成一串字元串,使用該字元串代替圖像地址。而網頁上的每一個圖片,都是需要消耗一個http請求下載而來的,使用base64就不用請求http。

    2,上傳圖片:

1 <div id="ImgPr"></div>
2 <input class="click-upload" type="file" id="up" accept="image/*">

   3,圖片轉base64(readAsDataURL方法用於讀取指定Blob或File的內容。當讀操作完成,readyState變為DONE, loadend被觸發,此時result屬性包含數據:URL以base64編碼的字元串表示文件的數據):

 1 function picUpload() {
 2     var preview = document.querySelector('img');
 3     var file = document.querySelector('input[type=file]').files[0];
 4     var reader = new FileReader();
 5         reader.onloadend = function () {
 6         preview.src = reader.result;
 7     }
 8     if (file) {
 9         reader.readAsDataURL(file);
10     } else {
11         preview.src = "";
12     }
13 }

     4,壓縮圖片並轉base64(通過canvas把圖片進行大小壓縮):

 1 function picUpload(){
 2     var me=this;
 3     var img = new Image();
 4     $('#up').on('change',function(){
 5         var ViewWidth=$(this).width();
 6         var ViewHeight=$(this).height();
 7         var file = this.files[0];
 8         var URL = URL || webkitURL;
 9         img.src=URL.createObjectURL(file);
10         img.onload = function(){
11             var imgMe=this,
12                 imgWidth=0,
13                 imgHeight= 0,
14                 w = imgMe.width,
15                 h = imgMe.height,
16                 scale1 = w/ViewWidth,
17                 scale2 = h/ViewHeight;
18             imgWidth=parseInt(Math.floor(w/scale1));
19             imgHeight=parseInt(Math.floor(h/scale2));
20             var canvas = document.createElement('canvas');
21             var img = document.createElement('img');
22             $('#ImgPr').html(img);   
23             var ctx = canvas.getContext('2d');
24             canvas.width = ViewWidth;
25             canvas.height = ViewHeight;
26             ctx.drawImage(imgMe,0,0,imgWidth,imgHeight);
27             me.src=canvas.toDataURL('image/jpeg');
28             $(img).prop("src",me.src);
29         };
30     });
31 };

  5,$.ajax()方法里的data如果是字元串則不能用大括弧括起來,這樣在有某些手機上會報錯。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 添加這種樣式的電子錶 1.打開後臺設置 博客側邊欄公告(支持HTML代碼)添加以下代碼 如果你是用的是新模板當加入本代碼時會時模板錯亂,但是不用慌張只要重新應用一下模板就ok啦! 如果覺得對您有幫助歡迎推薦!!您的推薦將是我的最大動力 ...
  • DeviceOne平臺包含2個基礎的佈局組件,do_ALayout和do_Linearlayout。所謂佈局組件就是在IDE里設計界面,可以拖拽別的組件加到這個佈局組件里作為這個佈局組件內的一個部分。 註意:do_ScrollView也算是佈局,也可以往裡面拖拽其他組件,不過它比較特殊,它有且只有一 ...
  • 學習要點:1.表格2.按鈕 主講教師:李炎恢 本節課我們主要學習一下 Bootstrap 表格和按鈕功能,通過內置的 CSS 定義,顯示各種豐富的效果。 一.表格Bootstrap 提供了一些豐富的表格樣式供開發者使用。1.基本格式//實現基本的表格樣式<table class="table">註: ...
  • AngularJS表單 AngularJS表單時輸入控制項的集合HTML控制項 一下HTML input 元素被稱為HTML 控制項: input 元素 select元素 button元素 textarea元素 HTML 表單 AngularjS表單上實例 <div ng-app="myApp" ng-c ...
  • 學習要點:1.頁面排版 主講教師:李炎恢 本節課我們主要學習一下 Bootstrap 全局 CSS 樣式中的排版樣式,包括了標題、頁面主體、對齊、列表等常規內容。 一.頁面排版Bootstrap 提供了一些常規設計好的頁面排版的樣式供開發者使用。1.頁面主體Bootstrap 將全局 font-si ...
  • 簡介 Base64是一種基於64個可列印字元來表示二進位數據的表示方法。由於2的6次方等於64,所以每6個比特為一個單元,對應某個可列印字元。三個位元組有24個比特,對應於4個Base64單元,即3個位元組需要用4個可列印字元來表示。它可用來作為電子郵件的傳輸編碼。在Base64中的可列印字元包括字母A ...
  • 學習要點:1.Bootstrap 概述2.Bootstrap 特點3.Bootstrap 結構4.創建第一個頁面5.學習的各項準備 主講教師:李炎恢 本節課我們主要瞭解一下 Boostrap 歷史、特點、用途,以及為什麼選擇 Boostrap 來開發我們的 Web 項目。 一.Bootstrap 概 ...
  • 開始學習前端知識,做一些筆記來記錄下~ 之前學習都是使用的dw 現在前端開發工具既輕便功能也夠強大。 下麵記錄下常用的前端工具: 工具安裝: Sublime3安裝 官網下載地址:http://www.sublimetext.com/ 安裝插件步驟: 第一步:安裝插件的包管理器:package con ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...