H5調用相機和相冊更換頭像


需求:H5調用手機的相機和相冊從而實現更換頭像的功能

這個功能是很常用的一個功能,因此做一個記錄。

1.在頭像img下加一個文件輸入框

<input type="file" id="file" accept="image/*" capture='camera' multiple>

並隱藏之

1 <center>
2    <img src="images/Bitmap@2x.png" class="avatar">
3    <input type="file" id="file" accept="image/*" capture='camera' multiple>
4 </center>
1 #file {
2    display: none;
3 }

 

2.點擊頭像觸發文件輸入框點擊事件

$(".avatar").click(function(){
    $("#file").trigger("click")
})

 

3.給ios去掉capture屬性,這樣iphone才能調用相冊。這段代碼可以提取到公共js里復用。

var file = document.querySelector('input');
if (getIos()&&file) {
    file.removeAttribute("capture");
}
function getIos() {
    var ua=navigator.userAgent.toLowerCase();
    if (ua.match(/iPhone\sOS/i) == "iphone os") {
        return true;
    } else {
        return false;
    }
}

 

4.通過js拿到上傳的文件內容,轉成base64編碼並顯示圖片在頁面上

 1 //轉成base64
 2 $('input[type=file]').on('change', function () {
 3     var reader = new FileReader();
 4     reader.onload = function (e) {
 5         console.log(reader.result);  //或者e.target.result都是一樣的,都是base64碼
 6         $(".avatar").attr("src", reader.result);
 7      }
 8     reader.readAsDataURL(this.files[0])
 9     //filses就是input[type=file]文件列表,files[0]就是第一個文件,這里就是將選擇的第一個圖片文件轉化為base64的碼
10 }) 

 

5.實現效果頁面展示

更換頭像前的效果:

 

 更換頭像后的效果:

附:獲取File對象的方式為

frontFile = $('#file')[0].files[0]
console.log(frontFile)

控制台輸出為:

我們可以通過封裝File對象到FormData,與上傳圖片接口對接,如:

let formData
formData = new FormData()
formData.append('mFile',frontFile)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM