人工智能-智能创意平台架构成长之路(四)-丰富多彩的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开发.软件开发的人喜欢用的方式.由于我也是做 ...
随机推荐
- Draw.io
如何给类图增加一个字段? 选中一个字段,然后按 Ctrl +Enter 即可. 参考:Add row to class diagram - stackoverflow
- 百度Echarts,蚂蚁金服G2,D3三种主流可视化工具对比
1.百度的Echarts 官网:https://echarts.baidu.com/ 介绍:ECharts,缩写来自Enterprise Charts,是百度推出的一款开源的,商业级数据图表,它最初是 ...
- 如何调教你的博客Episode1——修改整体样式
如图所示,这是你刚刚注册的博客园博客,让我们开始一步步修改它. 1.写入自适应代码 html,body{ height:100%; border:; margin:; padding:; } body ...
- 报error:getNetworkFromStore for nid failed while trying to build sandbox for cleanup: network
docker服务起不来.报error:getNetworkFromStore for nid failed while trying to build sandbox for cleanup: net ...
- vue路由传参的三种方式以及解决vue路由传参页面刷新参数丢失问题
最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...
- html中video标签
video标签: <video src="视频的后缀名是.webM/.ogg/.mp4 "></video>属性: src:用于告诉video标签需要播放的 ...
- 力导向图(关系图) echarts的运用
<template> <div class="demo"> <div id="grap" class="grap&quo ...
- 体验RxJava
RxJava是 ReactiveX在 Java上的开源的实现,简单概括,它就是一个实现异步操作的库,使用时最直观的感受就是在使用一个观察者模式的框架来完成我们的业务需求: 其实java已经有了现成的观 ...
- unity_实用小技巧(避免游戏对象被销毁时声音消失)
在游戏中我们使用碰撞检测,当两个物体发生碰撞时产生声音音效,代码如下: 如果使用上述代码,我们会发现,在脚本中使用AudioSource声明该声音,当该物体被销毁时声音也会立刻停止. 但是我们希望声音 ...
- MSIL实用指南-逻辑运算
逻辑运算有三种:与.或.非.实现它们可以用位运算指令And.Or.Not等三个指令.它们的使用方法和位运算一致. 完整的程序如下: using System; using System.Reflect ...