首页 > 编程语言 >小程序、APP、WEB、H5、UNIAPP通用的canvas导出图片,html转为图片多端通用版

小程序、APP、WEB、H5、UNIAPP通用的canvas导出图片,html转为图片多端通用版

时间:2023-07-01 23:23:40浏览次数:41  
标签:WEB canvas 000000 setFillStyle titleL fillText context textH 图片

小程序、APP、WEB、H5、UNIAPP通用的canvas导出图片,html转为图片多端通用版

 

<canvas v-show="zhangdanImageShow"
style="width: 380px;height: 500px;background-color: white;border-radius: 5px;" canvas-id="postCanvars"
id="postCanvars"></canvas>

 

一、导出内容设置方法

getZhangdanImage() {
let textH = 38  //行位置
let titleL = 15 //行左边起始位置
let titleR = 118 //行右边起始位置
let context = uni.createCanvasContext('postCanvars')
context.setFillStyle('#000000')
context.font = 'bold 16px Arial';
context.fillText(this.nianyue + '租金账单', 120, textH)
//订单内容开始
context.font = '14px Arial';
textH = 80
context.setFillStyle('#000000')
context.fillText('房间名称', titleL, textH)
context.setFillStyle('#949494')
let roomName = this.roomName.trim()
if (roomName == '') {
roomName = '无'
} else {
roomName += '房'
}
context.fillText(roomName, titleR, textH)
textH = 110
context.setFillStyle('#000000')
context.fillText('电表度数', titleL, textH)
context.setFillStyle('#949494')
context.fillText(this.electricCount + ' - ' + this.shangyueDianbiao + ' = ' + parseFloat(this
.electricCount - this
.shangyueDianbiao).toFixed(2) + ' 度', titleR, textH)
textH = 140
context.setFillStyle('#000000')
context.fillText('电费价格', titleL, textH)
context.setFillStyle('#949494')
context.fillText(parseFloat(this.dianfeiPrice == '' ? 0 : this.dianfeiPrice).toFixed(2) + ' 元/度', titleR,
textH)
textH = 170
context.setFillStyle('#000000')
context.fillText('电费小计', titleL, textH)
context.setFillStyle('#FF4200')
context.fillText(parseFloat((this.electricCount - this
.shangyueDianbiao) * this.dianfeiPrice).toFixed(2) + ' 元', titleR, textH)
textH = 200
context.setFillStyle('#000000')
context.fillText('水表吨数', titleL, textH)
context.setFillStyle('#949494')
context.fillText(this.waterCount + ' - ' + this.shangyueShuibiao + ' = ' + parseFloat(this.waterCount -
this
.shangyueShuibiao).toFixed(2) + ' 吨', titleR, textH)
textH = 230
context.setFillStyle('#000000')
context.fillText('水费价格', titleL, textH)
context.setFillStyle('#949494')
context.fillText(parseFloat(this.shuifeiPrice == '' ? 0 : this.shuifeiPrice).toFixed(2) + ' 元/吨', titleR,
textH)
textH = 260
context.setFillStyle('#000000')
context.fillText('水费小计', titleL, textH)
context.setFillStyle('#FF4200')
context.fillText(parseFloat((this.waterCount - this
.shangyueShuibiao) * this.shuifeiPrice).toFixed(2) + ' 元',
titleR,
textH)
textH = 290
context.setFillStyle('#000000')
context.fillText('每月租金', titleL, textH)
context.setFillStyle('#FF4200')
context.fillText(parseFloat(this.zujin == '' ? 0 : this.zujin).toFixed(2) + ' 元',
titleR,
textH)
textH = 320
context.setFillStyle('#000000')
context.fillText('其他费用', titleL, textH)
context.setFillStyle('#FF4200')
context.fillText(parseFloat(this.gongtanfei == '' ? 0 : this.gongtanfei).toFixed(2) + ' 元', titleR, textH)
textH = 350
context.font = '8px Arial';
context.setFillStyle('#ededed')
context.fillText('______________________________________________________________________________', titleL,
textH)
textH = 380
context.font = 'bold 14px Arial';
context.setFillStyle('#000000')
context.fillText('账单合计金额', titleL, textH + 5)
context.setFillStyle('#FF4200')
context.fillText(parseFloat(this.sumMoney == '' ? 0 : this.sumMoney).toFixed(2) + ' 元', titleR + 160,
textH + 5)
textH = 410
context.font = '8px Arial';
context.setFillStyle('#ededed')
context.fillText('______________________________________________________________________________', titleL,
textH)

//订单内容结束
context.font = '12px Arial';
context.setFillStyle('#000000')
context.fillText('收个租,多终端快速收交租', titleL, 450)
context.setFillStyle('#949494')
context.fillText('长按/扫码查看收个租小程序', titleL, 470)
context.drawImage('/static/images/xiaochengxu.jpg', 310, 423, 60, 60);
context.stroke()
context.draw()
},

 

二、调用方法,绘图后延时调用,否则导出空白图片
toImage() { 

this.zhangdanImageShow = true
this.getZhangdanImage()
uni.showLoading({
title: '加载中'
});
//导出图片 PC和苹果白底为jpg,安卓白底为png
let ftype='jpg'
let ua = uni.getSystemInfoSync().platform;
if(/android/i.test(ua)){
// 安卓
ftype='png'
}
let that = this
setTimeout(function() {
uni.canvasToTempFilePath({
x: 0,
y: 0,
width: 380,
height: 500,
destWidth: 1920,
destHeight: 2280,
fileType: ftype,
quality:1,
canvasId: 'postCanvars',
success: function(res) {
// 在H5平台下,tempFilePath 为 base64
that.previewImage(res.tempFilePath)
uni.hideLoading()
that.zhangdanImageShow = false
}
})
}, 2000)
},

标签:WEB,canvas,000000,setFillStyle,titleL,fillText,context,textH,图片
From: https://www.cnblogs.com/haidaogege/p/17520152.html

相关文章

  • css添加背景图片
    方法一:<styletype="text/css">body{background:url("./lib/background.png")no-repeatcentercenterfixed;/*兼容浏览器版本*/-webkit-background-size:cover;-o-background-size:......
  • Web安全-渗透测试-权限提升01
    权限提升权限提升对我们在深度渗透过程中起着重要作用,接下来我将介绍网站后台,漏洞,第三方,数据库,服务类,第三方接口,服务器系统几方面进行提权介绍参考1后台权限获得方式:爆破,注入猜解,弱口令等获取的帐号密码配合登录一般网站或应用后台只能操作应用的界面内容数据图片......
  • 明明是张表格脸,为什么要走向图片?(Excel批量处理图片合集)
    图片来源为函数类:Excel批量插入图片制图片的下拉选项图片就是图片类:批量插入图片把图片用在了数据透视表里只要是单元格对象的图片,不问出处:当函数遇上图片......
  • 当函数遇上图片,比如Filter
    Filter函数可以说是包揽了一切查找,嗯,够辛苦。有木有想过,如果Filter遇上图片,又是怎样的风景呢?就是这个样几滴……这里的图片可以是两种,一种是由Image函数生成的,另一种是放置在单元格中的图片。其实,这并不是Filter的独享,因为图片作为单元格对象,所以几乎可以说是所有函数,都能对......
  • Golang实现图片与视频的缩略图生成
    图片与视频的缩略图是一个十分常见的需求,比如即时消息。这里摘取了Golang项目中的相关代码,分享图片与视频相关处理的开发经验。图片缩略图缩略图的尺寸分为两种规则:1)边长模式,生成正方形缩略图;2)宽高模式,又分三种:指定宽高、指定宽(高等比缩放)、指定高(宽等比缩放)。如果原图为png或gif,缩......
  • Web前端在浏览器如何启动本地可执行文件
    方法2本地监听法可以自己开发一个小的可执行程序,监听前端发的web请求。收到请求后,我们自己编写的可执行程序启动本地的可执行文件即可。想要启动本地可执行文件的关键就是本地有一个小服务端,我们通过本地网络与服务端通信,服务端负责启动可执行文件。这种方法对于任何浏览器都兼......
  • 把图片用在了数据透视表里(Excel技巧集团)
    如下图这样的数据透视表,那是相当地没新意,不就是把每个大区经理负责的销量进行汇总嘛。可是,有没有想过,如果A列显示的,不是大区经理的姓名,而是各位的照片……没错,这确实是数据透视表干出来的事,当然前提是Microsoft365啊。哦对了,还有一个前提,这些图片,不能是传统的浮于单元格上方......
  • SpringBoot3.0最新深入浅出从入门到项目实战,突出Web应用痛点解决方案
    SpringBoot3.0最新深入浅出从入门到项目实战,突出Web应用痛点解决方案SpringBoot已经成为Java开发中最流行的框架之一,它提供了一种快速构建、易于扩展的方式,使开发人员能够更加专注于业务逻辑而不是繁琐的配置。而最新的SpringBoot3.0版本将进一步改善开发体验,并提供更多的解决方......
  • uni.app 给大家推荐一个 非常牛的 插件 上传图片 上传 word 上传xlsx 上传pdf
     插件地址地址:https://ext.dcloud.net.cn/plugin?name=lsj-upload兼容vue2 vue3微信小程序 等等等等图片放在下面了使用方法里面有介绍又到了码农 最重要的时刻了ctrlc  ctrlv  大法   ......
  • 微信小程序使用web-view 在web-view选择商品 跳回微信小程序里面支付 微信小程序跳
                  孩 你好  在微信公众平台添加web-view业务域名。 实现需求是  在web-view里面购买商品要支付的时候跳到小程序里面支付支付成功在回去跳到web-view订单页。 由于微信内置浏览器js-sdk不支持微信小程序支付,而且......