前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >字符画生成01

字符画生成01

作者头像
mixlab
发布2018-07-25 12:15:57
7720
发布2018-07-25 12:15:57
举报

今天mixlab群里有人问:

网站

https://www.fontke.com/tool/image2ascii/

上传图片生成字符画,如何把文本转化为图片保存下来。

解决方案是:

1 获取每行的字符:

document.querySelector('#char-image-data').innerText.split('\n');

2 通过for循环,把每行的每个字符画到canvas里;

3 另存canvas成图片下载至本地。

把这个过程写成js代码,console里注入网站即可下载图片。

代码是 Hanz 现写的:

function draw () {

  let canvas = document.createElement('canvas') 
  let ctx = canvas.getContext('2d')
  let elem = document.querySelector('#char-image-data')  
  let elemSizeRect = elem.getBoundingClientRect()

  canvas.width = elemSizeRect.width
  canvas.height = elemSizeRect.height  
  let textContent = elem.innerText  
  let textList = textContent.split('\n')  
  let len = textList.length  
  
  // color
  ctx.fillStyle = 'black'
  ctx.font =  elem.style.fontSize + ' monospace'

  const LINE_HEIGHT = parseInt(elem.style.lineHeight) 
   
  for (let index = 0; index < len; index++) {
    ctx.fillText(
      textList[index],      0, // x
      LINE_HEIGHT * (index + 1) // y
    )
  }  
  
  document.body.appendChild(canvas)  
  let img = document.createElement('img')
  img.src = canvas.toDataURL()  
  
  let downloadLink = document.createElement('a')
  
  downloadLink.download = 'text-img-' + Date.now() + '.png'

  downloadLink.href = img.src
  
  downloadLink.click()
  
  downloadLink.innerHTML = "下载图片"
  downloadLink.style.fontSize = '20px'
  downloadLink.style.display = 'block'
  downloadLink.style.padding = '1em'

  document.body.appendChild(downloadLink)
  
}

draw()

知识点:

通过a标签,click自动下载canvas生成的图片。

另外,还可以通过a标签下载爬取的数据存成json文件:

如何用代码控制浏览器下载知乎大v的粉丝数据?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无界社区mixlab 微信公众号,前往查看

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

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

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