精华内容
下载资源
问答
  • 本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧一、使用OpenCV在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦。OpenCV中并没有使用自定义字体...

    本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧

    一、使用OpenCV

    在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦。OpenCV中并没有使用自定义字体文件的函数,这不仅意味着我们不能使用自己的字体,而且意味着他无法显示中文字符。这还是非常要命的事情。而且他显示出来的文字位置也不太好控制。比如下面的代码,他想做的仅仅是显示数字3:

    代码:

    #coding=utf-8

    import cv2

    import numpy as np

    from pylab import *

    %matplotlib inline

    font=cv2.FONT_HERSHEY_SIMPLEX#使用默认字体

    im=np.zeros((50,50,3),np.uint8)#新建图像,注意一定要是uint8

    img=cv2.putText(im,'3',(0,40),font,1.2,(255,255,255),2)#添加文字,1.2表示字体大小,(0,40)是初始的位置,(255,255,255)表示颜色,2表示粗细

    imshow(img)

    结果:

    5698f69686afdbf5ebcec308c1a0ef1f.png

    我么可以发现文字出现的位置并不怎么好把握,初始的坐标默认是指左下角的坐标,不怎么方便。而且显示出文字以后,我们不好掌握他实际占的位置和大小。

    不过有一点方便的是,我们可以随意改变他的粗细,而不用更换字体。这一点是下面使用PIL进行绘图所不具备的优点。

    二、使用PIL

    同样为了生成数字3,下面是使用PIL进行的操作:

    代码:

    import Image,ImageFont,ImageDraw

    import numpy as np

    from pylab import *

    %matplotlib inline

    font = ImageFont.truetype('3.ttf',50) #使用自定义的字体,第二个参数表示字符大小

    im = Image.new("RGB",(50,50))      #生成空白图像

    draw = ImageDraw.Draw(im)         #绘图句柄

    x,y=(0,0)                  #初始左上角的坐标

    draw.text((x,y), '3', font=font)    #绘图

    offsetx,offsety=font.getoffset('3')  #获得文字的offset位置

    width,height=font.getsize('3')     #获得文件的大小

    im=np.array(im)

    cv2.rectangle(im,(offsetx+x,offsety+y),(offsetx+x+width,offsety+y+height),(255,255,255),1)#绘出矩形框

    imshow(im)

    结果:

    bd410d5a1acf56f76133174325b699ba.png

    我们可以发现,PIL支持使用自定义的字体文件,而且能够提供字体所占位置的详细信息,我们可以精确的确定文字所占的位置,在应用中特别有用。唯一的不足就是他不能改变字体的粗细(毕竟这用的是字体模板)。

    实际应用中看来还要在这两种方法中择优使用。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对积木网的支持。

    python脚本爬取字体文件的实现方法

    前言大家应该都有所体会,为了提高验证码的识别准确率,我们当然要首先得到足够多的测试数据。验证码下载下来容易,但是需要人脑手工识别着实

    浅谈function(函数)中的动态参数

    我们可向函数传递动态参数,*args,**kwargs,首先我们来看*args,示例如下:1.show(*args)defshow(*args):print(args,type(args))#以元组的形式向列表传递参数show(11,22,33

    Python 操作MySQL详解及实例

    Python操作MySQL详解及实例使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。Python-MySQL资格最老,核心由C语言

    展开全文
  • 二、新课学习(一)、演示文稿中添加文字 1、单击右键幻灯片空白处——幻灯片版式——选择所需要版式 2、点击—— 即可添加文字3、格式——字体——即可对文字字体、字形、字号、颜色进行编辑(二)、演示文稿中添加图片...

    一、引入

    展示一个未经编辑的幻灯片和已经编辑好的幻灯片让学生对比。更喜欢哪一个幻灯片,为什么?

    二、新课学习

    (一)、演示文稿中添加文字

    1、单击右键幻灯片空白处——幻灯片版式——选择所需要版式

    2、点击—— 即可添加文字

    3、格式——字体——

    即可对文字字体、字形、字号、颜色进行编辑

    (二)、演示文稿中添加图片

    1、插入—图片—来自文件或

    2、图片格式设置

    5529058159904f90e315d43d543c1876.png

    三、上机操作

    原始文件:第五章5.2原始文件电子商务安全课件.ppt,

    完成文件:第五章5.2完成文件电子商务安全课件效果.ppt

    1、 在第一张幻灯片里添加标题文字:电子商务安全、副标题文字:吉丽晓;

    2、 设置标题文字字体为“华文行楷”,字体大小为“60”磅,颜色为红色(R:255,G:0,B:0);副标题字体为“黑体”,字体大小为“32”磅;

    3、 在第二张幻灯片下面插入一张新幻灯片,应用“空白”内容版式,并添加以下文本:

    4、 将第二张幻灯片添加的文本设置字体为“黑体”,字号为“24”磅,字形为“加粗”,效果为“阴影”。

    5、 为刚添加的文本添加项目符号“ ”符号,并设置文本段落“左缩进”为“1”。

    6、 在第二张幻灯片相应位置中插入如样图中的“商务”剪贴画。

    7、 在第七张幻灯片中插入“ppt插图1.tif”图片,并调整好叠放位置。

    8、 为第二张幻灯片的文本加上“浅黄”底纹和“靛蓝”、“4.5磅”的实线边框。

    9、 以“电子商务安全课件效果.ppt”为文件名保存。

    四、小结

    展开全文
  • 标签:本文和大家分享的主要是使用python在图片中添加文字相关内容,一起来看看吧,希望对大家学习python有所帮助。使用OpenCV在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦。OpenCV中并没有使用...

    标签:

    本文和大家分享的主要是使用python在图片中添加文字相关内容,一起来看看吧,希望对大家学习python有所帮助。

    使用OpenCV

    在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦。OpenCV中并没有使用自定义字体文件的函数,这不仅意味着我们不能使用自己的字体,而且意味着他无法显示中文字符。这还是非常要命的事情。而且他显示出来的文字位置也不太好控制。比如下面的代码,他想做的仅仅是显示数字3:

    代码:

    #coding=utf-8

    importcv2

    importnumpyasnp

    frompylabimport*

    %matplotlib inline

    font=cv2.FONT_HERSHEY_SIMPLEX#使用默认字体

    im=np.zeros((50,50,3),np.uint8)#新建图像,注意一定要是uint8

    img=cv2.putText(im,’3’,(0,40),font,1.2,(255,255,255),2)#添加文字,1.2表示字体大小,(0,40)是初始的位置,(255,255,255)表示颜色,2表示粗细

    imshow(img)

    结果:

    我么可以发现文字出现的位置并不怎么好把握,初始的坐标默认是指左下角的坐标,不怎么方便。而且显示出文字以后,我们不好掌握他实际占的位置和大小。

    不过有一点方便的是,我们可以随意改变他的粗细,而不用更换字体。这一点是下面使用PIL进行绘图所不具备的优点。

    使用PIL

    同样为了生成数字3,下面是使用PIL进行的操作:

    代码:

    import Image,ImageFont,ImageDraw

    import numpy as np

    from pylab import *

    %matplotlib inline

    font = ImageFont.truetype(’3.ttf’,50) #使用自定义的字体,第二个参数表示字符大小

    im = Image.new("RGB",(50,50)) #生成空白图像

    draw = ImageDraw.Draw(im)         #绘图句柄

    x,y=(0,0) #初始左上角的坐标

    draw.text((x,y), ’3’, font=font) #绘图

    offsetx,offsety=font.getoffset(’3’) #获得文字的offset位置

    width,height=font.getsize(’3’) #获得文件的大小

    im=np.array(im)

    cv2.rectangle(im,(offsetx+x,offsety+y),(offsetx+x+width,offsety+y+height),(255,255,255),1)#绘出矩形框

    imshow(im

    结果:

    我们可以发现,PIL支持使用自定义的字体文件,而且能够提供字体所占位置的详细信息,我们可以精确的确定文字所占的位置,在应用中特别有用。唯一的不足就是他不能改变字体的粗细(毕竟这用的是字体模板)。

    实际应用中看来还要在这两种方法中择优使用。

    展开全文
  • html中添加了图片,想在图片添加文字,可是文字总是显示换行或者在第一行
  • 前一段时间做了一个项目,要基于图片模板生成票据凭证。下面总结一下使用Graphics2D写图片的方法。简单说,就是要下面的票据模板png图片上打印上数字,生成一个真的...2. src/main/resources下面添加模板图片,...

    前一段时间做了一个项目,要基于图片模板生成票据凭证。下面总结一下使用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
    展开全文
  • 本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧一、使用OpenCV在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦。OpenCV中并没有使用自定义字体...
  • 最终效果最近有粉丝问如何曲面添加文字,今天给大家分享一个曲面上添加文字方法。3dmax微信圈子新创建的微信圈子,欢迎大家交流分享。01打开3dmax软件,视图随便创建一个曲面;如图所示。(这里举例根据自己的...
  • 最终效果最近有粉丝问如何曲面添加文字,今天给大家分享一个曲面上添加文字方法。3dmax微信圈子新创建的微信圈子,欢迎大家交流分享。01打开3dmax软件,视图随便创建一个曲面;如图所示。(这里举例根据自己的...
  • 图片添加标注和文字是科研图片处理一个非常基础的操作,Image J也可以进行这方面的处理。01利用描边和填充添加在绘制好选区(几乎只会用到箭头工具)之后选择:Edit-Draw(描边,快捷键Ctrl+D),使用事先设定好的...
  • 抖音一天可见怎么添加文字?... 1、抖音短视频app不支持【日常(1天可见)】视频添加文案,但是支持视频中添加文字; 2、首先打开手机中的抖音短视频app,首页点击下方的【+】添加按钮; 3、进入拍摄...
  • 生活时常会遇到添加水印的图片,那么如何制作水印呢?使用PS?今天这里有一份超级简单的水印制作方法。让我们一起来制作一下水印吧!第一步:下载安装处理水印的软件。第二步:打开软件,点击选择图片加水印。第...
  • 使用php怎么在图片中添加描边字发布时间:2020-12-17 14:17:12来源:亿速云阅读:108作者:Leah使用php怎么在图片中添加描边字?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这...
  • 今天小编给大家分享一款剪辑软件——视频剪辑高手,以同时给视频添加图片水印和文字水印的效果为例,教大家如何操作。编辑文字水印命令勾选视频剪辑高手“批量剪辑视频”功能的“高级自定义”这个选项点“编辑”,...
  • 今天小编给大家分享一款剪辑软件——视频剪辑高手,以同时给视频添加图片水印和文字水印的效果为例,教大家如何操作。编辑文字水印命令勾选视频剪辑高手“批量剪辑视频”功能的“高级自定义”这个选项点“编辑”,...
  • 需求场景在Word插入了图片之后,想要在图片上添加一些文字注释等指示信息,从而使得图片内容更加丰富,向文档读者传达更多关于图片的附加信息,便于读者理解。解决方法假设现在想要在下图的笔记本上添加文字注释:...
  • 如何用Photoshop给图片加文字 最简约...点中左边工具栏里的 T字型文字工具然后点一下图片中任何 位置然后输入文字口郁金香 选中所有文字也就是光标变成I的样子的时候涂黑文字然 后改变文字大小对齐方式和颜色都在上
  • 本文可以帮助你解决一下问题:1,GD库添加文字水印无法换行2,GD库添加文本实现居中显示3,stil/gd-text扩展包添加文字为中文时,换行失效GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库...
  • 浏览器按F12选择Network选择all点击network下的图片选择Preview可查看到图片信息底部TP 给图片添加文字//图片上写文字/添加图片,自定义位置public function pic_detail(){ $kuang = './Public/static/img/1.jpg';...
  • 工作有时候会给图上添加文字,常用的是PS工具,不过我想通过代码的方式来给图片添加文字。需要使用的Python的图像库:PIL.更加详细的知识点如下:Imaga模块:用来创建,打开,保存图片文件new(path):用来创建一...
  • 怎么在GIF动态图中添加文字

    千次阅读 2019-10-22 16:00:35
    GIF动态图片其实就是多张不同的图片放在一起无限循环播放,我们的生活很多地方都...但是如果要这些GIF动图上添加自己想要的文字怎么做呢,这里我就教你们一个简单的方法。 1、首先要电脑上打开这个制作GI...
  • 我们都知道,手机上都会自带一个拍照提取功能,对准文本扫描就能转换为文字了,玩了这么多年的电脑才知道,原来电脑上也隐藏着一个小功能,添加图片也能快速提取文字,下面教大家如何操作。1、其实电脑还有一个...
  • WPS文字中怎样画图329x212 - 10KB - JPEG在wps文字中怎样在图片上写字?500x479 - 33KB - JPEGWPS文字多个文档同时编辑设置方法496x360 - 24KB - JPEG怎么用wps文字画图598x400 - 36KB - JPEGWPS文字怎样画图481x277 ...
  • 作为摄影小白的你,除了要学会拍摄以外,还要学习如何后期修图。以前松松哥常常刷微信朋友圈,看到某些朋友们发的图片就特么洋气,除了高大尚...在分享前,我们要了解一些常识,要想在图片中添加印章与艺术文字,一...
  • 办公我们经常处理文件,偶尔遇到pdf格式的文件,那么pdf文档图片怎么添加文字怎么修改呢? 这里小编告诉大家用pdf编辑器添加图片,还有修改文字的方法,步骤如下。 步骤一:电脑下载安装捷速PDF编辑器...
  • 现在我们会经常使用到PDF文件,有的时候我们还需要制作PDF文件,给PDF文件添加文字这种基本的操作还会知道如何操作,或许有小伙伴知道怎么在PDF中添加图片吗?不会的小伙伴就来看看下面的文章吧。  1.PDF添加...
  • 论文少不了参考文献,尾注、脚注都要严谨标注,还要按顺序对应文章末尾的参考文献,自然要花费不少功夫。...2 插入尾注后,文章会出现尾注引用符号,文章末尾出现尾注文本,尾注文本处输入参考文献。双击尾注...
  • php页面,往图片添加中文文字,可是中文文字乱码了。代码如下。请问大神们怎么解决?![图片说明](https://img-ask.csdn.net/upload/201609/18/1474190722_321365.png)
  • pdf文件是现在比较常见的文件格式,使用它的人也不少数,但对文件的修改却知道很少,那么pdf文件怎么添加图片文字怎么修改呢? 修改pdf文件是需要下载pdf编辑器的,手动是无法修改和编辑pdf文件的,文件的修改...
  • android:drawablePadding //设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 312
精华内容 124
关键字:

怎么在图片中添加文字