Coder Social home page Coder Social logo

kujiale-mobile / painter Goto Github PK

View Code? Open in Web Editor NEW
4.2K 74.0 573.0 670 KB

小程序生成图片库,轻松通过 json 方式绘制一张可以发到朋友圈的图片

Home Page: https://painterjs.github.io/

License: Apache License 2.0

JavaScript 100.00%

painter's People

Contributors

0jarvis0 avatar carrotzpc avatar charleslo1 avatar chorer avatar cppalien avatar csldev avatar icai avatar inoongt avatar lxx2013 avatar nailuogg avatar rottenpen avatar sav7ng avatar shesw avatar siberiawolf avatar yancongwen avatar yu-zk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

painter's Issues

是否考虑base64?

现在的加载本地图片资源是设置URL为相对地址,,我写入base64后,会报错.

 wx.getImageInfo({
                    src: view.url,
                    success: res => {
                      // 获得一下图片信息,供后续裁减使用
                      view.sWidth = res.width;
                      view.sHeight = res.height;
                    },
                    fail: error => {
                      console.error(`getImageInfo failed, ${JSON.stringify(error)}`);
                    },

多行状态下最后一行的对齐问题

�按照css写法的话如果设置了多行的情况而且是align:center,那样最后一行是也应该是居中的,不确定其他人会不会有这样的一个需求。
我的想法是如果我设置了align: center那样,哪怕是你设置了width,在里面的内容也应该是居中的,所以我改了一下你的代码

let posX = 0;
      if(align == 'center') {
        posX = -(measuredWith / 2);
      } else {
        posX = -(width / 2);
      }
      this.ctx.fillText(text, posX, -(height / 2) + (i === 0 ? view.css.fontSize.toPx() : (view.css.fontSize.toPx() + i * lineHeight)));

改之前:
image

改之后
image

mpvue 制作海报

真机测试的时候,微信的头像,没有画到画布上。在开发者工具上可以,请问这是什么缘故

请问下数据是如何传递进去的

请问下数据是如何从调用页面的data里传递进去card.js的。比如像图片的地址,text的文字内容,还有有些网络图片还是在真机上不显示,求大佬解决哈

canvas绘制的文字居中

需要让canvas绘制一段文字 文字长度不固定 需要让文字在canvas中居中显示
image

我想要这个字居中 think you

文字

一行中文字有大有小,有不同颜色,这种情况要怎么设置

真机图片显示问题

小程序中生成一个分享海报,需要贴上头像和二维码,在电脑上生成两个图片都可以显示,但是在真机上,只有二维码能显示,二维码是本地图片,头像是网络图片,微信头像,已经把头像地址的域名添加到合法域名中了,Android和iOS都无法显示,请问还有其他什么原因呢?

mpvue出现无限更新的bug

image

当赋值给this.shareImg的时候,发生了无限更新bug,不停的重新绘制。

painter.js

image

目前我通过增加判断palette是否有变化来解决这个问题

坐标为负时报错

当 top、left 等坐标为负时报错,应该是限制了不能用负值,但是实际开发中,有些图片的位置是会超出视图的,比如绘制贴纸功能,是由用户自己拖拽控件进行合成,这时候就会有负坐标的产生。我修改了 painter.js 的 toPx() 的正则验证试了下,发现其实是可以兼容这部分功能。

Painter 项目点子征集贴

如果你有任何想到用 Painter 可以实现的点子,欢迎留言分享,我们一起让 Painter 更强大好用。

image的mode属性如何设置?

{
type: 'image',
url: '/images/icon_recruit-bg.jpg',
css: {
mode: 'aspectFill',
top: '0rpx',
left: '0rpx',
width: '750rpx',
height: '750rpx',
},
},
文档说mode是image的自有css,是这样写吗?

align属性无效

使用align:center,实际效果没有生效

代码如下card.js

export default class LastMayday {
  palette() {
    return ({
      width: '750rpx',
      height: '750rpx',
      background: '/palette/share.png',
      views: [{
          type: 'image',
          url: '/palette/avatar.jpg',
          css: {
            align: 'center',
            top: '50rpx',
            borderRadius: '100rpx',
            borderWidth: '0rpx',
            width: '160rpx',
            height: '160rpx',
          },
        },
        {
          type: 'text',
          text: '蓝皮书的店',
          css: {
            align: 'center',
            width: '750rpx',
            top: `250rpx`,
            color: '#ffffff',
            fontSize: '50rpx'
          }
        },
        {
          type: 'text',
          text: '150500',
          css: {
            textAlign: 'center',
            top: `330rpx`,
            color: '#ffffff',
            fontSize: '34rpx',
            left: '282rpx'
          }
        },
        {
          type: 'text',
          text: '150500',
          css: {
            textAlign: 'center',
            top: `330rpx`,
            color: '#ffffff',
            fontSize: '34rpx',
            left: '282rpx'
          }
        }
      ],
    });
  }
}

const startTop = 50;
const startLeft = 0;
const gapSize = 70;
const common = {
  left: `${startLeft}rpx`,
  fontSize: '40rpx',
};

function _textDecoration(decoration, index, color) {
  return ({
    type: 'text',
    text: decoration,
    css: [{
      top: `${startTop + index * gapSize}rpx`,
      color: color,
      textDecoration: decoration,
    }, common],
  });
}

function _image(index, rotate, borderRadius) {
  return ({
    type: 'image',
    url: '/palette/avatar.jpg',
    css: {
      top: `${startTop + 8.5 * gapSize}rpx`,
      left: `${startLeft + 160 * index}rpx`,
      width: '120rpx',
      height: '120rpx',
      rotate: rotate,
      borderRadius: borderRadius,
    },
  });
}

function _des(index, content) {
  const des = {
    type: 'text',
    text: content,
    css: {
      fontSize: '22rpx',
      top: `${startTop + 8.5 * gapSize + 140}rpx`,
    },
  };
  if (index === 3) {
    des.css.right = '60rpx';
  } else {
    des.css.left = `${startLeft + 120 * index + 30}rpx`;
  }
  return des;
}`

生成图片需要延时怎么做?

因为生成的图片比较复杂,页面加载完成比较慢,所以点击按钮生成图的时候会报错,点击第二次才会保存成功。有什么办法可以加延时吗?

mpvue下首次成功,多绘制几次之后,出现异常

在mpvue项目中按照文档引入,能正常生成文件。成功样式如下:
image
上图效果中只有背景图跟数字 是会变化的,多点一些页面,多生成几个就会出现如下异常
前面都成功绘制出来了,后面两个小icon图标会报 file not find ,
image

增加小程序码判断机制

有个疑问,档使用官方提供的小程序码生成时,由于每次生成的小程序的临时文件地址不一样,这样的话岂不是每次都要缓存,这样的话,缓存空间被占用的很快,还是我理解有误

真机调试报错

Error: file: static/canvasdrawer/canvasdrawer.js
unknown: Unexpected token (92:12)
90 | this.drawImage({
91 | ...views[i],

92 | url: tempFileList[imageIndex]
| ^
93 | })
94 | imageIndex++
95 | } else if (views[i].type === 'text') {

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.