React 手机端生成海报 html2canvas & dom-to-image

ios生成海报使用dom-to-image中toPng报错isTrusted:true 主要是ios中safari浏览器解析错误,引起的报错,主要引起原因toPng会调用toSvg,toSvg直接将html标签内容通过svg中foreignObject标签直接包裹,然后转base64, 通过data:image/svg+xml;解决办法:二次生成(调用两次),判断ios or 安卓,生成第一次生成,不用参数,例如:scale: 3,在第二次生成再进行清晰度操作,避免多次生成,引起性能消耗。以上种种很多案例,使用canvase进行转换的,标签丢失,直接toPng版本的,兼容性问题。 阅读详情

海报效果如图:

在这里插入图片描述

过程遇到的问题:

插件问题:

  • html2canvas 不支持 Ios无反应, 支持 Android

  • dom-to-image 支持 Ios无反应, 支持 Android

  • dom-to-image 在【ios】中, 图片部分空白,其他部分可以转成图片

解决方法:【canvas 画 img】
在这里插入图片描述

代码1:

import React, {Component} from 'react' 
import QRCode from 'qrcode.react'
import './shareActivity.less'
import classnames from 'classnames'

class ShareActivity extends Component {
  constructor (props) {
    super(props)
    this.state = {
      shareUrl: '',
      poster: '',
      hideImg: false
    }
  }
  componentWillReceiveProps(state, props) {
    console.log('props', props)
  } 
  componentDidMount () { 
    const _this = this
    const {shareUrl} = this.props
    const posterIndex = Number.parseInt(Math.random()*7 + 1)
    const poster = require(`../../../assets/image/invite/invite-${posterIndex}.jpg`)

    this.setState({ 
      shareUrl, 
      poster 
    }, () => {
      var canvas = document.getElementById("canvasImg")
      var ctx =canvas.getContext('2d')
      var img = new Image()
      img.src= poster   
      img.onload = function(){  
        let domImg = document.getElementById('posterImg').getBoundingClientRect()  
        _this.setState({posterWidth: domImg.width, posterHeight: domImg.height}, () => {
          ctx.drawImage(img,0,0, _this.state.posterWidth, _this.state.posterHeight)   
          // 生成图片 
          _this.props.callback() 
        })   
      }   
    })  

  }
  render () {
    return  (   
      <div id="shareActivity">      
          <canvas width={this.state.posterWidth} height={this.state.posterHeight} id="canvasImg"></canvas>
          <img id="posterImg" className={classnames(['poster', {hideDom: this.state.hideImg}])} src={this.state.poster}/>
          <p className="text">
            <img className="icon-link" src={require('../../../assets/image/icon-link.png')} alt=""/>
            <span>长按发送给朋友</span>
          </p>  
          <QRCode
            value={this.state.shareUrl} 
            fgColor="#000000"
          /> 
      </div> 
    )
  }
} 

export default ShareActivity

代码2:

showCourseShare(show_url) {  
    AntdAlert('', <ShareActivity shareUrl={show_url} callback={function() {
      let canvasImg = document.getElementById('shareActivity')  // activityDom  shareActivity
      if (!canvasImg) { return } 
      domtoimage.toJpeg(canvasImg).then((url) => {  
        if (!canvasImg) { return }    
        canvasImg.innerHTML = `<img class="domToImage" src=${url}>`
      })      
    }}/>)    
  }, 

–end

关于微信小程序生成海报一个简单的办法 充分利用painter的优势。小程序生成图片库,轻松通过 json 方式绘制一张可以发到朋友圈的图片 阅读详情

相关推荐

【taro react】---- 兼容微信小程序和H5的海报绘制插件

此处绘制海报没有对海报进行缩放处理,而是按照海报的原尺寸在屏幕之外进行的绘制,当绘制完成,导出base64地址,在img标签中显示图片!此处保存海报使用的是保存base64的方式,保存图片,所以注意清空其他图片!当使用圆角,是对当前进行裁剪,圆角区域外的其他绘制不在显示,因此使用次组件,需要先绘制圆角区域以外的内容,最后绘制圆角和圆角内的部分;.........

止于至善 1221

react中使用canvas进行图片合成

最近react项目里需要动态变换图片里的某一个部件,然后整张图片重新加载。想了一下之前在java里是使用的ImageIO和BufferedImage进行合成的,看了一下由于项目需求是动态变换图片的,所以想的方法是利用canvas定义一个画布,然后drawImage,最后使用canvas.toDataURL转换成base64的图片,可供下载。项目代码如下,一个js文件即可实现功能。 imp...

qq_28670711的博客 4600

react-fabric-demo:基于react(umi)+antd+fabric实现的在线图片合成,将背景图、背景色、照片、文字拖拽生成主题图

react-fabric-demo 基于react(umi)+antd+fabric实现的在线图片合成,将背景图、背景色、照片、文字拖拽生成主题图。 Demo 使用方式 tyarn install 或 yarn install 或 npm install tyarn start 或 yarn start 或 npm start 访问:

根据指定区域内容生成图片并进行分享总结

根据指定区域内容生成图片并进行分享总结。

qq564280420的博客 1083

Win10下YOLOv8环境搭建避坑指南:从CUDA 11.6到cuDNN配置全流程

本文详细介绍了在Windows 10系统下搭建YOLOv8环境的完整流程,包括CUDA 11.6和cuDNN的配置步骤,以及常见问题的解决方案。通过硬件准备、软件安装、环境验证和性能优化等环节,帮助开发者高效完成YOLOv8环境配置,提升目标检测项目的开发效率。

defi6farmer的博客 223

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 517

前端将页面的table转换成图片

前端将页面的table转换成图片 使用插件:dom-to-image npm安装:npm i dom-to-image 使用: //获取页面dom元素 var node = document.getElementById('my-node'); domtoimage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.bod

zqyzqy22的博客 1643

AI基础入门(大模型基础篇)——技术视角:你应该知道的LLM基础知识

本文从技术视角解析了大模型的工作原理,主要介绍了三个核心概念:Token、温度和Embedding。首先,大模型通过逐个添加Token来生成文本,Token数量直接影响上下文窗口大小和计费标准。其次,通过引入温度参数控制随机性,温度越高输出越多样化。最后,解释了字符串如何通过One-Hot编码和神经网络压缩转化为向量形式的Embedding,这是AI处理各类输入的基础。这些概念对理解大模型应用开发至关重要,Token决定处理能力,温度影响输出风格,Embedding则是信息转换的关键步骤。

小志的博客 1503

微信开发在选择图像后,HTML缩略图在IOS上不能正常显示的问题

缩略图能正常在Android手机上显示,但IOS上没有任何图像显示。查阅相关资料后发现是微信的问题,检查微信API更新日志,在2019年7月15中有提到增加了getLocalImgData方法,通过此方法可以通过localId得到图像的base64值,直接把得到的base64值传给标签,注意wx.getLocalImgData这个方法是异步执行的,必须要把赋值的代码写在方法里面。 附上代码: wx...

qq_32930451的博客 396

从零到飞:在Ubuntu 22.04上为你的无人机搭建PX4-Autopilot开发环境

本文详细指导在Ubuntu 22.04上搭建PX4-Autopilot开发环境,涵盖系统依赖安装、源码获取、编译目标选择及Gazebo仿真测试。通过优化构建过程和调试技巧,帮助开发者快速为无人机部署稳定的飞控系统,实现从仿真到实机的平滑过渡。

weixin_26878995的博客 488

51-14 Retentive Network,RetNet 多尺度保留机制序列建模论文精读

RetNet 提出了多尺度保留机制序列建模,该机制支持三种计算范式,即并行、循环和分块循环。RetNet有更好的全局注意力建模、高效的计算效率、对遮挡的鲁棒性、支持基于注意力的图像生成、与置信度相关的门控机制和多任务学习等特点,对不同视觉任务可以共享历史注意力记忆,可以同时进行分类、分割、检测等任务。RetNet在视觉领域应该有广阔的应用前景。

AIgraphX 1613

react小项目 - canvas海报生成器

1.背景   之前做过一个营销类移动端h5项目-海报生成器,上传用户本地图片合成海报并支持下载,这次有时间了整理整理。 2.几个重点 上传本地图片并支持预览 处理ios照片翻转 使用canvas对图片等比拉伸缩放并居中裁剪 使用canvas绘制图片以及文本 输出base64并支持下载 3.上传图片   废话不多说,使用html的 &amp;lt;input type=&quot;file&quot; ...

weixin_34233421的博客 2329

寄存器与计数器设计(Verilog)

always @(posedge Reset or posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn , posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn,posedge Clock)//请在括号中补充敏感信号列表。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。

M_inherit的博客 359

react中html转成图片并下载(html-to-image)

html-to-image

weixin_43925630的博客 1057

从数字后端角度谈谈occ电路(二)

从图中,我们可以清晰的看出,当scan_en为1时,test mode为1时,经过一系列逻辑单元后,得到clk_sel输出信号为1,同样可推算fast_clk_en = 0,slow_clk_en为1,此时clk_out输出为slow clk,符合我们预期。在该模式下,是使用slow clock进行scan shift,接着我们开始进行推导;从图中,我们根据逻辑运算可以看出,clk_sel输出信号为0,fast clk en为1,此时通过mux选择,clk out即为fast clk;

芯冰乐 357

融合Retinex理论与Transformer的YOLOv8低光照目标检测增强方法【YOLOv8】

图像分解:将输入图像分解为光照成分和反射成分。光照估计:估计光照图以消除暗光区域。图像重建:将光照增强后的反射图像重建成最终图像。Retinexformer通过在Transformer中引入Retinex的图像增强思路,使得低光照图像的细节能够得到充分保留。本文提出了一种基于Retinexformer的低光照增强方法,用于改进YOLOv8模型在夜间和低光照环境下的目标检测性能。

博客 1929

JavaScript实现React实现网页转换成图片截屏下载

​ 最近有项目的需求需要把网站内HTML内容转换成图片保存下载,找了一圈发现一个不错的插件HTML-to-image,npm 包地址:Html-to-image ,该插件的原理是: SVG的foreignObject标签可以包裹任意的html内容。那么,为了渲染一个节点,主要进行了以下步骤

QC班长的博客 2251

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

html2canvas以及domtoimage的使用踩坑总结

背景 有个需求需要通过代码下载整个dom结构,所以我一开始使用html2canvas,但是发现在安卓中是可以的,在iOS8以上版本会出现截图整个页面空白的情况,于是为搜了很多资料,最后发现一个博主的总结踩坑跟我基本差不多,博主链接:https://segmentfault.com/a/1190000015992221,下来开始进入正题 一、html2canvas对于跨域图片,转换的时候会将跨域图片...

BigChicken3的博客 1630

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Web前端最全前端生成海报的 N 种方案和优劣对比,web前端开发面试自我介绍

参考:https://www.zhangxinxu.com/wordpress/2018/02/canvas-text-break-line-letter-spacing-vertical/2.2.1.只采用默认字体或少量定制字体(Fontmin获取特定字体的字体,写死的数据,如果换行需要计算换行问题-空格回车等奇葩问题)- ==3.低端安卓机上会出现失败情况,主要是文字的问题(这里是我写过的旧的记录,不是很确定)2.2.2(一定要完整某种字体的情况下:动态变化的数据,需要接口支持)

2401_84616838的博客 1013

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

移动端h5截图与原生ios、android的兼容交互

项目场景: h5移动端项目需要生成截图与原生app进行图片分享的交互 问题描述: 使用html2canvas生成h5截图在android app截图位置偏移且偏移量随机 android截图 ios截图 解决方案: 在IOS使用html2canvas ,Android使用domtoimage 1.https://github.com/niklasvh/html2canvas 2.https://github.com/tsayen/dom-to-image Androi...

weixin_39810640的博客 1090

dom-to-image分享多张异步图片遇到的坑

需要等待所有dom(尤其是所有图片)渲染完成后,再去执行html转化换。useEffect预加载所有图片,本来期望利用图片缓存的方式。其时间会早于真实dom中所有图片onload时间,转化时,图片可能还没完全加载成功。之前有一张图片时通过执行2次domtoimage.toJpeg(魔法),当超过1张图片时,图片第一次仍然会空白。:当超过一张图片时,ios/safari首次会出现某张图片空白,再次生成canvas才正常。原理:直接将将图片绘制到canvas当中,因而就存在上面的问题。

json博客 2287

html-to-image ios图片绘制不出来

在使用html-to-image 的时候,安卓机没有任何问题,ios,使用toSvg可以在页面上展示,但是,在用canvas绘制一次,就渲染不出来。最后去看了插件的github。据说这个好像是因为ios的浏览器加载图片有延迟导致的。经过多次调用,ios的图片出来了!于是我去试了一下这个方法。

y1506778504的博客 1611

前端canvas生成海报

代码是基于React框架实现的组件,其实主要还是该怎么去编辑canvas。

qq_56894932的博客 777

DOMtoImage 将dom转化为图片

1.转化为png格式 var node = document.getElementById('my-node'); domtoimage.toPng(node) .then(function (dataUrl) { var img = new Image(); img.src = dataUrl; document.body.appendCh...

zanyanwen的博客 5329

html2image样式变形,React Native - transform样式的使用详解(平移、缩放、旋转、倾斜等图形变换)...

在 React Native 开发中,我们可以通过transform样式的设置来实现组件(包括文字、图像)的变形。一、四种变形样式1,平移(translate)translateX:沿x 轴方向平移translateY:沿y 轴方向平移import React, { Component } from 'react';import {AppRegistry,StyleSheet,View,Te...

weixin_35215225的博客 1001

react-to-image:将React组件轻松转换为图片

react-to-image:将React组件轻松转换为图片 在当今的Web开发中,将React组件转换为图片的需求越来越普遍。无论是生成分享卡片、导出图表还是保存页面快照,这一功能都能提供巨大的便利。react-to-image 是一个简单、轻量且功能强大的开源项目,它能够帮助你轻松实现这一目标。 项目介绍 react-to-image 是一个基于 html-to-image 库的React组件...

gitblog_00830的博客 1265
上一篇: 注意事项
下一篇: 递归循环树节点及所有的父级链
萝卜芹菜芽
博客等级 码龄10年 27粉丝 69原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值