前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020-06-15

2020-06-15

作者头像
达达前端
发布2020-06-16 15:47:13
3220
发布2020-06-16 15:47:13
举报
文章被收录于专栏:达达前端
代码语言:javascript
复制
```// 创建画布区域
                let context = uni.createCameraContext('posterCanvas');
                // 获取屏幕的消息
                let systemInfo = new Promise((res, rej) => {
                    uni.getSystemInfo({
                        success: (data) => {
                            res(data);
                        }
                    });
                });
                systemInfo.then(systemInfo => {
                    // 获取不同设备的宽高适配
                    let {
                        windowWidth,
                        windowHeight
                    } = systemInfo;
                    let rpx = 1;
                    // 个性化定义针对不同设备的单位比率,和标准设计稿375比较
                    rpx = windowWidth / 375;
                    context.clearRect(0, 0, 279 * rpx, 385 * rpx);
                    //设置海报背景为白色
                    context.fillStyle = "#fff";
                    // 填充背景颜色
                    context.fillRect(0, 0, 279 * rpx, 385 * rpx);
                    let path = this.posterBanner; // posterbanner是一个固定的图片链接
                    let imagePromise = [img1, img2];
                    imagePromise = imagePromise.map(src => {
                        return new Promise((res, rej) => {
                            //不获取一下图片信息会导致图片在真机上绘制失败
                            uni.getImageInfo({
                                src,
                                success: data => {
                                    console.log("imgdata--->", data);
                                    res(data);
                                },
                                fail(err) {
                                    console.log("err", err);
                                }
                            });
                        });
                    });
                    Promise.all(imagePromise).then(imgsInfo => {
                        context.drawImage(
                            imgsInfo[0].path,
                            12.5 * rpx,
                            12.5 * rpx,
                            254 * rpx,
                            173 * rpx
                        );
                        context.setFontSize(14 * rpx);
                        context.setTextAlign("center");
                        context.setFillStyle("#390C59");
                        context.fillText(
                            "xxxxxxxxxxxx一段文字",
                            (279 * rpx) / 2,
                            205.5 * rpx
                        );
                        context.setFontSize(14 * rpx);
                        context.setTextAlign("center");
                        context.setFillStyle("#390C59");
                        context.fillText("xxxx一段文字!", (279 * rpx) / 2, 226.5 * rpx);
                        context.drawImage(
                            imgsInfo[1].path,
                            102 * rpx,
                            262.5 * rpx,
                            75 * rpx,
                            75 * rpx
                        );
                        context.setFontSize(12 * rpx);
                        context.setTextAlign("center");
                        context.setFillStyle("#390C59");
                        context.fillText("长按扫码查看详情", (279 * rpx) / 2, 360.5 * rpx);
                        context.draw(false, () => {
                            //因为draw是异步的,移动端偶发绘制文字丢失,所以增加settimeout
                            setTimeout(() => {
                                uni.canvasToTempFilePath({
                                    canvasId: "posterCanvas",
                                    destWidth: 558 * 2,
                                    destHeight: 770 * 2,
                                    success(res) {
                                        //拿到生成的画布图片临时路径在res.tempFilePath中,可以自行存储或者赋值
                                    }
                                });
                            }, 100);
                        });
                    });
                })
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档