我们之前讲了很多都是平台架构的主体设计,应用架构设计以及技术架构的设计,那么现在我们就来分享一下丰富多彩的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. python编写环境(种类)

    python编写环境(种类) 官方推荐 cpython 转成C的字节码 jython转成Java的字节码 ironpython转成C#字节码 pypy转换成动态编译 开发快,运行快

  2. Servlet生成验证码并进行账号密码和验证码的验证登陆!

    前言: 人不是生来就懂事的,在编程的世界也是一样,想想在大一的时候我还是那个连输出Hello World!都不会的小孩子是,现在我已经可以编出属于我自己的小程序了.编程其实并不可怕,可怕的是你不去编. ...

  3. Asp.Net Core WebAPI+PostgreSQL部署在Docker中

     PostgreSQL是一个功能强大的开源数据库系统.它支持了大多数的SQL:2008标准的数据类型,包括整型.数值值.布尔型.字节型.字符型.日期型.时间间隔型和时间型,它也支持存储二进制的大对像, ...

  4. WPF中ComboBox控件绑定键值对操作

    WPF中下拉框将键值对作为其数据源的具体操作.本实例以枚举类型以及枚举特性描述字符串生成键值对来进行. namespace ViewC { /// <summary> /// View.x ...

  5. SpringBoot中快速实现邮箱发送

    前言 在许多企业级项目中,需要用到邮件发送的功能,如: 注册用户时需要邮箱发送验证 用户生日时发送邮件通知祝贺 发送邮件给用户等 创建工程导入依赖 <!-- 邮箱发送依赖 --> < ...

  6. poli-java开源BI软件

    目录 快速入门 Github地址: 特性 一个易于使用的SQL报告应用程序,专为SQL爱好者而设计. SQL中的电源数据分析,可获得更快的业务洞察力. 快速入门 https://shzlw.githu ...

  7. Flink集群Standalone启动脚本(源码分析)

    整个Flink集群的角色分为Jobmanager和TaskManager 以Standalone为例来看一下脚本里面是怎样启动集群的 找到源码的dist这里面包含了启动的脚本文件 standalone ...

  8. RestTemplate最详解

    目录 1. RestTemplate简单使用 2. 一些其他设置 3. 简单总结 在项目中,当我们需要远程调用一个HTTP接口时,我们经常会用到RestTemplate这个类.这个类是Spring框架 ...

  9. Unity进阶:行为树 02 夺旗战搭建场景,AI脚本,旗子拿起

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...

  10. Java反射使用总结

    最近公司招了几名刚毕业的大学生,在给他们培训的过程中,讲到反射,他们有些人听不懂,对反射的概念云里雾里的,不知道反射有什么用. 因此就有了本文的诞生. 反射是java提供的一个重要功能,可以在运行时检 ...