我们之前讲了很多都是平台架构的主体设计,应用架构设计以及技术架构的设计,那么现在我们就来分享一下丰富多彩的banner图是怎么生成出来的。

banner图的生成我们也是不断的进行迭代和优化,这块是最核心的部分,也是最难的部分。我们首先来分享一下我们第一轮中banner图是如何生成出来的。

一、素材的生成

banner的生成肯定离不开素材,素材种类很多。

我们对素材先进行了归类,素材我们分为

1、psd模板(就是用photoshop设计出来的文件,保存出来后,就是一个psd后缀的文件,这个是我们的核心),并且psd 在photoshop中设计时,也都进行了分层定义(psd里面分多层进行设计的,每一层代表一个图层),方便后面对psd进行解析入库,后面我会分享psd

解析的代码,早期在阿里的鹿班中,也有psd这么个东西。用户可以自己上传psd(在阿里的鹿班中)。这个一般是设计师来进行设计。

2、商品图库,商品图库主要是通过维护和爬取的商品图,爬取的商品图我们会进行白底图/透明图检测,然后会分类入库,对于非白底图非透明图的,我们会用算法进行智能抠图,合格的商品图会进入到商品图库中

3、蒙层库、装饰库等这些都是后面用来对banner进行装饰,会使得banner更加好看。

4、字体库,这个无用多说,里面都是一些生成banner常用的字体。

5、爆炸贴一般是一些用来打促销语的素材,比如双11等

6、文案库里面维护的常用的文案,我们也会通过算法自动来生成文案,在生成banenr的时候。

二、丰富多彩的banner的生成过程

1、我们允许用户上传自己的商品图,然后我们可以自动对用户的商品进行抠图(对于需要抠图的部分)

2、用户在选择banner的尺寸后,我们会根据一定的算法去获取可以适用于该尺寸的psd模板

3、banner在合成的过程中,我们会经历商品图主色提取,然后根据主色去拉取可以适用的素材

4、获取到素材后,我们会按照每一个图层的主色进行搭配组合,确定哪些组合是符合要求的。

5、对于背景图,我们会自动进行色系的拓展

6、文案用户可以选择我们的优秀文案,也可以不选择文案,我们自动给用户适配文案或者自动按照算法生成文案(前提是用户需要告诉我们他们预计需要的风格)

7、我们使用了opencv来进行来进行图层的拼装,拓展,Opencv在我们第一轮banner的生成中用的非常多。拼装时,图层的顺序在psd中已经有的。  但是大小我们是会自动去适配计算的(不是直接对图片进行拉伸,因为这样肯定会变形)

8、图片主色的提取,我们都是基于Opencv来做的。

三、第一轮迭代后的问题分享

1、部分出来的banner图 布局并不美观,尤其是文案字数的多少,文案的太长可能会需要被截取,不然会影响布局,太多文字可能放不下,或者放下了,字体可能过下,显得不美观。

2、多行文案的行距问题如何适配进行布局显得最美观

3、合成出来的效果和原始psd的效果有时候偏差较多。

这些都是我们后面需要解决的问题。

四、psd的解析

psd的解析通过Python和java 都可以实现,这个后续会分享

未完待续..........

人工智能-智能创意平台架构成长之路(四)-丰富多彩的banner图生成解密第一部分(对标阿里鹿班的设计)的更多相关文章

  1. 物联网架构成长之路(25)-Docker构建项目用到的镜像1

    0. 前言 现在项目处于初级阶段,按照规划,先构建几个以后可能会用到的Image,并上传到阿里云的Docker仓库.以后博客中用到的Image,大部分都会用到这几个基础的Image,构建一个简单的物联 ...

  2. 物联网架构成长之路(31)-EMQ基于HTTP权限验证

    看过之前的文章就知道,我之前是通过搞插件,或者通过里面的MongoDB来进行EMQ的鉴权登录和权限验证.但是前段时间发现,还是通过HTTP WebHook 方式来调用鉴权接口比较适合实际使用.还是实现 ...

  3. QQ音乐PB级ClickHouse实时数据平台架构演进之路

    导语 | OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过Q ...

  4. 58同城高性能移动Push推送平台架构演进之路

    本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问 ...

  5. 转: 58同城高性能移动Push推送平台架构演进之路

    转: http://geek.csdn.net/news/detail/58738 文/孙玄 本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需 ...

  6. 物联网架构成长之路(16)-SpringCloud从入门到吹水

    1.前言 Spring Cloud 现在比较流行,版本更新也是蛮快的,网上资料也是很多.很多参考网上资料就可以学到了.这里给个 http://blog.csdn.net/forezp/article/ ...

  7. 物联网架构成长之路(45)-容器管理平台Rancher

    0.前言 按照上一篇博客,我已经把需要下载的rancher docker 依赖镜像下载上传到Harbor了. 1. 安装 执行如下,实现一键安装 docker run -d --restart=unl ...

  8. 物联网架构成长之路(24)-Docker练习之Compose容器编排

    0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compo ...

  9. 物联网架构成长之路(35)-利用Netty解析物联网自定义协议

    一.前言 前面博客大部分介绍了基于EMQ中间件,通信协议使用的是MQTT,而传输的数据为纯文本数据,采用JSON格式.这种方式,大部分一看就知道是熟悉Web开发.软件开发的人喜欢用的方式.由于我也是做 ...

随机推荐

  1. HTML发展历程

    HTML是超文本标记语言的缩写,不同于C或JAVA等编程语言,HTML由标签组成.通过标签可以在网页中插入文字.图片.链接.音频.视频等元素,进而描述网页.和Windows一样,随着技术的发展,HTM ...

  2. 【CodeForces - 1200C】Round Corridor (数论gcd)

    Round Corridor  Descriptions Amugae位于一个非常大的圆形走廊中.走廊由两个区域组成.内部区域等于nñ扇区,外部区域等于m米部门.在相同区域(内部或外部)的每对扇区之间 ...

  3. html5标签整理

    html元素 基础标签 <!DOCTYPE> 定义文档类型(e.g  <!DOCTYPE  html>) <html>定义一个HTML文档</html> ...

  4. Go输入输出格式化Printf

    package main import ( "fmt" "os" ) type point struct { x, y int } func main() { ...

  5. 阿里云部署 Flask + WSGI + Nginx 转载详解

    我采用的部署方案是: Web 服务器采用 uwsgi host Flask 用 Supervisor 引用 uwsgi 作常规启动服务 基于 Nginx 作反向代理 首先, 阿里云服务器可以通过 SS ...

  6. Debian下Hadoop 3.12 集群搭建

    Debian系统配置 我这里在Vmware里面虚拟4个Debian系统,一个master,三个solver.hostname分别是master.solver1.solver2.solver3.对了,下 ...

  7. Java web部分-面试题

    1.Tomcat的优化经验 答:去掉对web.xml的监视,把jsp提前编辑成Servlet. 有富余物理内存的情况,加大tomcat使用的jvm的内存 2.Servlet的生命周期 答:servle ...

  8. MySql定时器,亲测可用

    1. 查看数据库的event功能是否开启,在MySql中event默认是关闭的,需要查看并且要确保event处于开启状态 sql:show VARIABLES LIKE '%sche%'; 如果eve ...

  9. 深度解密Go语言之 scheduler

    目录 前置知识 os scheduler 线程切换 函数调用过程分析 goroutine 是怎么工作的 什么是 goroutine goroutine 和 thread 的区别 M:N 模型 什么是 ...

  10. JWT原理 使用(入门篇)

    1.JWT简介 JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换 使用起来就是,由 ...