zoukankan      html  css  js  c++  java
  • java实现在图片上编辑文本内容

    package com.yin.text;
    
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    /**
     * 在图片上编辑文本内容
     * @version 2018-2-27 上午11:12:09
     *
     */
    public class Picture1
    {
         private Font       font     = new Font("宋体", Font.PLAIN, 12); // 添加字体的属性设置    
         private Graphics2D g        = null;  
         private int        fontsize = 0;  
         private int        x        = 0;  
         private int        y        = 0;  
          
        /**  
         * 导入本地图片到缓冲区  
         */  
        public BufferedImage loadImageLocal(String imgName) {  
            try {  
                return ImageIO.read(new File(imgName));  
            } catch (IOException e) {  
                System.out.println(e.getMessage());  
            }  
            return null;  
        } 
        
        /**  
         * 生成新图片到本地  
         */  
        public void writeImageLocal(String newImage, BufferedImage img) {  
            if (newImage != null && img != null) {  
                try {  
                    File outputfile = new File(newImage);  
                    ImageIO.write(img, "jpg", outputfile);  
                } catch (IOException e) {  
                    System.out.println(e.getMessage());  
                }  
            }  
        } 
        
        /**  
         * 修改图片,返回修改后的图片缓冲区(只输出一行文本)  
         */  
        public BufferedImage modifyImage(BufferedImage img, Object content, int x, int y) {  
      
            try {  
                int w = img.getWidth();  
                int h = img.getHeight();  
                g = img.createGraphics();  
                g.setBackground(Color.RED);//设置背景颜色  
                g.setColor(Color.BLUE);//设置字体颜色    
                if (this.font != null)  
                    g.setFont(this.font);  
                // 验证输出位置的纵坐标和横坐标    
                if (x >= h || y >= w) {  
                    this.x = h - this.fontsize + 2;  
                    this.y = w;  
                } else {  
                    this.x = x;  
                    this.y = y;  
                }  
                if (content != null) {  
                    g.drawString(content.toString(), this.x, this.y);  
                }  
                g.dispose();  
            } catch (Exception e) {  
                System.out.println(e.getMessage());  
            }  
      
            return img;  
        }  
        public static void main(String[] args) {  
            
            Picture1 tt = new Picture1();  
      
            BufferedImage d = tt.loadImageLocal("C:/1.jpg");  
            
            //往图片上编辑内容    
            tt.writeImageLocal("C:/new1.jpg", tt.modifyImage(d, "这是文本内容啦啦啦啦啦", 0, 200));  
          
            System.out.println("success");  
        } 
    }
  • 相关阅读:
    RabbitMQ消息队列-高可用集群部署实战
    python+rabbitMQ实现生产者和消费者模式
    RabbitMQ Connection Channel 详解
    Linux中安装Erlang
    基于 CentOS 搭建 Python 的 Django 环境
    redis单机安装
    CentOS7安装RabbitMQ(单机)
    iptables 规则行号,删除及插入规则
    jQuery前端生成二维码
    MailKit使用IMAP读取邮件找不到附件Attachments为空的解决方法
  • 原文地址:https://www.cnblogs.com/yinyl/p/8478578.html
Copyright © 2011-2022 走看看