I used uniApp to make H5 custom posters at the front end. I thought it was a simple canvas for common functions. Because I had done similar functions in H5 and small programs before, I directly started to do it.
Implementation function explanation:
The poster effect diagram, the above wechat avatar, nickname and the following copy, the TWO-DIMENSIONAL code is dynamic, that is to say, it needs to be generated at the back end, including the background picture, also need to be generated randomly, and then the user can save long press the interface, identify the TWO-DIMENSIONAL code, share the function.
Implementation:
Create a canvas and set the style to the canvas.
<canvas style="" canvas-id="myCanvas" id="myCanvas"></canvas>
canvas {
background-color: #fff;
border: 1px solid #d0d0d0;
width: 100vw;
height: 100vh;
position: absolute;
left: 100%;
}
Copy the code
Create a canvas instance and start painting.
var context = uni.createCanvasContext('myCanvas');
Copy the code
All the data is passed from the back end, and there are two scenarios for the image material,
1. If the image is allowed to cross domains, you can use uni.getImageInfo to get the image path and put it in the canvas.
2. If the image is not allowed to cross domains, convert it to base64 format and place it on the canvas using context.drawImage()
The above two pictures reported an error, is the picture does not support cross-domain caused by. The developer tool may be able to correctly canvas out and export as a picture, but mobile canvas export will report an error, this time you need to convert to Base64, first try to use code to transfer, if not, on the site online conversion, and then save base64 to a file.
Some people might think of putting images in the code package to make local images and get around the cross-domain problem, but WHEN I tried this method, I found that applet works, H5 does not, unfortunately. If you have successful H5 local picture canvas, you can also share your experience with me, thank you.
H5 long press to identify the picture function:
User long press the picture will have the system default popover to recognize or save the share, no code implementation.
Take a look at the complete implementation code below :(clean, annotated, like a like!)
<template>
<!--pages/poster/poster.wxml-->
<view class="page">
<canvas style="" canvas-id="myCanvas" id="myCanvas"></canvas>
<view class="container">
<image :src="tempFilePath" mode="widthFix"></image>
</view>
</view>
</template>
<script>
import {
IMAGES_PATH
} from '@/common/const.js';
import {
getPoster
} from '@/common/api.js';
import {
pathToBase64,
base64ToPath
} from '../../js_sdk/gsq-image-tools/image-tools/index.js'
import base64_img from "./base64_img.js";
export default {
data() {
return {
tempFilePath: ''
};
},
onLoad: function(options) {
var that = this;
var context = uni.createCanvasContext('myCanvas');
getPoster(options.id)
.then(res => {
var {
img,
avatar,
nickname,
avatar_content,
active_describe
} = res.data.data || {};
var right_bottom_txt_base64 =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4kAAAFACAYAAAARVjkAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODhCMjI1OTM3MDZFMTFFODg5MERFNUJDMDVGNUQwOTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODhCMjI1OTQ3MDZFMTFFODg5MERFNUJDMDVGNUQwOTYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4OEIyMjU5MTcwNkUxMUU4ODkwREU1QkMwNUY1RDA5NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4OEIyMjU5MjcwNkUxMUU4ODkwREU1QkMwNUY1RDA5NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnLlugMAAJa8SURBVHja7L1LcttK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"
pathToBase64(avatar)
.then(base64_avatar => {
// 背景底图
context.drawImage(base64_img[img], 0, 0, 200, 387, 400, 774)
// 用户昵称
context.setFillStyle('#233582');
context.fillText(nickname, 90, 132);
// 文字上面横线 1
context.setFillStyle('#233582')
context.fillRect(16, 146, 166, 1.2)
// 文字 判断长度换行处理
context.setFontSize(9)
if (active_describe.length > 18) {
let tt1 = active_describe.substr(0, 17);
let tt2 = active_describe.substr(17, active_describe.length - 1);
context.fillText(tt1, 16, 166);
context.fillText(tt2, 16, 181);
} else {
context.fillText(active_describe, 20, 166, 320);
}
// 文字下面横线 2
context.fillRect(16, 196, 166, 1.2)
// 右下角的文字用图片,因为在背景图的话会失真模糊
context.drawImage(right_bottom_txt_base64, 100, 230, 90, 30)
// 规定一个圆形的位置,里面放头像图片
let avatarurl_width = 40
let avatarurl_heigth = 40
let avatarurl_x = 80
let avatarurl_y = 80
context.arc(avatarurl_width / 2 + avatarurl_x, avatarurl_heigth / 2 + avatarurl_y,
avatarurl_width / 2,
0, Math.PI * 2, false)
context.clip()
context.drawImage(base64_avatar, avatarurl_x, avatarurl_y, avatarurl_width, avatarurl_heigth)
context.restore()
// 保存画布,生成图片指定大小的图片,并返回图片路径
// 有个坑 : H5端 Canvas 内绘制的图像需要支持跨域访问才能成功。(本代码的解决方案:把图片转成base64)
context.draw(true, () => {
uni.canvasToTempFilePath({
x: 0,
y: 0,
width: 200,
height: 387,
destWidth: getApp().windowWidth,
destHeight: getApp().windowHeight,
canvasId: 'myCanvas',
fileType: "jpg",
quality: 1,
success(res) {
console.log('绘制成功-------', res)
uni.hideLoading();
that.tempFilePath = res.tempFilePath;
},
fail(err) {
console.log('绘制失败', err)
}
});
});
})
})
},
methods: {
// 小程序的场景使用,小程序支持本地图片
getImageInfo(url) {
return new Promise(function(resolve, reject) {
uni.getImageInfo({
src: url,
success: function(res) {
console.log(res);
resolve(res);
},
fail: function(err) {
console.log(err);
uni.showToast({
title: '生成失败',
icon: 'none'
});
}
});
});
},
// 小程序的场景使用,长按保存图片
saveImg(e) {
let url = this.tempFilePath;
uni.saveFile({
tempFilePath: url,
success: function(res) {
var savedFilePath = res.savedFilePath;
uni.showToast({
title: "图片保存成功",
icon: "none"
});
}
});
},
// 小程序场景使用,获取图片信息,保存到相册
downImage() {
const url = this.images1;
uni.getImageInfo({
src: url,
success: res => {
let path = res.path;
uni.saveImageToPhotosAlbum({
filePath: path,
success: res => {
uni.showToast({
title: '保存成功',
icon: 'none'
});
},
fail: res => {
console.log(res);
}
});
},
fail: res => {
console.log(res);
}
});
}
}
};
</script>
<style>
canvas {
background-color: #fff;
border: 1px solid #d0d0d0;
width: 100vw;
height: 100vh;
position: absolute;
left: 100%;
}
.container {
width: 100vw;
align-items: center;
overflow: auto;
background: #fefefe;
}
.container image {
width: 100%;
position: absolute;
top: 0;
}
</style>
Copy the code
App.vue sets global constants, screen width and height
onLaunch: function(info) { var that=this; uni.getSystemInfo({ success: function (res) { that.windowWidth =res.windowWidth; that.windowHeight =res.windowHeight; console.log('----this---www',this.windowWidth); }}); // network(); console.log('App Launch'); },Copy the code
./base64_img.js code, which put base64 pictures, is the background of the array, the backend random generation of 1~5, take the subscript canvas on the line.
‘.. /.. /js_sdk/ gSQ-image-tools /image-tools/index.js’ code, image to base64 function package, no need to modify.
function getLocalFilePath(path) { if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf('_downloads') === 0) { return path } if (path.indexOf('file://') === 0) { return path } if (path.indexOf('/storage/emulated/0/') === 0) { return path } if (path.indexOf('/') === 0) { var localFilePath = plus.io.convertAbsoluteFileSystem(path) if (localFilePath ! == path) { return localFilePath } else { path = path.substr(1) } } return '_www/' + path } export function pathToBase64(path) { return new Promise(function(resolve, reject) { if (typeof window === 'object' && 'document' in window) { if (typeof FileReader === 'function') { var xhr = new XMLHttpRequest() xhr.open('GET', path, true) xhr.responseType = 'blob' xhr.onload = function() { if (this.status === 200) { let fileReader = new FileReader() fileReader.onload = function(e) { resolve(e.target.result) } fileReader.onerror = reject fileReader.readAsDataURL(this.response) } } xhr.onerror = reject xhr.send() return } var canvas = document.createElement('canvas') var c2x = canvas.getContext('2d') var img = new Image img.onload = function() { canvas.width = img.width canvas.height = img.height c2x.drawImage(img, 0, 0) resolve(canvas.toDataURL()) canvas.height = canvas.width = 0 } img.onerror = reject img.src = path return } if (typeof plus === 'object') { plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) { entry.file(function(file) { var fileReader = new plus.io.FileReader() fileReader.onload = function(data) { resolve(data.target.result) } fileReader.onerror = function(error) { reject(error) } fileReader.readAsDataURL(file) }, function(error) { reject(error) }) }, function(error) { reject(error) }) return } if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) { wx.getFileSystemManager().readFile({ filePath: path, encoding: 'base64', success: function(res) { resolve('data:image/png; base64,' + res.data) }, fail: function(error) { reject(error) } }) return } reject(new Error('not support')) }) } export function base64ToPath(base64) { return new Promise(function(resolve, reject) { if (typeof window === 'object' && 'document' in window) { base64 = base64.split(',') var type = base64[0].match(/:(.*?) ; /)[1] var str = atob(base64[1]) var n = str.length var array = new Uint8Array(n) while (n--) { array[n] = str.charCodeAt(n) } return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type }))) } var extName = base64.match(/data\:\S+\/(\S+); /) if (extName) { extName = extName[1] } else { reject(new Error('base64 error')) } var fileName = Date.now() + '.' + extName if (typeof plus === 'object') { var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now()) bitmap.loadBase64Data(base64, function() { var filePath = '_doc/uniapp_temp/' + fileName bitmap.save(filePath, {}, function() { bitmap.clear() resolve(filePath) }, function(error) { bitmap.clear() reject(error) }) }, function(error) { bitmap.clear() reject(error) }) return } if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) { var filePath = wx.env.USER_DATA_PATH + '/' + fileName wx.getFileSystemManager().writeFile({ filePath: filePath, data: base64.replace(/^data:\S+\/\S+; base64,/, ''), encoding: 'base64', success: function() { resolve(filePath) }, fail: function(error) { reject(error) } }) return } reject(new Error('not support')) }) }Copy the code
Complete!!!!!