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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...