我们之前讲了很多都是平台架构的主体设计,应用架构设计以及技术架构的设计,那么现在我们就来分享一下丰富多彩的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 都可以实现,这个后续会分享
未完待续..........