1、首先需要到upng.js,然后upng.js需要pako.js,先一并下载了

2、然后就可以直接用了,具体代码如下:

<!--pages/base/base.wxml-->
<canvas class='canvas' id='scannerCanvas' canvas-id='scannerCanvas' disable-scroll="true" style="height:{{height}}px;width:{{width}}px"/>
<view class="btns">
<view bindtap="chooseImg">选择</view>
<view>确定</view>
</view>
<text>{{time}}</text>
// js

const upng = require('../../utils/UPNG.js');

Page({

  /**
* 页面的初始数据
*/
data: {
width:360,
height:360,
time:""
}, /**
* 生命周期函数--监听页面加载
*/
onLoad: function () {
wx.getSystemInfo({
success: res => {
this.setData({
height: res.windowHeight-80,
width: res.windowWidth
});
}
});
}, // 选择照片
chooseImg:function(){
var start = (new Date()).getTime()
wx.chooseImage({
count:1,
sizeType: ['compressed'],
sourceType: ['album'],
success: (res) => {
var tempFilePaths = res.tempFilePaths[0]
var canvas = wx.createCanvasContext('scannerCanvas')
// 1. 绘制图片至canvas
canvas.drawImage(tempFilePaths, 0, 0, this.data.width, this.data.height )
// 绘制完成后执行回调,API 1.7.0
canvas.draw(false, () => {
// 2. 获取图像数据, API 1.9.0
wx.canvasGetImageData({
canvasId: 'scannerCanvas',
x: 0,
y: 0,
width: this.data.width,
height: this.data.height,
success : (res) => {
let platform = wx.getSystemInfoSync().platform
if (platform == 'ios') {
// 兼容处理:ios获取的图片上下颠倒
res = this.reverseImgData(res)
}
// 3. png编码
let pngData = upng.encode([res.data.buffer], this.data.width, this.data.height)
// 4. base64编码
let base64 = wx.arrayBufferToBase64(pngData)
this.setData({
time:(new Date()).getTime()-start
})
}
})
})
}
})
}, // 图片颠倒
reverseImgData(res) {
var w = res.width
var h = res.height
let con = 0
for (var i = 0; i < h / 2; i++) {
for (var j = 0; j < w * 4; j++) {
con = res.data[i * w * 4 + j]
res.data[i * w * 4 + j] = res.data[(h - i - 1) * w * 4 + j]
res.data[(h - i - 1) * w * 4 + j] = con
}
}
return res
},
})
/* wxss */
.btns{
display: flex;
}
.btns>view{
width: 50%;
text-align: center;
line-height: 50px;
}
.btns>view:first-child{
border-right: 2rpx solid #ddd;
box-sizing: border-box;
}
text{
text-align: center;
width: 100%;
line-height: 30px;
display:block;
}

  

小程序把图片转换成base64的更多相关文章

  1. delphi将图片转换成Base64编码函数

    {************************************************************************** 名称: BaseImage 参数: fn: TF ...

  2. java 图片转换成base64字符串

    import java.io.ByteArrayOutputStream; import java.io.FileInputStream;import java.io.FileOutputStream ...

  3. js绝对地址图片转换成base64的方法

    //将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas') ...

  4. Java对网络图片/本地图片转换成Base64编码和解码

    一.将本地图片转换成Base64编码字符串 /** * 将本地图片转换成Base64编码字符串 * * @param imgFile 图片目录路径 * @return */ public static ...

  5. Base64字符保存图片,图片转换成Base64字符编码

    //文件转换成Base64编码 public static String getFileBase64Str(String filePath) throws IOException { String f ...

  6. 利用PHP将图片转换成base64编码的实现方法

    先来说一下为什么我们要对图片base64编码 base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一.base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输. ...

  7. 图片转换成Base64编码集成到html文件

    首先为什么要这么做?  原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...

  8. JS将图片转换成Base64码

    直接上代码 html页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  9. lua 把图片转换成base64

    调用实例 require("ZZBase64") local files local file = io.open("E:\\2342.jpg","r ...

随机推荐

  1. [New learn] NSOperation基本使用

    1.简介 NS(基于OC语言)是对GCD(基于C语言)的封装,让开发者能够更加友好的方便的去使用多线程技术. 2.NSOperation的基本使用 NSOperation是抽象类,所以如果要使用NSO ...

  2. 12-7 NSDictionary

    原文:http://rypress.com/tutorials/objective-c/data-types/nsdictionary NSDictionary 如同NSSet,NSDictionar ...

  3. mycncart 前台代码跟踪

    1.进入根目录的入口文件,index.php require_once(DIR_SYSTEM . 'startup.php');//最为重要的一步 start('catalog');//执行了这个方法 ...

  4. tomcat修改内存

    windows: 修改bin/catalina.bat, 第一行添加 set JAVA_OPTS=-Xms256m -Xmx512m linux: 修改bin/catalina.sh 第一行添加 JA ...

  5. linux命令(5):netstat命令

    网络监控:netstat –in [显示所有配置接口的状态] 查看端口状态:netstat -anlp | grep 8080 [显示8080端口列出的监听状态] 查看某个进程软件名:netstat ...

  6. hdu 3078(LCA的在线算法)

    Network Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  7. 201. Non Absorbing DFA

    题意好难看懂的说... 有限状态自动机DFA是这么一个有序组<Σ, U, s, T, phi>:Σ代表输入字符集,表示此自动机的工作范围:U代表所有的状态集合:s是初始状态:T是最终状态: ...

  8. React Native - 4 ListView 简单使用

    1. 首先要import ListView组件 2. 使用如下代码,注意ListView里的dataSource大小写,我当时把S给小写了,结果花了半个多小时找原因…… 3. 运行结果

  9. CentOS7网络自动连接

    1)在root用户下使用命令"vim /etc/sysconfig/network-scripts/ifcfg-XXX",其中"ifcfg-XXX"的" ...

  10. 【爬虫】python requests模拟登录知乎

    需求:模拟登录知乎,因为知乎首页需要登录才可以查看,所以想爬知乎上的内容首先需要登录,那么问题来了,怎么用python进行模拟登录以及会遇到哪些问题? 前期准备: 环境:ubuntu,python2. ...