精华内容
下载资源
问答
  • 简单说,就是要下面的票据模板png图片上打印数字,生成一个真的票据。模板是这个样子的:打上字之后是这个样子的:下面贴一下代码。生成工程文件,添加必要的依赖。主要的依赖是Log4j2、lombok,具体请参照前面...

    前一段时间做了一个项目,要基于图片模板生成票据凭证。下面总结一下使用Graphics2D写图片的方法。

    简单说,就是要在下面的票据模板png图片上打印上数字,生成一个真的票据。

    模板是这个样子的:

    d1a536e5cb9bc96f053ce6209630ced2.png

    打上字之后是这个样子的:

    c4f9dddb876a9d7ce5d5b05380c75ed0.png

    下面贴一下代码。

    生成工程文件,添加必要的依赖。

    1. 主要的依赖是Log4j2、lombok,具体请参照前面几篇“开发入门”文章。

    2. 在src/main/resources下面添加模板图片,命名为paperCredential.png

    在图片上写字

    基础用法

                Graphics2D g2d = image.createGraphics();
                g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                g2d.setColor(Color.RED);
                g2d.setFont(font);
                // 打印字符串,例如:g2d.drawString(text, x, y);
                g2d.dispose();

    但因为要打印的字比较多,直接打印每一个字符虽然更直接,但很难维护,所以要封装一下。

    1. 定义writeImage打印字符串到指定的位置
        private void writeImage(Graphics graphics, String name,  String text) {
            writeImage(graphics, CREDENTIAL_FIELD_MAP.get(name).x, CREDENTIAL_FIELD_MAP.get(name).y, text);
        }
    
        private void writeImage(Graphics graphics, int x, int y,  String text) {
            if (text == null) {
                log.error("The text should not be null.");
                return;
            }
    
            graphics.drawString(text, x, y);
        }

    2. 打印出了金额之外的字符串到图片

    前面定义了writeImage之后,就可以直接调用它来打印字符串了。除了金额之外,其他的字符串都可以直接打印出来。

                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    
                Graphics2D g2d = image.createGraphics();
                g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
                g2d.setColor(Color.RED);
    
                writeImage(g2d, "created_date", dateFormat.format(paperVo.getCreatedDate()));
                writeImage(g2d, "due_date", dateFormat.format(paperVo.getDueDate()));
                writeImage(g2d, "encode", paperVo.getEncode());
                writeImage(g2d, "holder", paperVo.getHolderEnterpriseName());
                writeImage(g2d, "origin_holder", paperVo.getPrimaryEnterpriseName());
                writeImage(g2d, "if_transfer", paperVo.getIfTransfer() > 0 ? "Y" : "N");
                writeImage(g2d, "if_delay", paperVo.getIfDelay() > 0 ? "Y" : "N");
                writeImage(g2d, "note", note);
    
                g2d.dispose()

    3. 定义每个字符串的位置

    前面打印每一个字符串的时候,都用到了打印位置的坐标(x,y),但在实际在调用writeImage打印的时候只提供了打印字符串的title,比如:“created_date”。我们需要定义数据结构,把打印字符串的title变换成具体的坐标数字。

    引入下面的数据结构来定义每一个字符串的位置:

        private final static int START_X_1 = 126;
        private final static int START_X_2 = 444;
        private final static int START_Y = 170;
        private final static float GRID_HEIGHT = 42.5f;
        private final static int TEXT_WIDTH = 16;
    
        private Map<String, Rectangle> CREDENTIAL_FIELD_MAP = new HashMap<String, Rectangle>() {
            {
                put("created_date", new Rectangle(START_X_1 + 4 * TEXT_WIDTH,START_Y, 0, 0));
                put("due_date", new Rectangle(START_X_1 + 5 * TEXT_WIDTH,(int)(START_Y + GRID_HEIGHT), 0, 0));
                put("holder", new Rectangle(START_X_1 + 5 * TEXT_WIDTH,(int)(START_Y + 2 * GRID_HEIGHT), 0, 0));
                put("amount", new Rectangle(718, (int)(START_Y + 4 * GRID_HEIGHT), 40, 42));
                put("if_transfer", new Rectangle(START_X_1 + 6 * TEXT_WIDTH,(int)(START_Y + 5 * GRID_HEIGHT), 0, 0));
                put("if_delay", new Rectangle(START_X_2 + 4 * TEXT_WIDTH,(int)(START_Y + 5 * GRID_HEIGHT), 0, 0));
    
                put("status", new Rectangle(START_X_2 + 4 * TEXT_WIDTH,START_Y, 0, 0));
                put("encode", new Rectangle(START_X_2 + 4 * TEXT_WIDTH,(int)(START_Y + GRID_HEIGHT), 0, 0));
                put("origin_holder", new Rectangle(START_X_2 + 7 * TEXT_WIDTH,(int)(START_Y + 2 * GRID_HEIGHT), 0, 0));
                put("note", new Rectangle(START_X_1 + 2 * TEXT_WIDTH,(int)(START_Y + 7 * GRID_HEIGHT), 0, 0));
            }
        };

    4. 打印金额

    定义打印金额的函数,来打印完整的数字到格子里:

        private void writeAmount(Graphics graphics, long amount) {
            for (int i = 0; i < AMOUNT_NUMBER_LENGTH && amount > 0; i++, amount /= 10) {
                writeImage(graphics, (int)(CREDENTIAL_FIELD_MAP.get("amount").x - i * CREDENTIAL_FIELD_MAP.get("amount").width) + (i / 2), CREDENTIAL_FIELD_MAP.get("amount").y, String.valueOf(amount % 10)/*BIG_NUMBER_LIST[(int)(amount % 10)]*/);
            }
        }

    最后的效果是这样的:

    05fe8043dd9714c51b89710540953bb6.png

    5. 自带字体

    之前遇到过部署的服务器上面没有中文的情况,导致所有的汉字都无法打印的问题。简单的解决方案是直接在工程里面加入字体文件,并打包发布就可以了。

    首先在src/main/resources下面添加font package,在里面添加ttf文件。然后在代码里面加载该字体:

        private final static String FONT_FILENAME = "font/simsun.ttf";
     
        private Font loadFont(float fontSize) {
            if (dynamicFont == null) {
                log.info("Try to load font.");
                InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(FONT_FILENAME);
                try {
                    dynamicFont = Font.createFont(Font.TRUETYPE_FONT, inputStream);
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                }
    
                try {
                    inputStream.close();
                } catch (Exception e) {
                    log.error(e.getMessage(), e);
                }
            }
    
            return dynamicFont == null ? null : dynamicFont.deriveFont(fontSize);
        }

    6. 添加UnitTest测试打印效果

    在src/test/java目录下的com.example.hello package里面创建GraphicUtilTest.java文件,添加测试用例来调用产品代码。

    package com.example.hello.utils;
    
    import com.example.hello.utils.GraphicUtil;
    import com.example.hello.vo.PaperVo;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Component;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.Date;
    
    public class GraphicUtilTest {
    
        private GraphicUtil graphicUtil = new GraphicUtil();
    
        private PaperVo paperVo = null;
    
        @Before
        public void before() {
            setKingmiReqDto();
        }
    
        @Test
        public void createCredentialTest() {
            assert graphicUtil.createCertificate(paperVo) != null;
        }
    
        private void setKingmiReqDto() {
            paperVo = new PaperVo();
            paperVo.setAmount(123456789L);
            paperVo.setCreatedDate(new Date());
            paperVo.setDueDate(new Date());
            paperVo.setIfTransfer(1);
            paperVo.setIfDelay(1);
            paperVo.setHolderEnterpriseName("宇宙金融科技有限公司");
            paperVo.setNote("一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十一二三四五六七八九十");
        }
    }
    

    运行createCredentialTest,可能会遇到找不到%MODULE_WORKING_DIR%的错误,这是因为工作目录不匹配的问题。按下面的方法来解决:

    1. Run -> Edit Configuration
    2. 然后把working directory里面的内容改成原点(当前目录)

    4f2607155710f02be2ea6b27fb79b18b.png

    完整的工程请参考:

    zhu-/print-graphicgithub.com
    02190f4fc2aa78c8e7d5070df2991272.png
    展开全文
  • 微信图文排版怎么在图片上加文字?在大家编辑微信公众号的时候怎样在微信公众号里面的图片上添加文字呢?...最后,图片设置好后,就可以在图片上添加其他任意的板块,文字也好,图片也好,对话模板也好......

    微信图文排版怎么在图片上加文字?

    在大家编辑微信公众号的时候怎样在微信公众号里面的图片上添加文字呢?下面小编就来为大家讲解一下微信图文排版怎么在图片上加文字?

    首先,进入秀米排版工具,到布局板块,添加一个空白的布局。

    4e7d7f3431e1003461864ed958d76417.png

    然后,点击这个布局边框,点击下面这个倒三角选择背景图。

    872444d1c64df467f03308f94fa7ec8f.png

    接着,调整这个背景图位置大小以及是否重复。

    d9247f2f5791164e13c3638e34b53b76.png

    最后,图片设置好后,就可以在图片上添加其他任意的板块,文字也好,图片也好,对话模板也好.....然后把这个复制到微信公众号后台就可以了。使用中大家可能会发现图片只显示一部分,那是因为这个布局框就这么大,所以需要输入文字后通过回车输入空行,把背景图延长到合适大小。

    81c77e34e0f304dc01b698dd3845d7a3.png

    当然,除了加图片,加文字,你也可以加音乐,如下:

    路,在远方

    另外,在图片加文字,往往为了好看,都会用到布局功能,什么叫布局功能,不用多解释,大家肯定很熟悉,如下就是这样的效果:

    39ce27f3bdfd48c0ca542eacd3c4617b.png

    这种图文混排的模式在我们早在用word的时候就经常用到了,在微信编辑里面用起来也很简单,在秀米后台布局板块里面就直接提供了几种布局方式,选定你想要的,后面的相信也不用多说了。

    ee269eaabe6feedd8f81e1f878ecb8d8.png

    最后,其实不管是微信图文排版图片上加文字,还是让微信图文布局更好看,重要的是能够用多种排版方式组合起来使用,效果更加!

    要强调的是,这里告诉大家的只是一个排版小技巧,并不是什么微信运营解决反感,排版效果再好看也只是辅助手段,最重要的依旧是服务、功能和内容,建议大家经过多方尝试之后逐渐形成自己的排版风格,并固定下来长期使用,这样能更好的统一公众号形象,更好的培养用户的记忆。

    以上就是小编为大家整理的关于微信图文排版怎么在图片上加文字的内容。

    展开全文
  • 效果1:图片下方留白+圆形印章效果2:图片上下方留白+椭圆形印章效果3:方形边框+方形印章效果4:图片右方留白+不规则形状印章以上这四种图文+留白的图片,制作方法不难,只是用了手机修图APP自带的文字模板。...

    如今越来越多的伙伴喜欢手机摄影,拍好的照片,还可以制作各种精美的图文,直接表达心情的同时,还能获得一片“赞”!

    效果1:

    图片下方留白+圆形印章

    15d5ce542553f86b857eda1bfe610072.png

    效果2:

    图片上下方留白+椭圆形印章

    7d1497f6181777a296a0931374aa9c4a.png

    效果3:

    方形边框+方形印章

    22ae6bea267d07c6e1c3e9a9bb120e01.png

    效果4:

    图片右方留白+不规则形状印章

    51082eb7e9685f7c7b0a5f8fb465982e.png

    以上这四种图文+留白的图片,制作方法不难,只是用了手机修图APP自带的文字模板。

    具体如何操作,下面拆解成详细的步骤分享给伙伴们,希望能有帮助。

    一、用什么APP?

    图曰(yue)app——加字神器,我经常制作的图文都是用这个制作,免费软件,很多免费素材足够使用。

    步骤:

    56912df408c5944d182cb028baaac8ac.png

    打开图曰(yue),点击下方的加号,选择图片加字!

    5f7d545cb303a0362d63879eb80e87de.png

    选择图片加字!

    3b62dd04268cbccdb2079a78bb7b6cf4.png

    在图片库选择图片

    3171863f67434672e8ffa360b0f22a7e.png

    选中图片,然后点击右下角的确定,图曰就能自动识别图片加字了!

    8768709ee6b60ea30ab40b4a808fc3bf.png

    自动添加文字完成,点击下方的模版,就可以进模版库选择留白的模版了!

    95710d5024790e09cca706bfce6bd2d2.png

    下图这些留白模版都可以使用哦,选择一款自己喜欢的留白模版

    bb0a5aa6ab912b3574f4d0fa27f37011.png

    一键使用模版完成,如下图:

    点击右下角的组件,就可以去添加印章了!

    0d6a8a740a788cd8214abdaa6c9c2aea.png

    在组件工具里选择红色的印章标志

    b018fdcd71df42116292b5926858f251.png

    一键添加印章就完成了,如下图

    6f88f4ea672df17e8db5a651b8c60ece.png

    单击图片上的印章,就可以改变印章的形状,还可以编辑印章上的文字哦

    790af3a55a0d4e4d9e99f42d1ff3b938.png

    单击图片上的文字,还可以改变文字的字体,颜色,还可以编辑文字呢

    76f1cb9a990e9554bc75802a793be598.png

    最后点击右上角的完成,就可以将图片保存到本地了!

    fe7d53c09ef7c05e8e58d96638a77e70.png

    操作起来非常的方便呢!

    展开全文
  • 使用照片特效处理工具,在图片上按个人喜好添加各种边框的文字效果(一般带有多种边框模板),让你的图片更加特别。只要你有足够的耐心,美美的图片就出现你眼前。一起来学学吧!看效果对比图片:原图片 ...

    一张普普通通的照片,如果巧妙加上配景的特效文字,就能瞬间变成独具风味的“艺术”照片了。我们在网上经常看到一些加了文字边框的唯美图片,那么这个是怎么制作出来的呢?使用照片特效处理工具,在图片上按个人喜好添加各种边框的文字效果(一般带有多种边框模板),让你的图片更加特别。只要你有足够的耐心,美美的图片就出现在你眼前。一起来学学吧!

    看效果对比图片:

    ccfa7ea96c4c7f44c0773a9dc0612627.png

    e13ab0175dcd63b8c1e6b2c3b61a76a4.png

    原图片                                           加文字处理后的图片

    其实只要简单几步,你自己的照片也可以做出这种效果哦。打开本文提供的图片文字处理软件,如下图所示,选择“文字”选项,点击“打开一张图片”,将本地电脑中需要处理的图片载入到软件上。

    5cd2afc361e0210e69d08ccc81241628.png

    在“文字”选项界面,左边面板中可以选择“输入文字”、“漫画文字”、“动画闪字”、“文字模板”等选项。如果想在图片上编辑自己需要的文字,可以选择前三个选项;如果需要漂亮好看的模板,可以选择“文字模板”。

    如下图,“文字模板”分几类,对应的在软件右边素材模板中,点击选择你喜欢的一个,就会出现在图片上了,通过鼠标拖移调整文字的位置及大小。好看的特效文字就可以轻松设置完毕了。

    48b2e9219939a72c15b42f5bc96ec5a9.png

    接下来,可以再给图片添加边框,选择“边框”选项,左边面板有“简单边框”、“轻松边框”、“文字边框”、“撕边边框”、“炫彩边框”、“纹理边框”、“动画边框”等。这里我选择了文字边框,在软件右边会出现对应的各种模板,随意选择。

    ae71d5169edac1077c3323d623d993e0.png

    我这里随意选择了一个文字边框样式,如下图所示,会弹出文字编辑,可以输入个性签名和日期等信息,文字颜色也可以自定义选取的。设置好后,点击“确定”返回。

    06798944df186a89940b8cd0f957c6c5.png

    图片编辑好后,就要保存了。在软件主界面右上方,有一个“保存与分享”的按钮,点击一下,弹出“保存与分享”窗口,自定义一下保存路径、图片名称、图片格式,最后点击“保存”。欧了。

    ba7a17e290cc1256d351f0038256c028.png

    极快的,就会看到如下图所示的“保存成功”的提示对话框。打开所在文件夹或打开新图片,就能看到保存出来的图片了。呵呵,整体操作很简单的说!~

    3e85e73c8c841d70ab333218565b632a.png

    总结一下,从上述操作过程中,不难看出,这一款图片处理软件功能还是蛮多的,在图片上添加文字、边框也很傻瓜式的简便。最重要的是软件提供的文字模板非常丰富,除现有的模板外,你还可以下载更多好看的模板,绝对有一款文字模板边框模板是你所需要的。当然不用模板,也可以自定义设置文字。随心操作啦。

    眼尖的朋友,也看到了软件还有“美化”、“美容”、“饰品”、“场景”、“拼图”、“更多功能(九格切图、摇头娃娃、闪图),嘻嘻,想知道怎么个玩法,有什么样的特别效果,可以下载软件体验一下哦。更多教程可以关注狸窝家园www.leawo.cn ,有您的支持我们会更有动力!

    6aa2c795b4e4a4290adb18ffbdc95d43.gif相似教程推荐,兴许对你有帮助的:

    ⌒开心一刻⌒ “爸爸,你一个穷屌丝是怎么追到我白富美妈妈的?”

    “多亏一个人给了我无声但是有力的支持啊!”

    “谁啊?”

    “你啊!”

    e82de66e022f0f6ab3213fcc0e1339c2.gif

    展开全文
  • 天小编就教大家如何制作好看的滑动图片,从哪找寻这样的滑动素材模板呢?动样式素材分为两种,一种是上下滑动,另一种是左右滑动。96工具栏中,这两种样式都是有的,可以随便拿去使用呢!“搜索”工具栏中输入...
  • wordpress如果要重装文章中的图片是不是要重新添加图片? 今天就来把图片备份装进模板里。 第一步: 先下载wordpress /www/wwwroot/www.我的域名.com/wordpress/wp-content/uploads先压缩这个文件,下载下来 !...
  • 我用的是YcmCms的管理后台,我在模板文件新创建了一个模板,上传了3个html的单页,现在我想用这个后台来修改这3个单页的一些文字内容,我用调用标签成功的控制了首页index.html的文字,可是另外两个用同样的标签...
  • 报表模板内配置水印属性,各厂家大同小异。区别较大的是全局水印,有的要借助平台功能,也就是脱离它的平台就没法使用了。有的做法就比较灵活,提供水印设置的标签属性,可参考文章文字水印怎么做,只要发布报表...
  • 韩式证件照最近网上很火爆,是从抖音流传出来的,大家都尝试给自己拍摄韩式证件照,这种类型的证件照看上去非常的好看,有很多人都想要了解如何才能拍摄出这种效果,具体的操作方法就让小编来告诉大家吧。...
  • 一十四:分享、版权信息、二维码地址都集成在模板中了,你无需安装插件,更省心。 一十五:自定义侧边栏的许多样式都是现成的,你只要复制、粘贴html代码在你的后台侧边栏就行了。去看看 一十六:使用本模板,你不再...
  • 介绍本文的时候,先贴出微信开发文档的地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&...你可以从右角的模板库里面添加你想要发送给用的消息模板,选择你想要的、适合你推送给...
  • 完美学校网站系统全站源代码学校网站模板下载

    千次下载 热门讨论 2011-01-10 12:23:08
    紧跟学校建站市场的开发的学校网站管理程序,设计的非常漂亮美观的学校网站模板,同时提供有ASP学校网站系统免费下载,二十多套PHP学校网站程序全功能下载,再也不用愁应该用什么学校网站程序,怎么去使用学校网站系统...
  • 最近参加了老男孩的一个python训练营,里面某项任务是要求某个海报模板上批量添加姓名和二维码,生成类似下图的海报。 图中我用红色方框标记的是需要修改的地方,先来聊下自己的思路: 1.要进行图片操作,要用到...
  • 淘宝店铺装修说白了就是选定模板的基础上添加模块,然后在图片上打上链接,除了自定义模块之外,其他都是不能修改的,要想做出自己想要的效果,就需要在图片上花功夫了,那么淘宝自定义店招导航该怎么做呢?...
  • 我对前端不是怎么了解,只是拿来模板然后改来改去。不知道有没有人使用过类似一张页面放置很多图的页面。这种页面往往需要将图片的&lt;li&gt;标签中添加 float: left 标签 亲测:在添加了这样一个样式...
  • 图片和头像提速:文章列表和头像都使用了lazyload做按需异步加载,你会发现访问速度提升一大截 2种可选框架:支持3栏和2栏 13种可选颜色风格:基本小清新的颜色都有了 3种列表模式:多图展示、单图展示、无图展示 7...
  • 首先要解释一下什么是个性签名居中显示,就是自己或别人打开你的朋友圈,朋友圈封面图片下面的个性签名居于页面一行的中间,还可以添加简单的图片字符等。正常情况下朋友圈个性签名文字是居右对齐的,与众不同的你...
  • 经常刷视频的伙伴们就会发现,很多视频其实都是有视频模板的,将这些视频素材下载下来再添加上自己的照片或者视频片段,就组成了一条新的视频了。这样的视频创作方法非常简单,可是其中也有麻烦的地方,就是视频素材...
  • 这样做时,你解开了能够方便鼠标右键单击任何图像硬盘并应用基于保存任务构建的编辑。甚至无需先打开ImBatch,你就可以通过快速,准确,自动化的编辑利用常用的任务。 批量处理图片工具 ImBatch 中文特别版...
  • 前言一篇介绍了论文里面目录、表录、图录、参考文献的设置方法。实际写论文的过程中,还可能遇到各种的细节问题,这篇里,我就把我能想到的一些技巧,做一下经验分享...(4)正文添加图片和表格的引用(5)快速...
  • 前言一篇介绍了论文里面目录、表录、图录、参考文献的设置方法。实际写论文的过程中,还可能遇到各种的细节问题,这篇里,我就把我能想到的一些技巧,做一下经验分享...(4)正文添加图片和表格的引用(5)快速...
  • 棒棒糖要原味的~~分享实用干货,让理论简单化。 这两天挤时间仔细做了轮播图效果。并且刚刚搞了个制作动图的小工具,刚好试用...1,为了方法简化 效果直观,我这次写的只是一个模板,没有添加图片,而且给盒子都加...
  • 本打算用STM32CubeMX启动touchGFX,使用的是STM32F469探索板,各项跟GFX相关的设置都设好了,就差最后板子验证两个软件有没有整合成功了,结果生成代码后编译完成,但是链接时出现了大量罕见错误(共计103个)如...
  • 你只需要选一个比较简单的小程序模板,比如「上线了」sxl.cn,在模板上你可以添加轮播图、快捷按钮、商品及分类等,这些小程序点击事件都已经由专业开发团队做好,你只需要添加需要的功能版块,替换下图片、图标,...
  • 你只需要选一个比较简单的小程序模板,比如「上线了」sxl.cn,在模板上你可以添加轮播图、快捷按钮、商品及分类等,这些小程序点击事件都已经由专业开发团队做好,你只需要添加需要的功能版块,替换下图片、图标,...
  • <div><p>用了...我基本是看完了你所有代码(本人有大概用了两年TP5.1)才知道该怎么在页面里改或者加东西 谢谢啦,看了麻烦给个回馈</p><p>该提问来源于开源项目:zoujingli/ThinkAdmin</p></div>
  • 计算机屏幕捕获任何过程,并快速创建可视化说明。 1号图标 捕获过程 向客户和同事展示如何使用屏幕截图和屏幕录像进行操作。 2号图标 添加您的解释 标记您的屏幕截图,或者通过快速的视频讨论整个过程并回答...
  • 网站底部帮助中心里面可以填充关于我们,消费指南,法律声明等介绍信息,怎么在后台中配置这样的帮助中心数列表呢? 方法:1、点击 ”运营“ --> ”文章管理“ --> ”分类列表,找到网站帮助分类,点击 ”添加...

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

怎么在模板上添加图片