AI神器竟然能代替PS抠图了

感慨时代发展真快

用途

电商抠主图做海报,几秒搞定,比手工快几个数量级,我还没记得N多年前做企业网站,对照Photoshop一抠就是好几天;还有可以做证件照之类也是不在话下。

除了remove.bg以外,还有picup,Face++旷视等。

抠图效果

效果

关于定价

均价1.3元,高冷小贵,picup的效果也不逊色,最高也不过0.1元

实力对比

对比

picup对边缘处理不能remove.bg锐利,操作上还有要区分上传的是人像还是物品,而remove.bg可以一股脑往里扔

不区分种类

区分种类

传统用法

最直接的就是网页版在线上传一张图片,其次是下载它们的客户端。

picup在线上传

remove.bg在线上传

在线版是最傻瓜的,上手就用,还支持网址url复制粘贴过来直接识别抠图;客户端一般要先配置一下apikey密钥,再开始使用,相当于他把api集成好了,换换key就用了。

picup客户端下载

remove.bg客户端下载

出于职业病,我还它的.exe包扒了扒,果不其然,清一色是node.js+electron写的,picup还用上了element-ui,一股熟悉的味道哈

picup客户端界面

remove.bg客户端界面

码农用法

那当然是自己对api了。我发现它们有全PC平台的客户端,甚至连photoshop都集成上了,但是还没有小程序哈。

看了上述2家的api,如出一辙啊,我这里就以remove.bg为例

先看一下效果

效果

前端代码

前端代码做的事情就是将图片传到自己的后端,等后端与抠图api交互,返回base64编码后的字符串,然后拼接上'data:image/png;base64,,交给<image>组件渲染

onTap() {
    // 上传或更换菜品图片
    wx.chooseImage({
      count: 1, // 默认9
      sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
      success: res => {
        var tempFilePaths = res.tempFilePaths
        const file = tempFilePaths[0]
        this.setData({
          origin: file
        })
        console.log(file)
        wx.uploadFile({
          url: 'http://localhost:4114/ps/upload', //仅为示例,非真实的接口地址
          filePath: file,
          name: 'image',
          success: res => {
            const data = res.data
            let url = 
              'data:image/png;base64,' + data
            this.setData({
              url: url
            })
            //do something
          },
          fail(err) {
            console.log('请求失败')
            console.log(err)
          }
        })
      }
    })
  }

后端代码

后端代码做的事情是通过koa-body这个中间件接收到File文件对象,通过抠图api得到二进制流,通过toString(‘base64’)返回给小程序端。

app.js主入口文件

在npm install koa-body安装第三方包后,在app.js主入口文件加入以下代码

const koaBody = require('koa-body')
app.use(koaBody({ multipart: true }))
const ps = require('./routes/ps/index')
router.use('/ps', ps.routes())

ps/index.js路由文件

在这个文件里就是将文件传给抠图api作处理后,直接输出流给新端,而不是像api文档示例中的那样要保存到本地

const router = require('koa-router')()
const rp = require('request-promise')
// 添加
router.post('/upload', async (ctx, next) => {
  console.log('开始上传')
  var fs = require('fs')
  console.log('接收的内容')
  var fileUrl = ctx.request.files.image.path
  console.log('文件路径')
  console.log(fileUrl)
  const result = await rp.post({
    url: 'https://api.remove.bg/v1.0/removebg',
    formData: {
      image_file: fs.createReadStream(fileUrl),
      size: 'auto'
    },
    headers: {
      'X-Api-Key': 'wkMhcc4TRNFpxjL79Kf8mMU1'
    },
    encoding: null
  })
  console.log(result)
  const body = result
  console.log('输出结果')
  console.log(body)
  ctx.body = body.toString('base64')
})

module.exports = router

结语

抠图api相见恨晚的感觉,普通人能用,平面设计师赶工时也能顶上用,现在有了api,可以发挥无限想像力,集成到自己的产品中。

mp

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值