精华内容
下载资源
问答
  • Android把文字写到图片上生成图片+文字的新图片

    万次阅读 热门讨论 2017-04-21 10:05:41
    我们项目最近需要微信分享员工二维码功能,二维码图片直接使用zxing就可以生成,但是生成之后只有一个图片,而我们需求的要求是这样的:    没错就是二维码下边有一行提示文字,你可能会想直接imageview下边...

          我们项目最近需要微信分享员工二维码功能,二维码图片直接使用zxing就可以生成,但是生成之后只有一个图片,而我们需求的要求是这样的:

                                                         

         没错就是二维码下边有一行提示文字,你可能会想直接imageview下边放个textview就行了,没错这样在你的APP里显示效果确实是达到了,但是还要在二维码分享到朋友圈或者其他朋友时也是这个样子的啊,所以没办法,只能是得到二维码图片时再重新创建一张图片把文字也画上来,分享的时候就分享新图片就可以了,这个实现起来也很简单的,下面就来说说怎么画。

    思路:

             1.获取到二维码图片的高度bitmapHeight宽度bitmapWidth;

             2.根据文字大小计算出二维码宽度的一行可以放多少个文字count,然后根据文字长度和count计算出需要几行来显示文字;

             3.之后新建一个Bitmap对象,它的宽度就是图片宽度,高度是图片高度+配文与图片间的间距+文字大小*文字行数+文字间的行间距*文字行数;

            4.以Bitmap构建画布对象,先将二维码画上来,然后在二维码下边画出以配文与图片间的间距+文字大小*文字行数+文字间的行间距*文字行数为高度的一个白底矩形,用来盛放文字(这里说一下为什么要画这个矩形,是因为我们的项目要求可以保存这张图片,而保存到相册后,手机相册背景是黑色的,我们不画这个白色矩形背景的话,文字默认背景就是透明的,而文字如果设置成黑色,这时候就会感觉你的图片只有二维码没有下边的配文了,不符合要求,也不美观);

           5.用一个循环来画出文字,返回新的图片。

    思路就是这些了,我觉得我说的很细了,下边就看看代码吧,我写注释都很详细,就不再另外介绍了:

    主要变量含义

    /**传递进来的源图片*/
    private Bitmap source;
    /**图片的配文*/
    private String text;
    /**图片加上配文后生成的新图片*/
    private Bitmap newBitmap;
    /**配文的颜色*/
    private int textColor = Color.BLACK;
    /**配文的字体大小*/
    private float textSize = 16;
    /**图片的宽度*/
    private int bitmapWidth;
    /**图片的高度*/
    private int bitmapHeight;
    /**画图片的画笔*/
    private Paint bitmapPaint;
    /**画文字的画笔*/
    private Paint textPaint;
    /**配文与图片间的距离*/
    private float padding = 20;
    /**配文行与行之间的距离*/
    private float linePadding = 5;
    主要代码

    bitmapWidth = source.getWidth();
    bitmapHeight = source.getHeight();
    
    //一行可以显示文字的个数
    int lineTextCount = (int) ((source.getWidth()-50)/textSize);
    //一共要把文字分为几行
    int line = (int) Math.ceil(Double.valueOf(text.length())/Double.valueOf(lineTextCount));
    
    //新创建一个新图片比源图片多出一部分,后续用来与文字叠加用
    newBitmap = Bitmap.createBitmap(bitmapWidth,
            (int) (bitmapHeight+padding+textSize*line+linePadding*line), Bitmap.Config.ARGB_8888);
    
    Canvas canvas = new Canvas(newBitmap);
    //把图片画上来
    canvas.drawBitmap(source,0,0,bitmapPaint);
    
    //在图片下边画一个白色矩形块用来放文字,防止文字是透明背景,在有些情况下保存到本地后看不出来
    textPaint.setColor(Color.WHITE);
    canvas.drawRect(0,source.getHeight(),source.getWidth(),
            source.getHeight()+padding+textSize*line+linePadding*line,textPaint);
    
    //把文字画上来
    textPaint.setColor(textColor);
    textPaint.setTextSize(textSize);
    
    Rect bounds = new Rect();
    
    //开启循环直到画完所有行的文字
    for (int i=0; i<line; i++) {
        String s;
        if (i == line-1) {//如果是最后一行,则结束位置就是文字的长度,别下标越界哦
            s = text.substring(i*lineTextCount, text.length());
        } else {//不是最后一行
            s = text.substring(i*lineTextCount, (i+1)*lineTextCount);
        }
        //获取文字的字宽高以便把文字与图片中心对齐
        textPaint.getTextBounds(s,0,s.length(),bounds);
        //画文字的时候高度需要注意文字大小以及文字行间距
        canvas.drawText(s,source.getWidth()/2-bounds.width()/2,
                source.getHeight()+padding+i*textSize+i*linePadding+bounds.height()/2,textPaint);
    }
    
    canvas.save(Canvas.ALL_SAVE_FLAG);
    canvas.restore();


    展开全文
  • php把文字写到图片生成

    千次阅读 2019-05-13 09:28:20
    //将ttf文字写到图片中 imagettftext($img, $size, 0, 108, 502, $black, $font, $string); $filePathDir = '生成路径'; if (!is_dir($filePathDir)) { mkdir($filePathDir, 0777, true); } $filePath = $...
    public function createImg($result, $string){
        $backgroundPath = '背景图路径';
        
        $img = imagecreatefromjpeg($backgroundPath);   //背景图
    
        //设置字体颜色
        $black = imagecolorallocate($img, 0, 0, 0);
    
        //字体大小
        $size = 20;
        if(strlen($string) > 24){
            $size = 18;
        }
        //字体
        $font = "assets/fonts/msyhbd.ttf";
    
        //将ttf文字写到图片中
        imagettftext($img, $size, 0, 108, 502, $black, $font, $string);
    
        $filePathDir = '生成路径';
        if (!is_dir($filePathDir)) {
            mkdir($filePathDir, 0777, true);
        }
    
        $filePath   = $filePathDir.time().rand(0,999).'.jpg';
        imagejpeg($img,$filePath);
        return $filePath;
    }
    展开全文
  • 几张图片上到下拼接成一张图片,并且文字 # 要拼接的图片名称是1,2,3...这样有顺序的 # 当前目录下的所有图片上到下拼接成一张图片 # 该图片的宽度是图片中最宽图片的宽度 # 不改变原来图片的大小,...
  • 在.jsp页面中,我想Lv图片左上角,球员位置在右角,人名图片左下角。但是现在文字位置不知道为什么有问题?应该怎么办?代码、图片如下。 ``` ; charset=UTF-8"> <title>Cards Page ${...
  • java以流的形式将文字写图片上

    千次阅读 2017-11-09 22:08:18
    图片工具类,将一些文字通过java输出到图片上,然后在前端以图片形式展示就显稍微高端一些哈。 废话少说,上图 PictureUtil.java package cn.hx.as.util; import com.sun.image.codec.jpeg.JPEGCodec; ...

    图片工具类,将一些文字通过java输出到图片上,然后在前端以图片形式展示就显稍微高端一些哈。

    废话少说,上图



    PictureUtil.java

    package cn.hx.as.util;
    
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class PictureUtil {
    
        private static void createImage(String fileLocation, BufferedImage image) {
            try {
                FileOutputStream fos = new FileOutputStream(fileLocation);
                BufferedOutputStream bos = new BufferedOutputStream(fos);
                JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
                encoder.encode(image);
                bos.close();
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        //    
        // public static void graphicsGeneration(String path, PolicyBean policyBean)
        // {
        //
        // int imageWidth = 1000;// 图片的宽度
        //
        // int imageHeight = 1000;// 图片的高度
        //
        // BufferedImage image = new BufferedImage(imageWidth, imageHeight,
        // BufferedImage.TYPE_INT_RGB);
        // Graphics graphics = image.getGraphics();
        // graphics.setColor(Color.white);
        // graphics.fillRect(0, 0, imageWidth, imageHeight);
        // graphics.setColor(Color.ORANGE);
        // graphics.setFont(new Font("宋体", Font.BOLD, 20));
        //
        // // PolicyPersonDto policyPersonDto = policyBean.getPolicyPersonDto();
        // // PolicyProductDto policyProductDto = policyBean.getPolicyProductDto();
        //
        // int num = 50;
        // graphics.drawString("手机号      : " + policyPersonDto.getMobile(), 50,
        // num);
        // num += 50;
        // graphics.drawString("登陆密码    : " + policyPersonDto.getPassword(), 50,
        // num);
        // num += 50;
        // graphics.drawString("身份证号    : " + policyPersonDto.getIdentityCard(), 50,
        // num);
        // num += 50;
        // graphics.drawString("姓名        : " + policyPersonDto.getUserName(), 50,
        // num);
        // num += 50;
        // graphics.drawString("所在地区    : " + policyPersonDto.getArea(), 50, num);
        // num += 50;
        // graphics.drawString("常住地址    : " + policyPersonDto.getAddress(), 50,
        // num);
        // num += 50;
        // graphics.drawString("微信号      : " + policyPersonDto.getWechatNo(), 50,
        // num);
        // num += 50;
        // graphics.drawString("QQ号        : " + policyPersonDto.getQq(), 50, num);
        // num += 50;
        // graphics.drawString("Email       : " + policyPersonDto.getEmail(), 50,
        // num);
        // num += 50;
        // graphics.drawString("品牌        : " + policyProductDto.getBrand(), 50,
        // num);
        // num += 50;
        // graphics.drawString("型号        : " + policyProductDto.getModel(), 50,
        // num);
        // num += 50;
        // graphics.drawString("商品编号    : " + policyProductDto.getProductId(), 50,
        // num);
        // num += 50;
        // graphics.drawString("购买日期    : " + policyProductDto.getPurchaseDate(),
        // 50, num);
        // num += 50;
        // graphics.drawString("购买价格    : " + policyProductDto.getPurchasePrice(),
        // 50, num);
        // num += 50;
        // graphics.drawString("购买途径    : " + policyProductDto.getPurchaseWay(), 50,
        // num);
        // num += 50;
        // graphics.drawString("报修电话    : " + policyProductDto.getWarrantyPhone(),
        // 50, num);
        // num += 50;
        // graphics.drawString("延保单位    : " +
        // policyProductDto.getExtendedWarrantyUnit(), 50, num);
        // num += 50;
        // graphics.drawString("延保电话    : " +
        // policyProductDto.getExtendedWarrantyPhone(), 50, num);
        // num += 50;
        // graphics.drawString("发票编号    : " + policyProductDto.getInvoiceNo(), 50,
        // num);
        //
        // createImage(path, image);
        // }
    
        public static void main(String[] args) {
            List<Map> list = new ArrayList<Map>();
    
            Map<String, String> mapTitle1 = new HashMap<String, String>();
            mapTitle1.put("title", "使用人信息");
            list.add(mapTitle1);
    
            Map<String, String> map1 = new HashMap<String, String>();
            map1.put("客户姓名", "张三");
            map1.put("手机号", "123123");
            map1.put("身份证号", "230302198811241234");
            list.add(map1);
    
            Map<String, String> map2 = new HashMap<String, String>();
            map2.put("送货地址", "北京市海淀区知春路113号银网中心B座1009室");
            list.add(map2);
    
            Map<String, String> map3 = new HashMap<String, String>();
            map3.put("微信号码", "123123");
            map3.put("qq号码", "123123");
            map3.put("电子邮箱", "gaop@haierubic.com");
            list.add(map3);
    
            Map<String, String> mapTitle2 = new HashMap<String, String>();
            mapTitle2.put("title", "购买人信息");
            list.add(mapTitle2);
    
            Map<String, String> map4 = new HashMap<String, String>();
            map4.put("姓名", "张三朋友");
            map4.put("手机号", "15612341122");
            map4.put("身份证号", "230302198811241234");
            list.add(map4);
    
            Map<String, String> mapTitle3 = new HashMap<String, String>();
            mapTitle3.put("title", "产品信息");
            list.add(mapTitle3);
    
            Map<String, String> map5 = new HashMap<String, String>();
            map5.put("产品型号", "ALI88");
            map5.put("凭证类型", "发票");
            map5.put("购买日期", "2014-12-02");
            list.add(map5);
    
            Map<String, String> map6 = new HashMap<String, String>();
            map6.put("购买商城", "ALI88");
            map6.put("凭证编号", "发票");
            list.add(map6);
    
            int imageWidth = 1200;// 图片的宽度
    
            int imageHeight = 1000;// 图片的高度
    
            BufferedImage image = new BufferedImage(imageWidth, imageHeight,
                    BufferedImage.TYPE_INT_RGB);
            Graphics graphics = image.getGraphics();
            graphics.setColor(Color.white);
            graphics.fillRect(0, 0, imageWidth, imageHeight);
            graphics.setColor(Color.black);
    
            int high = 100;
            int wigth = 0;
            graphics.setFont(new Font("宋体", Font.BOLD, 50));
            graphics.drawString("注册保单", 500, high);
            graphics.setFont(new Font("宋体", Font.BOLD, 20));
            high += 10;
            graphics.drawLine(50, high, 1150, high);
    
            for (Map<String, String> rowMap : list) {
                high += 50;
                wigth = 50;
                for (Map.Entry<String, String> entry : rowMap.entrySet()) {
                    String name = entry.getKey() + ":" + entry.getValue();
                    if ("title".equals(entry.getKey())) {
                        high += 50;
                        graphics.setFont(new Font("黑体", Font.BOLD, 30));
                        graphics.drawString(entry.getValue(), wigth, high);
                        graphics.setFont(new Font("宋体", Font.BOLD, 20));
                    } else {
                        graphics.drawString(name, wigth, high);
                        wigth += 400;
                    }
    
                }
            }
    
            createImage("D://test1.jpg", image);
    
        }
    
    }
    


    展开全文
  • (有趣)把文字隐藏到图片

    千次阅读 2016-04-27 23:26:11
    建立一个文本文件(.txt),的内容写到里面。注意,在前面要空一两行,不能起头就东西,否则第一行的内容会丢失。 建立或找一张图片(.jpg),最好小点儿,200K左右就行了,最多不要超过500K,不然打开很慢...

    你可以下载此图片将文件格式由jpg转换为txt,用记事本打开即可,就会看到最后一行你加入的信息

    隐藏信息的图片

    1. 建立一个文本文件(.txt),把要写的内容写到里面。注意,在前面要空一两行,不能起头就写东西,否则第一行的内容会丢失。
    2. 建立或找一张图片(.jpg),最好小点儿,200K左右就行了,最多不要超过500K,不然打开很慢或打不开。
    3. 点“开始”,“运行”,“cdm“,确定,进入命令窗口(也就是我们说的dos窗口)。此时命令符是: c:….\>这样的。
    4. 假如以上两个文件为1.jpg和2.txt,都放在D盘根下,我们就在命令窗口的命令行后输入:d:\  然后按回车,变为d:\>_状态;输入以下命令完成文件合并:copy /b 1.jpg+2.txt 3.jpg,打回车完成命令,就生成了3.jpg文件。
    5. 使用:正常情况下,3.jpg双击打开就是和1.jpg一样的图片,当要知道里面的文字时,就不能直接双击打开,而是要在3.jpg文件上点右键,选择“打开方式”,找到“记事本”,用它打开,然后,到文件最后面去找就可以看到文字了。注意,在用打开方式时,如果用“浏览”找记事本,不要勾选下面的“始终用选择的程序打开此类文件”,如果勾选了,要取消,不然以后图片都用记事本打开了。

    附cmd命令copy的用法:
    这里写图片描述

    展开全文
  • ps将手写字帖到图片上

    千次阅读 2017-11-13 20:53:35
    1、在白纸上写下深颜色的文字,使用相机拍照后上传电脑中;但有时候拍摄的图片文字背景没有那么白时,可以用将拍摄的图片先放在word里选择”设置图片格式“,对比度调成100%,然后再将图片截屏保存下来; 2、在...
  • dreamweaver中怎么将文字到图片上?dreamweaver中如果想让背景图片上带一些文字,比较有意境,该怎么做呢?下面我们就来看看dw在图片上写文字的教程,需要的朋友可以参考下
  • 不会和小编一样将图片上文字一点一点的敲打成文档文字的吧!其实生活中是有简单的方法的,今天小编就将这个简单的操作方法分享给大家。 第一步:首先,我们需要打开一个OCR文字识别工具,如果小伙伴们的电脑上没有...
  • 图片上悬浮文字

    2017-09-11 20:33:58
    网上查阅之后有三种解决办法:第一种方法是把图片作为背景,上面写文字。这种方法经过简单尝试之后不行,也没有找到原因;后两种方法利用的是html中绝对位置和相对位置的区别实现的,有一个简单的可以运行的小例子
  • ImageMagick--往图片上写文字

    千次阅读 2013-11-06 18:13:57
    为了在文件上写文字,话费了一天的时间,都快崩溃了,其实可以有两种写法:一种是自己实现,对指定的点进行修改像素值,一种是直接用库中的函数进行写文字;当然所有人都希望用库中的函数,既方便又好用,但是事情的...
  • iOS将文字添加到图片上的方法

    千次阅读 2014-02-27 14:09:06
    #pragma mark - 将文字添加到图片的方法实现 -(UIImage *) addText:(NSString *)someText toImage:(UIImage *)img { int w = img.size.width; int h = img.size.height; CGColorSpaceRef colorSpace =...
  • 先在内存中创建一"画布",在这块"画布"写字,然后返回这块这块"画布",就得到文字图片了C/C++ code <!--Code highlighting produced by Actipro CodeHighlighter (freeware)...
  • 网上搜了一下发现了百度有手写文字图片识别的api,于是拿来试试。 虽然最终效果并不理想,还是当做一次测试记录一下。 手里有手写笔记想要识别一下,也可以直接参考下面代码试试。 代码 代码部分没什么...
  • android图片上添加文字

    热门讨论 2013-02-19 09:28:44
    实现了地图A-Z字母的图片创建工作,后期工作根据信息在地图标注在进一步实现中
  • python一个自动识别图片提取文字

    千次阅读 2020-10-07 20:58:03
    python一个自动识别图片提取文字。 ** 1.介绍 使用python一个自动识别图片提取文字的exe. 进行图像的文字识别,将图像中的文字提取出来,可以帮助我们完成很多有趣的事情。 准备工作 import keyboard #安装: ...
  • 这个程序主要是用来生成一张图片,同时在图片上还可以划任意条不用大小,不同颜色的线条,此外,用户还可以在图片上打印自己想打印的任何,并且可以改变大小,字体和颜色,稍加修改的话可以做成一个防伪图片生成...
  • php把文字添加图像中的方法。
  • 很多网友想看批量图片识别成文字,用图片上文字来修改文件名,今天他来了 因为不解决就得手动挨个挨个输入然后文件命名好 今天又一个文件需求是这样的 图上有姓名文字,要识别出来改成每一张图跟这个一样,有...
  • 小白没事干想P图玩 然后想在文字上加 发现如果用标签那么两者是分开的 如果把文字也弄做一个标签的话会被图片遮盖 希望各位大大能赐教我如何把文字添加在图片上 谢谢
  • 第二步:将想要覆盖在文字上图片,Ctrl+j复制一层,然后按v拖这个当前工作页面,并把图片放在文字图层图片大小可Ctrl+t自由定义 第三步:点击文字图层,然后按住Alt鼠标移动到文字图层与图层一之间,会...
  • 图片上添加文字并生成图片

    千次阅读 2019-06-09 19:52:26
    图片上添加文字并生成图片 开发工具与关键技术:Visual Studio 2015 作者:李德新 撰写时间:2019年6月04日 在我们的日常生活中,我们经常能看到各样格式的表单,而且有时候我们还要去填写这些各种各样的不同的...
  • 文字显示 文字总是显示在图片的下面,除了margin-top:-100px;这样不是响应式的;还有什么方法让文字显示在图片上,可以响应式
  • ![图片说明](https://img-ask.csdn.net/upload/201510/14/1444816526_751173.jpg) 如何字符串写入到图片中,并且一行满然后换行的功能
  • BufferedImage类是Image的实现类,是可以把图片加载内存的缓冲类,我的代码中就基本都是基于该类实现对图片的操作。 图片加载 Thumbnails Thumbnails是谷歌开源的一套图片工具类 当我需要本地图片加载进
  • HTML让文字图片上显示

    千次阅读 2019-09-27 09:11:20
    HTML让文字图片上显示的几种方法 第一种方式是image 作为背景图片,即:background:url("......."); 例如如下代码块: <div style="background:url('loading.gif') no-repeat;width:100px;height:50px">...
  • 软件不需要安装,直接双击打开就可以用,废话不多说直接图好了,方便说明问题 ...PDF文件文字识别怎么弄,现将PDF拆成图片,做了个功能批量PDF拆成图片后批量导入图片再识别 开发语言C#、基...
  • bootstrap 让文字显示在响应式图片上

    万次阅读 2017-11-01 21:53:39
    有两种办法:1)让图片做为背景,文字直接布局在图片上; 2)让图片用img标签插入,文字相对布局在图片上; 先说说第一种办法的问题,要想让背景图片完全显示出来,非得设置外层容器的高度,这样就失去了响应式; ...
  • 代码里面有详细的注释。开发环境的配置记得要需要的库添加进去。
  • html5将文字生成图片

    万次阅读 2017-08-01 18:19:06
    由于canvas能够将画布的纹理生成数据给img显示出来,所以,我们在html5里面可以实现将文字生成图片显示。 首先我书写了一个将文字绘制canvas上面的函数,然后函数会返回canvas绘制的纹理数据。 //绘制文字到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 360,535
精华内容 144,214
关键字:

如何把字写到图片上