开源)嗨,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.金山海报专题模板金山海报图片素材下载我图网金山 海报专题为您整理了1300008个原创高质量金山 海报图片素材供您在线下载,PSD/JPG/PNG格式金山 海报模板下载、高清金山 海报图片大全等,下载图片素材就上我图网。https://so.ooopic.com/sousuo/52682891/
2.海报介绍世界流行前沿海报设计作品http://www.ccdol.com/sheji/haibao/
3.2024新年年货节插画PC首页模板素材素材素材。https://woofeng.cn/ds/35615.html
4.[金山海报背景]图片免费下载金山海报背景素材千图网为您找到83张金山海报背景相关素材,千图网还提供金山海报背景图片,金山海报背景素材, 金山海报背景模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://m.58pic.com/tupian/156049121.html
5.3步轻松作图金山文档推出“金山海报”功能如何使用“金山海报”? 1 电脑:在金山文档页面(网页版:kdocs.cn)左上角【新建】中选择【海报】 手机:金山文档小程序首页(可在金山文档公众号底部菜单栏点击「我的文档」进入小程序),点击右下角【+】后选择【海报】 2 浏览并选择合适的模板 3 修改素材,点击右上角【保存并下载】,即可完成 https://www.donews.com/news/detail/4/3159014.html
6.金山海报PPT怎么保存到桌面3d溜溜设计问答平台为广大设计师们提供各种金山海报PPT怎么保存到桌面问题解答,3d溜溜素材问答平台汇聚全球各地的设计师、名师名司、设计爱好者等设计灵感和经验,迅速为您解决金山海报PPT怎么保存到桌面的困惑。https://www.3d66.com/answers_relation/relation_3752430_13.html
7.www.pajsl.com/mokohtml/2024/12/17/q7mylm/32519.html17.菏泽巨野县金山景区 公示期为7个工作日(自2024年12月13日至23日)。公示期内若对公示单位有异议,可通过电子邮件或传真向山东省文化和旅游厅提出。异议须以书面形式,并提供证明材料。以个人名义提出异议的,应署真实姓名、工作单位及联系方式;以单位名义提出异议的,须加盖单位公章并提供联系方式,以便核实查证。 http://www.pajsl.com/mokohtml/2024/12/17/q7mylm/32519.html
8.jiaofei.51dfh.com/xxxr77415092.shtml0adc年龄确认大驾光临完整 玖玖视频手机版下载_玖玖视频app下载 推理片《中文字幕在线免费看线人》HD中字免费在线播放_腾讯新闻 青青操 娜娜草 96热 97资源 我想看大白逼 操我啊啊啊好大 一个人在家看成人在线免费欧美视频 AV网站入口最新 翘臀男同艹男士 香港猥琐摄影师K哥捆绑系列 下载个金山黄色毛片http://jiaofei.51dfh.com/xxxr77415092.shtml
9.金山海报金山海报模板可编辑下载创客贴拥有海量精美的金山海报设计模板和金山海报设计素材,每一个模板都可编辑 文字图片背景皆可修改,简单3步即可完成在线金山海报设计制作 免费使用 金山海报图片一键生成 每一张设计模板、图片都可以在线编辑,替换文字就能生成精美设计。 您也可以DIY托拉拽轻松创意设计。下载设计时,会进行版权检测,为您的商业使用保驾https://www.chuangkit.com/polymer/945017.html
10.翻身致富在线国际:多特官方晒115周年海报纪念:罗伊斯哈兰为此,俱乐部官方发布了一张纪念海报,以纪念这一意义非凡的日子。 在这张充满回忆的海报中,众多曾经为多特蒙德效力过的知名球星亮相,包括哈兰德、罗伊斯、胡博悦注册官网,901彩票原版蓝色,128ty.,一号玩家官网,bet188手机版10bet体育网页登录,8888彩票进入系统,www·91TV,yp街机官网,畅玩棋牌旧版本免费66w3wcchttp://m.dtdlcm.com/VZI/moa/GTHStkmumq.html
11.《麻辣江湖》6月20日压测Q版电影海报大曝光游戏网页游戏由金山游戏执导,各位帅哥美女联合主演的治愈系超萌《麻辣江湖》正在各方面紧锣密鼓地拍摄中。而《麻辣江湖》这部网游界的大电影将于6月20日14:00正式开启删档限号压力测试,经过小编的秘密探班,现终于得以一窥这部大片的超萌电影海报!目前,各大媒体发号平台已经火热开启,快来取得《麻辣江湖》的入场资格吧。那些年我https://game.zol.com.cn/301/3012841.html
12.党建网页海报设计党建网页设计模板下载推荐 PPT模版 广告设计 元素 背景素材 插画 视频 电商设计 摄影图 艺术字 文档 小报 新媒体党建网页海报加载中 https://m.51miz.com/so-muban/2013283.html
13.hth网页版在线登录入口官方版hth网页版在线登录入口官方版-hth网页版在线登录入口V10.3.2.25 软件大小:V1.0.0.375 更新日期:2024-12-21 下载次数:7655312次 软件语言:简体中文 软件授权:免费软件 软件评级: 安全检测:无插件无病毒 软件平台:电脑版 软件分类:办公工具 软件系统:winall/win7/win10/win11http://www.share.tjyaleqi.com/gHU/detail/lhEVMRQlV.html
14.程序员节活动文案(五篇)顾问五名,解答活动终遇到的一些关于贵公司的问题(金山公司提供) 2.活动所需物品(金山公司提供) 印有金山公司名称的遮阳蓬或遮阳伞(直径1.5米)至少4架 机箱、光驱、主板、内存等(公司提供) 印有金山标志或代理品牌的小礼品(如鼠标垫,礼品袋) 此次活动的工作牌50张 前期活动宣传海报7张 传单:1300份硬件知识问卷http://cooco.net.cn/zuowen/1654719.html
15.wpsoffice办公软件官方版wpsoffice办公软件官方版下载除开金山海报,拍照扫描、金山日历、发票助手等应用也可一起添加到桌面,使用更便捷 【字体/图片面板新增搜索】 文字、表格、PPT的字体面板和图片面板新增搜索功能,心念之处,一搜直达(即将上线) v13.9.0 版本 【桌面小组件】 新增桌面小组件,在手机桌面直接查看日程安排,快速访问文档,缩短操作路径 功能入口:我-设置-http://a731.com/app162172.html
16.米兰发布125周年纪念海报:马尔蒂尼巴雷西等多名传奇出镜2024年12月16日是AC米兰俱乐部成立125周年的纪念日,在此之际,米兰俱乐部发布了海报,纪念这一特殊的时刻。 海报当中,球队的多名传奇球星出镜,其中包括马尔蒂尼万盛彩票app最新版,014985六码中特,121体育网站,真人娱乐体育赛事电子游艺走h.进入官网.中国,b体育手机网页版登录入口进.官网h.长久.中国今天开奖号码是多少http://m.r6335l.cn/QXQ/moa/NNDNVVyg.html
17.卷王都在用!100款宝藏级AIGC工具分享,强烈建议收藏!!网页链接:https://flowus.cn/product10、WPS智能写作:1秒自动生成各类文章WPS智能写作是金山办公推出的一款帮助用户高效创作的智能写作产品,主要包括四大功能:文本自动生成、辅助初稿写作、句子智能补写、文本智能校对。其文本数据和相关信息来源于权威媒体和政府公开网站,题材覆盖讲话、总结、计划、新闻等多种写作场景,并https://www.changbiyuan.cn/news/2023/news_0711/69335.html
18.wps做的海报怎么导出高清?wps金山海报怎么导出图片wps金山海报怎么导出图片1.首先我们打开电脑中的WPS文档。这个文档最好可以导出图片。 2我们点击上方菜单栏中的云服务,在下方的窗口中点击“输出为图片”。 3.点击之后会打开“输出为图片”的界面。 4.打开的界面中我们根据自己的喜好修改输出方式,格式和保存地址。 5.在保存到这一栏中的右侧有“”标识。点击https://wenda.so.com/q/1691356212218085
19.金山海报5分钟做海报学习PS软件,满世界找素材,开始着手设计海报,不知不觉几个小时过去了~ 今天一起来学习本期视频《金山海报》,教你5分钟搞定海报! 功能亮点 海量模板 市场营销、新媒体配图、教育培训等海量场景供你挑选,总有你喜欢的~ 零门槛简易制作 选择现成模板,配上想要的文案,5分钟搞定!交作业那刻老板都惊呆了~~~https://www.wps.cn/learning/course/detail/id/330561.html
20.铜铜铜铜铜铜铜好多水在线观看电脑网页版「私がこの話をあの子に铜铜铜铜铜铜铜好多水在线观看电脑网页版|「私がこの話をあの子にしたとき――私たちなんでも話すのよ――直子がためしに私を撫でてくれたのcいろいろと。二人で裸になってね。でも駄目よcぜんぜん。くすぐったくてくすぐったくてcもう死にそうだったわ。今思い出してもムズムズするわよ。http://news.hfhome.cn/iis/V02PXzhE2J/index.aspx
21.曲线救国!酷安App如何利用金山文档,低成本解锁电脑版图文编辑长图文混排编辑还是用电脑效率更高,因此很多自媒体平台除了App之外都有电脑版后台系统,但多开发维护一套系统的成本着实不低。「酷安」App 编辑长图文时可以选择从金山文档导入,曲线救国利用别人的产品给自家实现了电脑版的图文编辑功能,方便用户的同时产品团队自己也节https://www.uisdc.com/hunter/0221559639.html
22.水漫金山海报水漫金山的海报(1张)。按照原始尺寸显示水漫金山的高质量图像!便捷搜索,一目了然!https://www.askpanda.cc/ask/star/detail.php?pid=40914
23.金山区精美海报打印制作「上海市丽邱缘科技供应」③布料海报:使用帆布或其他布料材料,适合艺术展览或特殊场合。2、按印刷工艺分类:①胶印:传统的印刷方式,适用于大批量印刷。②丝网印刷:适合单色或简单图案的印刷,色彩鲜明。③数字印刷:适合小批量或个性化印刷,成本较高但灵活性好。④柔版印刷:适合大批量印刷,成本较低。金山区精美海报打印制作http://qiye.shuziyingxiao.net/item-10546371.html