1. 程式人生 > >混合App應用實現本地頭像剪下,壓縮上傳功能(支援任何H5框架)

混合App應用實現本地頭像剪下,壓縮上傳功能(支援任何H5框架)

頭像上傳是任何一個應用都會用到的功能,但是頭像的尺寸往往需要控制一下,這樣會有一個比較不錯的顯示效果,例如我們通常會控制使用者的頭像為正方形,這個切圓角邊的時候不會變形,顯示位置也很固定。

對於H5混合應用來講,我們就需要外掛做為支援, 今天來講一下我的解決方案, 此方案參考參考瞭如下幾個作者的程式碼,非常感謝這幾位作者的程式碼,解決了很大問題,但是存在小的issue,我修復了一下:

jeduan作者的外掛:

原生程式碼支援作者

folk的程式碼,做了小的更改和issue修復。

主要是對於頭像上傳固定於正方形切圖,並且可以縮放,保證使用者的顯示尺寸,有點類似於微信的頭像上傳!

安裝

cordova plugin add https://github.com/jiangbophd/cordova-plugin-crop

呼叫方法:

plugins.crop(function success (url) {
    //新的url
}, function fail () {

}, 'local image url', {quality: 30})

頭像剪下後後返回一個新的url,我們預設顯示這個url即可。

壓縮上傳

混合應用是既存在JS程式碼,也存在native程式碼,所以壓縮上傳的方案有很多,可以native也可以JS。

這裡鑑於頭像只上傳一張,所以可以用H5的canvas進行壓縮處理。因為我們的頭像剪下的時候已經對頭像質量做了一個控制:

{quality: 30}

如果想進一步壓縮的話,可以用如下程式碼:

let image = new Image(),
            canvas = document.createElement("canvas"),
            ctx = canvas.getContext("2d"),
            ext = image.src.substring(image.src.lastIndexOf(".") + 1).toLowerCase();
        image.src = imgUrl;
        canvas.width = image.width
; canvas.height = image.height; ctx.drawImage(image, 0, 0, image.width, image.height); console.log(canvas.toDataURL("image/" + ext)); return canvas.toDataURL("image/" + ext);

最終圖片被轉換成base64編碼,伺服器就可以正常接收了!

相關推薦

混合App應用實現本地頭像壓縮功能支援任何H5框架

頭像上傳是任何一個應用都會用到的功能,但是頭像的尺寸往往需要控制一下,這樣會有一個比較不錯的顯示效果,例如我們通常會控制使用者的頭像為正方形,這個切圓角邊的時候不會變形,顯示位置也很固定。 對於H5混合應用來講,我們就需要外掛做為支援, 今天來講一下我的解決方

Android實現本地視訊+錄製視訊+視訊壓縮

今天研究了一下視訊上傳的處理,還包括研究可以視訊壓縮,本地視訊、錄製視訊上傳。本地視訊獲取需要適配手機,這個建議自己獲取本地視訊列表自己實現。不然就會出現路徑找不到返回 null 好東西都是要分享給大家的 有問題請留言評論。。。 視訊壓縮我用的是七牛的 ,我們圖片上傳的就是七牛,七牛的視

Django+jQuery cropper實現使用者頭像裁剪, 預覽和[原創]

{% extends "account/base.html" %} {% load static %} {% block content %} {% if user.is_authenticated %} | <a href="{% url 'account_email' %}">Manage

Vue + Canvas 實現頭像截圖功能

        此文共分為兩篇,上篇主要是展示最終的效果,下篇為程式碼實現部分。         首先,上圖看最終的製作效果。         這是選擇圖片前:         這是選擇圖片後:         主要需求有這幾點:       

使用element的upload元件實現一個完整的檔案功能

     本篇文章是《使用element的upload元件實現一個完整的檔案上傳功能(上)》的續篇。   話不多說,接著上一篇直接開始 一.功能完善—儲存表格中每一列的檔案列表狀態 1.思路   儲存表格中每一列的檔案列表狀態,這個功能是什麼意思呢,我們先看下前面示例的效果。   

小程式購物車功能支援手動輸入數量以及側邊欄和列表欄聯動的實現

小組剛完成一個小程式專案,第一版正式釋出了,過程中也遇到了很多問題,這裡記錄一下我負責的模組中的購物車功能的實現過程。後期再把其他小夥伴的模組也一併貼上來分析一下,自己也學習一下他們的獨門技能!效果圖如下: 在這裡,計數器、購物籃做成元件用於複用,由於左右聯動的功能

【移動端實現】相機喚起及圖片功能包括微信

前言 目前有個需求是圖片拍照上傳的功能,但是我就是死活掉不起相機。。。總是開啟的是檔案目錄OR上傳圖片。。。。而不是相機。。。 所以對比了下 程式碼: 參考了百度移動端實現方式。。。程式碼很簡單,對就這一句! <input type="file" acce

用ASP.NET的FileUpload控制元件實現帶對話方塊的FTP檔案功能

      最近不得已開始做網頁,一個ASP.NET的專案,需要實現FTP上傳功能,於是上網廣搜程式碼,發現FTP上傳的程式碼到處都是,隨手拈來,可是一般來說客戶端上傳檔案都需要一個檔案選擇對話方塊,正好自帶的FileUpload控制元件能夠實現。但是網上搜到FileUpl

在SpringBoot的環境檔案的功能結果沒有獲取到檔案的問題ServletFileUpload中getItemIterator(request)為空

在SpringBoot的環境下,寫上傳檔案的功能,結果沒有獲取到檔案的問題: 情況一: 使用Apache Commons FileUpload 元件上傳檔案時總是返回null,multipart/form-data型別檔案的接收。 <!DOCTYPE html>

Struts+Spring+Hibernate實現下載spring的最低框架配置web.xml等

引言  檔案的上傳和下載在J2EE程式設計已經是一個非常古老的話題了,也許您馬上就能掰著指頭數出好幾個著名的大件:如SmartUpload、Apache的FileUpload。但如果您的專案是構建在Struts+Spring+Hibernate(以下稱SSH)框架上的,這些大

react-native-image-picker在Android閃退的解決辦法頭像base64壓縮圖片

問題描述:最近做專案上傳頭像時用到了react-native-image-picker第三方庫,使用的是 base64格式 上傳,在以下配置的情況下,android點選選擇相簿會遇到閃退的問題,找到了

SSM框架檔案的下載無內容時js彈窗提示

SSM框架下檔案的上傳下載 非全部原創,僅用來記錄學習過的內容,自己添加了js判空彈窗的功能 1.首先我們建立一個測試用的jsp頁面,程式碼如下。 <%@ page language="java" contentType="text/html;

jquery擴充套件html5+canvas實現多張圖片 預覽 壓縮

主要javascript程式碼 (function($){ $.fn.extend({ aiiUpload:function(obj) { if(typeof obj !="object") { alert('引數錯誤'); retur

SpringMVC與layui搭配實現圖片根據日期建立對應資料夾配置虛擬目錄壓縮瀏覽器版本相容

$(function() { /** * layui圖片上傳控制元件 */ layui.use(['upload','form', 'layer'], function() { var $ = layui.

JAVA 實現 QQ 郵箱發送驗證碼功能不局限於框架

package -o lda tor apach return stack proc pub JAVA 實現 QQ 郵箱發送驗證碼功能(不局限於框架) 本來想實現 QQ 登錄,有域名一直沒用過,還得備案,好麻煩,只能過幾天再更新啦。 先把實現的發送郵箱驗證碼更能更新了。 老

使用element的upload元件實現一個完整的檔案功能

     說到標題就有點心塞了,前段時間專案上需要實現一個檔案上傳的功能,然後就咔咔的去用了element的upload元件,不用不知道一用嚇一跳哇。在使用的過程中遇到了很多讓意想不到的問題,後來也因為時間問題,沒有去仔細研究問題出現的根本原因,只是想辦法解決了問題。這些天有點空閒時間,脫離專案單獨實現了一

【Inline Hook應用篇】限制針對檔案型別

限制剪下板,主要是限制不允許貼上。我們對這兩個系統API進行掛鉤: GetClipboardData和OleGetClipboard //!<限制剪下板 InitHook("user32.dll", "GetClipboardData", (DWORD)hook

HTML5 APP應用實現圖片及拍照功能

HTMl5 APP手機端程式碼:   <video id="myVideo" autoplay="autoplay"></video> <br /> <input type="button" value="拍照" />

jQuery實現複製到

前段時間需要做一個點選一個按鈕,把制定內容複製到剪下板的效果。 對於IE瀏覽器而言,有一簡單的方法,通過 window.clipboardData: (假如有一個id為copy的按鈕,有一個i

混合APP實現合成帶引數二維碼的圖片並分享到微信

專案中遇到個需求,要把帶個人蔘數的二維碼的分享圖分享到微信,讓兩個使用者繫結。 這是分享之前的樣式,要用canvas把它做成一整張圖片,如果不是APP中是在微信會H5中可以進入頁面就製作,覆蓋在原圖上讓使用者長按圖片下載。 分享之前使用者可以自由搭配分享樣式,這是分享在微信中的樣子。