开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?沉默王二

Aslongasyoucanstillgrababreath,youfight.只要一息尚存,就不得不战。

第一步,获取网络图片的路径。金山词霸每日一句的图片路径地址形式如下所示。可以根据当前日期获取最新的图片路径。

HttpEntityentity=response.getEntity();InputStreampicStream=entity.getContent();第五步,从图片输入流中读取信息,并输出到本地文件中。

Filepic=Files.createTempFile(Paths.get("D:\\test"),"pic_",".jpg");FileOutputStreamfos=newFileOutputStream(pic);intread=0;//1024Byte(字节)=1KB1024KB=1MBbyte[]bytes=newbyte[1024*100];while((read=inputStream.read(bytes))!=-1){fos.write(bytes,0,read);}fos.flush();fos.close();在指定的临时目录下可以查看采集到的图片,如下所示。

海报背景的大小为678*1013像素,个人品牌二维码的大小为128*128像素。两张图片都是事先准备好的,放在src目录下。整个项目的目录结构图如下所示。

接下来,我们把这两张图片分别读取到临时文件当中,供后续动作使用。

第一步,创建ClassLoader对象,从classpath的根路径下查找资源。

ClassLoaderclassLoader=ReadBgAndQrcode.class.getClassLoader();第二步,通过classLoader.getResourceAsStream()读取海报背景和个人品牌二维码,复制到临时文件中。

FilebgFile=Files.createTempFile(DIRECTORY,"bg_",".jpg").toFile();InputStreaminputStream=classLoader.getResourceAsStream("default_bgimg.jpg");FileUtils.copyInputStreamToFile(inputStream,bgFile);logger.debug("背景:"+bgFile.getAbsolutePath());FileqrcodeFile=Files.createTempFile(DIRECTORY,"qrcode_",".jpg").toFile();InputStreamqrcodeInputStream=classLoader.getResourceAsStream("default_qrcodeimg.jpg");FileUtils.copyInputStreamToFile(qrcodeInputStream,qrcodeFile);logger.debug("二维码:"+qrcodeFile.getAbsolutePath());在指定的临时目录下可以查看海报背景和个人品牌二维码,如下所示。

Graphics2D类扩展了Graphics类,提供了对几何形状、坐标转换、颜色管理和文本布局更为复杂的控制,是用于呈现二维形状、文本和图像的基础类。

BufferedImage使用可访问的图像数据缓冲区描述图像,由颜色模型和图像数据栅格组成,所有BufferedImage对象的左上角坐标为(0,0)。

可以利用BufferedImage类的createGraphics()方法获取Graphics2D对象。

第一步,将海报背景和海报封面读入到BufferedImage对象中。注意,deleteOnExit()方法请求在虚拟机终止时删除此抽象路径名所表示的文件或目录。

//背景FilebgFile=FileUtil.read("bg_",".jpg","default_bgimg.jpg");bgFile.deleteOnExit();BufferedImagebgImage=ImageIO.read(bgFile);//封面图FilepicFile=CapturePic.capture();picFile.deleteOnExit();BufferedImagepicImage=ImageIO.read(picFile);第二步,计算封面图的起始坐标,以及高度和宽度。

//封面图的起始坐标intpic_x=MARGIN,pic_y=MARGIN;//封面图的宽度intpic_width=bgImage.getWidth()-MARGIN*2;//封面图的高度intpic_height=picImage.getHeight()*pic_width/picImage.getWidth();第三步,在海报背景上绘制封面图。

Graphics2Dgraphics2d=bgImage.createGraphics();//在背景上绘制封面图graphics2d.drawImage(picImage,pic_x,pic_y,pic_width,pic_height,null);//释放图形上下文,以及它正在使用的任何系统资源。graphics2d.dispose();第四步,将绘制好的图像输出到文件中。

FileposterFile=Files.createTempFile(FileUtil.DIRECTORY,"poster_",".jpg").toFile();ImageIO.write(bgImage,"jpg",posterFile);在指定的临时目录下可以查看海报,如下所示。

Font类表示字体,用于以可见的方式呈现文本。字体提供了将字符序列映射到象形文字序列以及在图形和组件对象上呈现象形文字序列所需的信息。

第一步,通过GraphicsEnvironment类的getAvailableFontFamilyNames()查看计算机上允许使用的字体。

String[]fontNames=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();for(StringfontName:fontNames){System.out.println(fontName);}大致的中文字体有这么一些(还有更多,未列出):

宋体幼圆微软雅黑微软雅黑Light新宋体方正姚体方正舒体楷体隶书黑体

第二步,设置字体和颜色。

//Font的构造参数依次是字体名字,字体式样,字体大小Fontfont=newFont("微软雅黑",Font.PLAIN,28);g.setFont(font);//RGBg.setColor(newColor(71,71,71));第三步,根据当前字体下每个中文字符的宽度,以及海报可容纳的最大文本宽度,对文本进行换行。

计算每个字体的宽度时,需要用到sun.font.FontDesignMetrics,它扩展了java.awt.FontMetrics。FentMetrics类定义了一个字体度量对象,该对象封装了有关在特定屏幕上呈现特定字体的信息。FontDesignMetrics提供了更多指标的Font信息。

FontDesignMetrics有几个重要的值需要说明一下:

FontDesignMetrics的charWidth()方法可以计算字符的宽度。

publicstaticStringmakeLineFeed(Stringzh,FontDesignMetricsmetrics,intmax_width){StringBuildersb=newStringBuilder();intline_width=0;for(inti=0;i=max_width-char_width){line_width=0;sb.append("\n");}}returnsb.toString();}假如文本是“沉默王二,《Web全栈开发进阶之路》作者;一个不止写代码的程序员,还写有趣有益的文字,给不喜欢严肃的你。”我们来通过makeLineFeed()方法试验一下。

Fontfont=newFont("微软雅黑",Font.PLAIN,28);FontDesignMetricsmetrics=FontDesignMetrics.getMetrics(font);Stringzh="沉默王二,《Web全栈开发进阶之路》作者;一个不止写代码的程序员,还写有趣有益的文字,给不喜欢严肃的你。";String[]rows=makeLineFeed(zh,metrics,600).split("\n");for(inti=0;i

沉默王二,《Web全栈开发进阶之路》作者;一个不止写代码的程序员,还写有趣有益的文字,给不喜欢严肃的你。

第四步,将自动换行后的文本在海报背景上打印。

这里需要用到FontDesignMetrics的getHeight()方法获取每行文本的高度。对照下面的示意图,理解height的具体高度。

//自动换行后的文本StringzhWrap=FontUtil.makeLineFeed(graphics2dPoster.getZh(),metrics,graphics2dPoster.getSuitableWidth());//拆分行String[]zhWraps=zhWrap.split("\n");//将每一行在海报背景上打印for(inti=0;i

可以看得出,文字带有很强的锯齿感,怎么消除呢?

graphics2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);如果英语不好的话,看起来这段代码会很吃力。ANTIALIASING单词的意思就是“消除混叠现象,消除走样,图形保真”。

英文和中文最大的不同在于,换行的单位不再是单个字符,而是整个单词。

第一步,根据当前字体下每个英文单词的宽度,以及海报可容纳的最大文本宽度,对文本进行换行。

publicstaticStringmakeEnLineFeed(Stringen,FontDesignMetricsmetrics,intmax_width){//每个单词后追加空格charspace='';intspaceWidth=metrics.charWidth(space);//按照空格对英文文本进行拆分String[]words=en.split(String.valueOf(space));//利用StringBuilder对字符串进行修改StringBuildersb=newStringBuilder();//每行文本的宽度intlen=0;for(inti=0;imax_width){sb.append("\n");sb.append(word);sb.append(space);//下一行的起始宽度len=wordWidth+spaceWidth;}else{sb.append(word);sb.append(space);//多了一个空格len+=spaceWidth;}}returnsb.toString();}假如文本是“Fearcanholdyouprisoner.Hopecansetyoufree.Ittakesastrongmantosavehimself,andagreatmantosaveanother.”我们来通过makeEnLineFeed()方法试验一下。

Fontfont=newFont("微软雅黑",Font.PLAIN,28);FontDesignMetricsmetrics=FontDesignMetrics.getMetrics(font);Stringen="Fearcanholdyouprisoner.Hopecansetyoufree.Ittakesastrongmantosavehimself,andagreatmantosaveanother.";String[]rows=makeEnLineFeed(en,metrics,600).split("\n");for(inti=0;i

Fearcanholdyouprisoner.Hopecansetyoufree.Ittakesastrongmantosavehimself,andagreatmantosaveanother.

第三步,将自动换行后的文本在海报背景上打印。

//设置封面图和下方中文之间的距离graphics2dPoster.addCurrentY(20);Graphics2Dgraphics2d=graphics2dPoster.getGraphics2d();graphics2d.setColor(newColor(157,157,157));FontDesignMetricsmetrics=FontDesignMetrics.getMetrics(graphics2d.getFont());StringenWrap=FontUtil.makeEnLineFeed(graphics2dPoster.getEn(),metrics,graphics2dPoster.getSuitableWidth());String[]enWraps=enWrap.split("\n");for(inti=0;i

有了前面绘制海报封面的经验,绘制二维码就变得轻而易举了。

//二维码FileqrcodeFile=FileUtil.read("qrcode_",".jpg","default_qrcodeimg.jpg");qrcodeFile.deleteOnExit();BufferedImageqrcodeImage=ImageIO.read(qrcodeFile);//二维码起始坐标intqrcode_x=bgImage.getWidth()-qrcodeImage.getWidth()-MARGIN;intqrcode_y=bgImage.getHeight()-qrcodeImage.getHeight()-MARGIN;graphics2dPoster.getGraphics2d().drawImage(qrcodeImage,qrcode_x,qrcode_y,qrcodeImage.getWidth(),qrcodeImage.getHeight(),null);此时的海报效果如下图所示。

是不是感觉海报的左下角比较空白,整体的对称性不够自然,那就在左下角追加一些二维码的描述文本吧。

graphics2d.setColor(newColor(71,71,71));Fontfont=newFont(USE_FONT_NAME,Font.PLAIN,22);graphics2d.setFont(font);FontDesignMetricsmetrics=FontDesignMetrics.getMetrics(graphics2d.getFont());graphics2d.drawString("沉默王二",MARGIN,bgImage.getHeight()-MARGIN-metrics.getHeight()*2);graphics2d.drawString("一个幽默的程序员",MARGIN,bgImage.getHeight()-MARGIN-metrics.getDescent());此时的海报效果如下图所示。

Swing是一个用于JavaGUI编程(图形界面设计)的工具包(类库);换句话说,Java之所以可以用来开发带界面的PC软件,就是因为Swing的存在。

Swing使用纯粹的Java代码来模拟各种控件,没有使用本地操作系统的内在方法,所以Swing是跨平台的。也正是因为Swing的这种特性,人们通常把Swing控件称为轻量级控件。

Eclipse默认是不支持可视化的Swing编程的,但Eclipse的插件市场上有这样一个好插件——WindowBuilder,使用它可以大幅度地降低开发难度,迅速地提升开发效率。

可直接拖拽到Eclipse进行安装,如下图。

注意,Eclipse的版本要求为:

2018-09(4.9),Photon(4.8),Oxygen(4.7),Neon(4.6),2018-12(4.10),2019-03(4.11)

拖拽到Eclipse后的效果如下:

安装完成后,会提醒你重启Eclipse。

安装成功后,就可以使用可视化工具设计界面了,如下图所示:

在将应用程序进行打包时,使用者都希望开发者只提供一个单独的文件,而不是包含大量源码的文件夹。jar包存在的目的正源于此。

将项目打成jar包也很简单,在Eclipse中,可依次右键项目→Export→RunnableJARfile。你将会看到以下界面。

选择main方法所在类,指定导出目标,选择Copyrequiredlibraries选项,点击「Finish」即可。在指定的目录下可找到生成的jar包文件。

如果电脑上安装了Java的运行环境,双击该jar包文件就可以运行。运行后的界面,如下图所示。可以填写中文、英文、海报封面路径,然后点击按钮生成海报。

PS:为了便于大家的学习,我已经将源码放在了GitHub上,地址如下。

THE END
1.5款超实用海报制作软件,零基础也能做海报别担心,今天我将为大家介绍几款实用的海报制作软件,即便是设计小白,也能轻松上手,创作出令人惊艳的作品。1、 海报设计室APP 海报设计室是一款手机端海报制作软件,拥有海量的模板库,涵盖各种场景,从节日庆祝到商业宣传,应有尽有。它的拖放界面友好直观,无需设计基础,也能快速制作海报。操作步骤:①打开 海报https://baijiahao.baidu.com/s?id=1818763282651435373&wfr=spider&for=pc
2.手机海报软件排行榜前十名偏玩手游盒子分享十大手机海报软件排行榜前十名手机应用,编辑为您推荐手机手机海报软件排行榜第一名到前5名到前十名的应用。找手机海报软件有哪些、手机海报软件哪个好用,上偏玩手游盒子https://m.pianwan.com/s/zj-1814300
3.每天自动日历海报生成器软件大全PP助手为您提供每天自动日历海报生成器软件大全推荐,在这里我们为您提供每天自动日历海报生成器软件软件下载资源,每天自动日历海报生成器软件安卓版本、官方版本&老版本下载地址合集,还可查阅相关每天自动日历海报生成器软件攻略大全,欢迎到PP助手下载。https://wap.pp.cn/topic/495635/
4.AI生成海报中文教程,手把手教你在线生成!1.AI生成海报软件介绍 在介绍AI生成海报之前,我们先熟悉一下本篇文章会用到 的AI工具:Pixso AI。Pixso AI是在线设计工具Pixso的内置AI助手,具备AI生图功能,支持文生图和图生图以及线稿上色等多种智能玩法,可以满足大家海报设计创意探索。Pixso AI每日赠送20个AI点数,可以在线免费生成海报,Pixso AI全中文的操作界面,https://pixso.cn/designskills/ai-generate-poster-tutorial/
5.一键生成专业海报的神奇软件,让你的视觉传达更高效!这款软件支持多人协作和分享功能。你可以邀请团队成员共同设计海报,提高工作效率。同时,你也可以将设计好的海报分享给其他用户或平台,扩大你的影响力。此外,软件还提供了云存储功能,让你随时随地查看和编辑自己的设计作品。 总之,这款一键生成专业海报的神奇软件将为你带来更高效、更便捷的设计体验。无论你是专业设计https://www.meixiaosan.com/article/show/35173.html
6.PISPIS修图P图软件是一个简单易用、输出方便的图形处理制作app,可以进行老照片修复、翻新、美颜、黑白、滤镜、相框装裱等,使你成为朋友圈中的相片修图大师!你可以选择手机上的任意图片、照片来制作文字艺术海报、拼图、画中画照片、照片书、gif和动态视频、个性头像、聊天表https://itunes.apple.com/cn/app/pis-picture-collage-studio/id897430250?l=ca
7.什么软件可以一键生产海报零代码企业数字化知识站什么软件可以一键生产海报 一键生成海报的软件有很多,包括Canva、Adobe Spark、Fotor、Crello、DesignCap等。这些工具不仅提供丰富的模板、用户友好的界面,还支持快速生成高质量的海报。Canva功能全面、模板丰富且易于使用,它不仅适合初学者,也能满足专业设计师的需求。https://www.jiandaoyun.com/blog/article/418381/
8.一键生成app制作器一键生成油画app?六、海报一键生成的app? 一键秀app 一键秀APP是一键生成宣传片的视频制作神器,能够快速生成企业宣传片,内含丰富多样的宣传模板,多面场景给你多种选择,10秒钟做企业宣传片,30秒做海报,5分钟完成宣传单!千名视频制作人员与平面设计师提供无限创意,海量模版每日更新,全品类多行业覆盖。让普通用户零基础在手机端快速制作https://tool.a5.cn/article/show/72817.html
9.腾讯出品!2021超流行的「生成艺术」上手指南(附超多神器)然而设计软件赋予了设计绚丽的视觉语言却也限制了内在的可能性:设计在不断反复之前出现的文化浪潮,许多设计因软件功能出现了泛同质化难以应对复杂多变的应用场景。现有的设计语言不够丰富,而生成艺术的发展优化了设计创造力的新路径。正如维拉·莫尔纳所言:“这听起来可能很矛盾,但被认为冷酷和不人道的机器可以帮助实https://www.uisdc.com/generative-art
10.微信服务号的海报软件如何在线实现裂变功能?11、生成海报二维码:数据统计报表 进入生成海报二维码后,再点击数据统计报表,支持每日生成海报数、新增海报推广员人数和通过海报二维码关注的粉丝数的数据查看。 12、微信服务号在线生成海报裂变功能,在个人微信上的演示效果。https://www.weihaobang.com/jiaocheng?id=727
11.海报制作哪个软件好?这里告诉你psdrepo? 实时预览功能:可以随时预览海报的效果,及时调整,减少反复修改的时间成本。 海报生成软件哪个好用?手机端工具可用这些↓ 第一款:WPS ? 多平台兼容:支持在电脑和手机等多个平台上使用,方便大家随时随地进行海报设计。 ? 丰富模板样式:提供了多种类型的海报模板,包括宣传海报、活动海报、节日海报等。 https://blog.csdn.net/Niuagha/article/details/142548704
12.a3海报用什么软件做?怎么用电脑制作海报mynewhomea3海报的制作可以使用专业的排版软件,例如Adobe InDesign、Microsoft Publisher等。具体操作步骤如下:1. https://ask.zol.com.cn/x/22257746.html
13.logo免费设计在线生成工具下载软件介绍 一键logo设计APP是一款智能LOGO设计在线生成工具,多行业通用模版,可轻松一键套用,全能自定义编辑logo,场景化logo效果预览,600多的矢量模板,可以直接运用这些模板即可轻松制作设计出上千种样式风格的logo,可以尽情发挥你的创意,支持对logo的参数进行调整,包括大小、颜色、角度、填充图等等,智能一键生成专属的logo标http://www.winwin7.com/azapp/66291.html
14.MockuuupsStudio一键生成精美APP宣传海报图(600+手机电脑拖放截图即可生成场景海报: 将你准备好的截图拖拽放到软件里,即可预览到截图显示在各个模型的屏幕中的展示效果。当然,截图可能并不一定完美与模版匹配。点击单张图片之后,你可以在界面中调整截图的裁切区域,或根据不同机型进行裁切让它们更加契合。 Mockuuups Studio 实时预览效果图: https://www.iplaysoft.com/mockuuups-studio.html
15.美图设计室智能生成海报一键生成美图设计室是美图秀秀旗下的智能设计在线协作平台,是一款平面设计工具和在线平面设计软件,提供海量海报模板,跨境电商模板,跨境电商banner,跨境电商主图,邀请函,公告通知,喜报,logo等免费设计素材和模板,可在线智能生成海报,一键换色,一键换装,一键去水印,图片高清修复,无损https://design.meitu.com/
16.图怪兽作图神器在线海报编辑器PS图片制作图怪兽作图神器,是一个在线ps图片编辑器,它相当于ps精简版软件,可提供微信编辑器功能,在线ps照片处理,拼图,图片制作,在线设计,平面设计,海报设计,在线图片处理等功能。图怪兽作图不求人处理简单易用,这款在线图片编辑软件让设计海报模板图片更轻松,帮助企业视觉营销投入成本http://www.pikhive.com/
17.设计神器iiisometric!即时生成2.5D图形的免费设计工具!小伙伴们或多或少的都接触过 2.5D 设计吧,要知道最简单的2.5D作品,像立方体块儿堆积成一些字母、特定图形,都需要在 AI/PS 里建设网格,就算使用插件也是需要好几步才能生成,在生成时还要面临软件卡崩的风险。今天要给大家介绍的这款神器,就可以让我们在需要构建简单的 2.5D 图形时,摆脱软件的问题,节省操作步骤https://uiiiuiii.com/software/494548.html
18.3款出色的海报制作软件对于海报设计师来说,一个好用的设计工具十分重要,今天就为大家介绍 3 款出色的海报设计软件,其中即时设计是首款国产可云端编辑的 UI 设计软件,社区内具有丰富的海报制作模板;即时灵感是即时设计团队所开发的 AI 绘画工具,能够根据语言描述快速生成大师级别的艺术海报;Photoshop 作为我们所熟知的设计工具,拥有优秀的https://js.design/special/article/3-ronyasoft-poster-designer.html
19.每日热点0401和血管生成提供了一种独特的方法 Nature:阿尔茨海默病的根本原因, 竟是脑细胞中的脂肪堆积?一个被忽视100多年的发现 Nature子刊:咖啡中的这种成分,可以增加NAD+水平,改善衰老过程 中山大学研究者们揭示了C5a-C5aR1轴促进狼疮性肾炎足细胞损伤 舆情信息 https://www.sccdc.cn/Article/View?id=33284
20.商跃超市播音软件商跃软件,商跃超市播音软件,商跃超市语音播报系统,商跃海报设计软件,商跃海报生成软件,商跃影院入场播音软件,商跃影城语音播报系统,广告促销广播、定时广播、超市促销海报生成 解决方案源头厂商。赤峰恒际智能商贸有限公司http://www.hengjichina.com/
21.简历制作模板简历制作模板模板可编辑下载毕业生简历模板好看的简历模板英文版简历模板电子简历模板免费创意广告海报设计奶茶海报制作海报平面设计线上制作海报软件招聘海报背景图片年夜饭宣传海报微信海报生成器游戏海报制作会议海报设计音乐会海报制作校园招聘海报模板放假通知海报制作早安海报制作直播海报制作学术会议海报制作寒假集训班海报在线招聘海报制作工作汇报海报https://m.chuangkit.com/polymer/951658.html