问题描述:移动端保存图片时,直接保存仅能保存当前屏幕大小的图片;需求需要保存指定区域的内容。
问题解决:结合html2canvas与uniapp的renderjs解决。
第一步:配置:html2canvas
npm install --save html2canvas
第二步:视图部分:
<template>
<view>
<view id="mini_poster">
保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分
保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分
保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分
保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分
保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分
保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分
保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分保存这部分
</view>
<view @click="my_js.onclicks">导出长图</view>
</view>
</template>
第三步script部分:
<script>
export default {
props: {},
data() {
return {
}
},
methods: {
saveBase64(imageStr) {
uni.showLoading({
title: "保存中"
})
let bitmap = new plus.nativeObj.Bitmap();
bitmap.loadBase64Data(imageStr, function() {
console.log('加载base64图片数据成功');
//图片名称命名
bitmap.save('_doc/' + new Date().getTime() + '.png', {
quality: 100
}, function(i) {
// 将图片保存到相册
uni.saveImageToPhotosAlbum({
filePath: i.target,
success: function() {
bitmap.clear(); //销毁Bitmap图片
// uni.$u.toast('保存图片成功')
uni.showToast({
title: '保存图片成功',
duration: 2000
});
// that.noPhoto = true;
}
});
}, function(e) {
console.log('保存图片失败:' + JSON.stringify(e));
});
}, function(e) {
console.log('截屏绘制图片失败:' + JSON.stringify(e));
});
},
}
}
</script>
<script module="my_js" lang="renderjs">
import html2canvas from 'html2canvas';
export default {
data() {
return {}
},
methods: {
onclicks(event, ownerInstance) {
html2canvas(document.getElementById('mini_poster'), {
backgroundColor: '#fff',
useCORS: true,
taintTest: true,
timeout: 2000
}).then(canvas => {
let imgurl = canvas.toDataURL('image/jpg');
ownerInstance.callMethod('saveBase64', imgurl)
})
}
}
}
</script>