有時(shí)候會遇到后端需要前端獲取的圖片文件轉(zhuǎn)換成base64,在傳給后臺
創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為白云企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),白云網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
小程序有專門的選擇圖片接口,
wx.chooseImage(OBJECT)
但是這個(gè)只是返回一個(gè)圖片的臨時(shí)路徑,并不是文件數(shù)據(jù)本身。
小程序暫時(shí)沒有接口直接轉(zhuǎn)base64的
所以我們需要使用canvas和canvasGetImageData(小程序版本1.9.0以后要才有)先獲取圖片內(nèi)容,
再通過插件upng.js插件實(shí)現(xiàn)圖片轉(zhuǎn)base64(所需插件文件附件中)
1. 把upng.js和pako.min.js文件放到項(xiàng)目中
2. 在pages下的頁面js文件中導(dǎo)入
var upng = require('../../utils/upng.js');
這里只需要導(dǎo)入npng.js ,pako.min.js是在npng,js里面調(diào)用
3. 建一個(gè)canvas
chooseImage"人臉測試 ?
// 畫布
// 生成base64位圖片展示 變量imgbase64
need-to-insert-img
4. 添加js點(diǎn)擊chooseImage事件
chooseImage: function() {
? ? var that = this;
? ? var coss_signature = wx.getStorageSync('cos_signature');
? ? var canvasID = "imgCanvas";
? ? var canvas = wx.createCanvasContext(canvasID)
? ? wx.chooseImage({
? ? ? ? sourceType: ['album', 'camera'],
? ? ? ? sizeType: ['original'],
? ? ? ? count: 1,
? ? ? ? success: function (res) {
? ? ? ? ? ? var tempFilePaths = res.tempFilePaths;
? ? ? ? ? ? // 獲取文件路徑
? ? ? ? ? ? var filePath = tempFilePaths[0];
? ? ? ? ? ? // 1. 繪制圖片至canvas
? ? ? ? ? ? canvas.drawImage(filePath, 0, 0, 300, 200)
? ? ? ? ? ? // 繪制完成后執(zhí)行回調(diào),API 1.7.0
? ? ? ? ? ? canvas.draw(false, function(res){
? ? ? ? ? ? ? ? // 2. 獲取圖像數(shù)據(jù), API 1.9.0
? ? ? ? ? ? ? ? wx.canvasGetImageData({
? ? ? ? ? ? ? ? ? ? canvasId: canvasID,
? ? ? ? ? ? ? ? ? ? x: 0,
? ? ? ? ? ? ? ? ? ? y: 0,
? ? ? ? ? ? ? ? ? ? width: 300,
? ? ? ? ? ? ? ? ? ? height: 200,
? ? ? ? ? ? ? ? ? ? success(res) {
? ? ? ? ? ? ? ? ? ? ? // 3. png編碼
? ? ? ? ? ? ? ? ? ? ? let pngData = upng.encode([res.data.buffer], res.width, res.height)
? ? ? ? ? ? ? ? ? ? ? // 4. base64編碼
? ? ? ? ? ? ? ? ? ? ? let base64 = wx.arrayBufferToBase64(pngData)
? ? ? ? ? ? ? ? ? ? ? // ...
? ? ? ? ? ? ? ? ? ? ? that.setData({
? ? ? ? ? ? ? ? ? ? ? ? imgbase64: base64
? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? })
? ? ? ? ? ? })
? ? ? }
? ? })
}
5. 實(shí)現(xiàn)
need-to-insert-img
need-to-insert-img
tips
畫布畫的圖片的長和寬是固定的,這個(gè)按照自己需求設(shè)置。
可以通過小程序的
wx.getImageInfo(OBJECT)
獲取長和寬
相關(guān)鏈接
upng.js:?
wx-cardscanner:? 有時(shí)候會遇到后端需要前端獲取的圖片文件轉(zhuǎn)換成base64,在傳給后臺
小程序有專門的選擇圖片接口,
但是這個(gè)只是返回一個(gè)圖片的臨時(shí)路徑,并不是文件數(shù)據(jù)本身。
小程序暫時(shí)沒有接口直接轉(zhuǎn)base64的
所以我們需要使用canvas和canvasGetImageData(小程序版本1.9.0以后要才有)先獲取圖片內(nèi)容,
再通過插件upng.js插件實(shí)現(xiàn)圖片轉(zhuǎn)base64(所需插件文件附件中)
1. 把upng.js和pako.min.js文件放到項(xiàng)目中
2. 在pages下的頁面js文件中導(dǎo)入
var upng = require('../../utils/upng.js');
這里只需要導(dǎo)入npng.js ,pako.min.js是在npng,js里面調(diào)用
3. 建一個(gè)canvas
chooseImage"人臉測試 ?
// 畫布
// 生成base64位圖片展示 變量imgbase64
4. 添加js點(diǎn)擊chooseImage事件
chooseImage: function() {
? ? var that = this;
? ? var coss_signature = wx.getStorageSync('cos_signature');
? ? var canvasID = "imgCanvas";
? ? var canvas = wx.createCanvasContext(canvasID)
? ? wx.chooseImage({
? ? ? ? sourceType: ['album', 'camera'],
? ? ? ? sizeType: ['original'],
? ? ? ? count: 1,
? ? ? ? success: function (res) {
? ? ? ? ? ? var tempFilePaths = res.tempFilePaths;
? ? ? ? ? ? // 獲取文件路徑
? ? ? ? ? ? var filePath = tempFilePaths[0];
? ? ? ? ? ? // 1. 繪制圖片至canvas
? ? ? ? ? ? canvas.drawImage(filePath, 0, 0, 300, 200)
? ? ? ? ? ? // 繪制完成后執(zhí)行回調(diào),API 1.7.0
? ? ? ? ? ? canvas.draw(false, function(res){
? ? ? ? ? ? ? ? // 2. 獲取圖像數(shù)據(jù), API 1.9.0
? ? ? ? ? ? ? ? wx.canvasGetImageData({
? ? ? ? ? ? ? ? ? ? canvasId: canvasID,
? ? ? ? ? ? ? ? ? ? x: 0,
? ? ? ? ? ? ? ? ? ? y: 0,
? ? ? ? ? ? ? ? ? ? width: 300,
? ? ? ? ? ? ? ? ? ? height: 200,
? ? ? ? ? ? ? ? ? ? success(res) {
? ? ? ? ? ? ? ? ? ? ? // 3. png編碼
? ? ? ? ? ? ? ? ? ? ? let pngData = upng.encode([res.data.buffer], res.width, res.height)
? ? ? ? ? ? ? ? ? ? ? // 4. base64編碼
? ? ? ? ? ? ? ? ? ? ? let base64 = wx.arrayBufferToBase64(pngData)
? ? ? ? ? ? ? ? ? ? ? // ...
? ? ? ? ? ? ? ? ? ? ? that.setData({
? ? ? ? ? ? ? ? ? ? ? ? imgbase64: base64
? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? })
? ? ? ? ? ? })
? ? ? }
? ? })
}
5. 實(shí)現(xiàn)
tips
畫布畫的圖片的長和寬是固定的,這個(gè)按照自己需求設(shè)置。
可以通過小程序的
獲取長和寬
相關(guān)鏈接
upng.js:?
wx-cardscanner:?
[img]前端開發(fā)應(yīng)該學(xué)習(xí)的內(nèi)容有PC端網(wǎng)站布局、HTML5+CSS3基礎(chǔ)項(xiàng)目、WebAPP頁面布局等。
學(xué)習(xí)web前端開發(fā),網(wǎng)頁開發(fā)工具有FrontPage,會用 Word 的人很容易學(xué)會FrontPage。還有一個(gè)常用的是Dreamweaver。這兩種都是使用最多的HTML網(wǎng)頁制作工具。
HTML、CSS和JavaScript。html是內(nèi)容,css是表現(xiàn),javascript是行為。前端開發(fā)的門檻其實(shí)非常低,與服務(wù)器端語言先慢后快的學(xué)習(xí)曲線相比,前端開發(fā)的學(xué)習(xí)曲線是先快后慢。所以,對于從事IT工作的人來說,前端開發(fā)是個(gè)不錯的初入點(diǎn)。
也正因?yàn)槿绱?,前端開發(fā)的領(lǐng)域有很多自學(xué)成“才”的同行。html是最基礎(chǔ)的,現(xiàn)在流行的是html5設(shè)計(jì),先學(xué)會網(wǎng)頁布局。css是用來美化html頁面的為頁面提供布局和格式。最后再學(xué)javascript。如果你把每天看電影、看電視劇的時(shí)間用來學(xué)習(xí),我想一個(gè)星期入門是沒有問題的。
前端開發(fā)應(yīng)該學(xué)習(xí)的基礎(chǔ)知識:
1、html + css。這部分建議,邊學(xué)邊練。之后可以模仿一些網(wǎng)站做些頁面。理解css每個(gè)元素的屬性,樣式的實(shí)現(xiàn)不一定只有一種寫法,多想一想還有沒有什么需要改進(jìn)的地方。
2、JavaScript。不是所有的網(wǎng)頁都必須有js,但是要想實(shí)現(xiàn)一些超酷的功能和界面的時(shí)候,就需要涉及到j(luò)s。
3、Photoshop、flash。熟悉會一點(diǎn)兒就行了,沒必要全部都學(xué)得精通,當(dāng)然如果你在學(xué)習(xí)的過程中,發(fā)現(xiàn)你ps或者flash比較感興趣的話,也可以嘗試做美工這一行。
4、html5和css3。可以先了解一下,然后再入手。畢竟IE的瀏覽器大多還不支持。
5、瀏覽器兼容。懂web標(biāo)準(zhǔn),熟練手寫 xhtml css3 并符合 符合w3c標(biāo)準(zhǔn)。代碼能兼容主流瀏覽器Firfox,Chrome、Safari、IE、Opera。雖然IE6很多都不兼容,但現(xiàn)在還使用的人還是有的。
6、熟悉一門后臺編程語言 asp、php、jsp等。
把鼻子配制成一個(gè)div塊
然后在div塊里面添加一個(gè)mouseenter方法
例子:
var dov = document.getElementsByClassName("yincangkuang2")[0];
alert("創(chuàng)建對象成功");
dov.addEventListener("mouseenter",function(){
alert("成功進(jìn)入方法");
document.getElementById("yincangkuang1").style.color = "#00c";
alert("老鐵穩(wěn)")
document.getElementsByClassName("yincangkuang")[0].style.display = "block";
},true);
利用基本路徑API
注意最后fill或stroke上去后之前緩存的路徑信息才會繪制到canvas上去
function drawShape(){
var canvas = document.getElementById('你的canvas的ID');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(75,75,50,0,Math.PI*2,true); // 外圓
ctx.moveTo(110,75);
ctx.arc(75,75,35,0,Math.PI,false); // 嘴
ctx.moveTo(65,65);
ctx.arc(60,65,5,0,Math.PI*2,true); //左眼
ctx.moveTo(95,65);
ctx.arc(90,65,5,0,Math.PI*2,true); // 右眼
ctx.stroke();
} else {
alert('你的瀏覽器不支持html5,請用chrome或火狐safari .');
}
}
您好,web前端學(xué)習(xí)內(nèi)容包括以下8個(gè)階段:
階段1.前端核心基礎(chǔ)
HTML +_CSS核心、JavaScript基礎(chǔ)語法、JavaScript面向?qū)ο?、JavaScript DOM和BOM編程、jQuery框架
階段2.HTML5 + CSS3 + 移動端核心
HTML5新特性、Canvas專列、CSS3新特性、CSS3進(jìn)階、CSS3實(shí)例演練
階段3.移動端
移動端核心、移動端適配、移動端特效
階段4.服務(wù)器端
服務(wù)器端開發(fā)、數(shù)據(jù)庫操作、前后端交互核心、微信公眾號開發(fā)
階段5.JavaScript高級
JavaScript基礎(chǔ)深入剖析、JavaScript面向?qū)ο笊钊胫v解、JavaScript異步編程、JavaScript函數(shù)式編程、JavaScript設(shè)計(jì)模式
階段6.前端必備
性能優(yōu)化、版本控制工具、模塊化、項(xiàng)目構(gòu)建工具
階段7.高級框架
React框架基本使用、React框架進(jìn)階、Vue框架基本使用、Vue框架進(jìn)階、Vue源碼分析
階段8.小程序
原生小程序入門、原生小程序API使用、小程序框架Mpvue
web前端學(xué)什么
希望可以幫到你!
前端開發(fā)應(yīng)該學(xué)習(xí)的內(nèi)容有PC端網(wǎng)站布局、HTML5+CSS3基礎(chǔ)項(xiàng)目、WebAPP頁面布局等。
學(xué)習(xí)web前端開發(fā),網(wǎng)頁開發(fā)工具有FrontPage,會用 Word 的人很容易學(xué)會FrontPage。還有一個(gè)常用的是Dreamweaver。這兩種都是使用最多的HTML網(wǎng)頁制作工具。
HTML、CSS和JavaScript。html是內(nèi)容,css是表現(xiàn),javascript是行為。前端開發(fā)的門檻其實(shí)非常低,與服務(wù)器端語言先慢后快的學(xué)習(xí)曲線相比,前端開發(fā)的學(xué)習(xí)曲線是先快后慢。所以,對于從事IT工作的人來說,前端開發(fā)是個(gè)不錯的初入點(diǎn)。
也正因?yàn)槿绱?,前端開發(fā)的領(lǐng)域有很多自學(xué)成“才”的同行。html是最基礎(chǔ)的,現(xiàn)在流行的是html5設(shè)計(jì),先學(xué)會網(wǎng)頁布局。css是用來美化html頁面的為頁面提供布局和格式。最后再學(xué)javascript。如果你把每天看電影、看電視劇的時(shí)間用來學(xué)習(xí),我想一個(gè)星期入門是沒有問題的。
前端開發(fā)應(yīng)該學(xué)習(xí)的基礎(chǔ)知識:
1、html + css。這部分建議,邊學(xué)邊練。之后可以模仿一些網(wǎng)站做些頁面。理解css每個(gè)元素的屬性,樣式的實(shí)現(xiàn)不一定只有一種寫法,多想一想還有沒有什么需要改進(jìn)的地方。
2、JavaScript。不是所有的網(wǎng)頁都必須有js,但是要想實(shí)現(xiàn)一些超酷的功能和界面的時(shí)候,就需要涉及到j(luò)s。
3、Photoshop、flash。熟悉會一點(diǎn)兒就行了,沒必要全部都學(xué)得精通,當(dāng)然如果你在學(xué)習(xí)的過程中,發(fā)現(xiàn)你ps或者flash比較感興趣的話,也可以嘗試做美工這一行。
4、html5和css3。可以先了解一下,然后再入手。畢竟IE的瀏覽器大多還不支持。
5、瀏覽器兼容。懂web標(biāo)準(zhǔn),熟練手寫 xhtml css3 并符合 符合w3c標(biāo)準(zhǔn)。代碼能兼容主流瀏覽器Firfox,Chrome、Safari、IE、Opera。雖然IE6很多都不兼容,但現(xiàn)在還使用的人還是有的。
6、熟悉一門后臺編程語言 asp、php、jsp等。