人工智能-智能创意平台架构成长之路(四)-丰富多彩的banner图生成解密第一部分(对标阿里鹿班的设计)
我们之前讲了很多都是平台架构的主体设计,应用架构设计以及技术架构的设计,那么现在我们就来分享一下丰富多彩的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图生成解密第一部分(对标阿里鹿班的设计)的更多相关文章
- 物联网架构成长之路(25)-Docker构建项目用到的镜像1
0. 前言 现在项目处于初级阶段,按照规划,先构建几个以后可能会用到的Image,并上传到阿里云的Docker仓库.以后博客中用到的Image,大部分都会用到这几个基础的Image,构建一个简单的物联 ...
- 物联网架构成长之路(31)-EMQ基于HTTP权限验证
看过之前的文章就知道,我之前是通过搞插件,或者通过里面的MongoDB来进行EMQ的鉴权登录和权限验证.但是前段时间发现,还是通过HTTP WebHook 方式来调用鉴权接口比较适合实际使用.还是实现 ...
- QQ音乐PB级ClickHouse实时数据平台架构演进之路
导语 | OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过Q ...
- 58同城高性能移动Push推送平台架构演进之路
本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问 ...
- 转: 58同城高性能移动Push推送平台架构演进之路
转: http://geek.csdn.net/news/detail/58738 文/孙玄 本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需 ...
- 物联网架构成长之路(16)-SpringCloud从入门到吹水
1.前言 Spring Cloud 现在比较流行,版本更新也是蛮快的,网上资料也是很多.很多参考网上资料就可以学到了.这里给个 http://blog.csdn.net/forezp/article/ ...
- 物联网架构成长之路(45)-容器管理平台Rancher
0.前言 按照上一篇博客,我已经把需要下载的rancher docker 依赖镜像下载上传到Harbor了. 1. 安装 执行如下,实现一键安装 docker run -d --restart=unl ...
- 物联网架构成长之路(24)-Docker练习之Compose容器编排
0.前言 一开始学的之后,是想一步到位直接上Kubernetes(K8s)的,后面没想到,好像有点复杂,有些概念不是很懂.因此学习东西还是要循序渐进,慢慢来.先了解单机编排技术Docker Compo ...
- 物联网架构成长之路(35)-利用Netty解析物联网自定义协议
一.前言 前面博客大部分介绍了基于EMQ中间件,通信协议使用的是MQTT,而传输的数据为纯文本数据,采用JSON格式.这种方式,大部分一看就知道是熟悉Web开发.软件开发的人喜欢用的方式.由于我也是做 ...
随机推荐
- 转载 | Sublime text3 实用快捷键整理
实用快捷键 Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所有打开文件Ctrl+Shift+ ...
- 跟着大彬读源码 - Redis 10 - 对象编码之整数集合
[TOC] 整数集合是 Redis 集合键的底层实现之一.当一个集合只包含整数值元素,并且元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现. 1 整数集合的实现 整数集合是 Redis ...
- 解决H5微信浏览器中audio兼容-- 背景音乐无法自动播放
我们知道,ios 在safari浏览器中,audio标签不能在没有用户交互的情况下自动播放或有js直接控制播放,这是系统限制的一些原因. 但是背景音乐在微信浏览器可以设置自动播放,config配置一下 ...
- (十七)c#Winform自定义控件-基类窗体
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- T-SQL基础语句
存储过程允许标准组件式编程(模块化设计) 存储过程能够实现快速的执行速度 存储过程能够减少网络流量 存储过程可被作为一种安全机制充分利用 在SQL Server 的系列版本中存储过程分为两类:系统提供 ...
- Python机器学习之数据探索可视化库yellowbrick
# 背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维.陆续使用过plot ...
- Executor线程池只看这一篇就够了
线程池为线程生命周期的开销和资源不足问题提供了解决方 案.通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上. 线程实现方式 Thread.Runnable.Callable //实现Runn ...
- Linux Web集群架构详细(亲测可用!!!)
注意:WEB服务器和数据库需要分离,同时WEB服务器也需要编译安装MySQL. 做集群架构的重要思想就是找到主干,从主干区域向外延展. WEB服务器: apache nginx 本地做三个产品 de ...
- springBoot配置elasticsearch搜索
1.本地安装elasticsearch服务,具体过程见上一篇文章(安装和配置elasticsearch服务集群) 2.修改项目中pom文件,引入搜索相关jar包 <!-- elasticsear ...
- 关于GIS中Scale和Resolution的那些事儿
在ArcMap或各类前端地图框架(Leaflet.js.OpenLayers.js.ArcGIS Javascript等)中都需要加载WMTS或ArcGIS Rest服务,但所有的地图显示的原理基本上 ...