您的位置 首页 java

Java 生成海报 Graphics2D

Graphics2D Java自带的图片处理库,性能够用,用于一般的图片处理已经够用了。

首先我们来看一张马蜂窝的海报

海报里面有 花呀,草呀,文字,用户头像,二维码,还有美女,从专业角度来讲这些都是元素,一张图片上的各类元素。

首先我们需要提取这些元素,对元素进行分类,像花呀,草呀,二维码,美女都是一张图片或者几张图片合在一起,还有文字,剩下的就是各种图形,如图中“新疆”部分有个黄色的矩形,用户头像有一个半透明的圆角矩形,“一次都不能错过的的体验”部分还有透明带有边框的矩形。

这下元素就分好类了: 图片,文字,图形

下面我们来看看元素对应的属性

图片:一张图片肯定大小吧,也就是长宽,在海报的中的位置,也就是x y坐标

文字:大小,字体,颜色,坐标

图形:形状,颜色,坐标

有了元素我们还缺什么,画板,需要把元素画到哪里噻,这里画板一般有两种,一种是纯色的画板(如:白色),还有一种就是图片,我们也可以在一张图上做画噻;如果是纯色的画板那它肯定有颜色,长宽噻,如果是图片那它也会有长宽噻。

元素画入画板的顺序的不同,如果是同一个坐标会出现覆盖的情况,所以我们采用构建的顺序去执行绘画。

测试代码

 SamplePoster samplePoster = SamplePoster. build ()
                . canvas (670,1307, Color.WHITE)
                .img(670,900,headImg)
                .graphical(620,60,-30,30,new Color(0, 0, 0, 90),EnumShape.RoundedRectangle,50,100)
                .img(30,30,30,50,avatarImg, EnumShape.Circular)
                .img(150,150,450,1050,qr,EnumShape.None)
                .text("out of Memory  像你分享了一篇游行笔记",80,70,new Font("微软雅黑", Font.LAYOUT_NO_START_CONTEXT, 25),Color.white)
                .text("长按查看",480,1250,new Font("微软雅黑", Font.LAYOUT_NO_START_CONTEXT, 25),Color.lightGray)
                .text("875人觉得本文很精彩",30,1230,new Font("微软雅黑", Font.LAYOUT_NO_START_CONTEXT, 30),Color.lightGray)
                .graphical(100,60,0,1100,Color. YELLOW )
                .text("上市 | 旅行笔记",30,1150,new Font("微软雅黑", Font.CENTER_BASELINE, 35),Color. BLACK )
                .text(""我叫小猪666"的旅行笔记",30,950,new Font("微软雅黑", Font.LAYOUT_NO_LIMIT_CONTEXT, 30),Color.BLACK)
                .text("上海哪拍最出片 上海周末玩什么  上海美食探店",30,1000,new Font("微软雅黑", Font.LAYOUT_NO_START_CONTEXT, 25),Color.lightGray);

        BufferedImage image = PosterDefaultDraw.draw(samplePoster);
  

看一下我们生成的海报

是不是也还是可以的

完整代码 Gitee

注意:代码只是一个 demo ,并没有经过严格的测试,只是为大家生成海报提供一种思路,直接使用可能存在bug。

文章来源:智云一二三科技

文章标题:Java 生成海报 Graphics2D

文章地址:https://www.zhihuclub.com/185453.shtml

关于作者: 智云科技

热门文章

网站地图