java向图片上写字,两个图片合并的方法

摘要:
=null){try{Fileoutputfile=newFile;ImageIO.write;}catch{System.out.println;}}/***设置文本的字体*/publicvoisetFont{this.fontsize=fontsize;this.font=newFont;}/***修改图像并返回修改后的图像缓冲区*/publicBufferedImagemodifyImage{try{intw=img.getWidth();inth=img.get Height();g=img.createGraphics();g.setBackground;g.setColor;//如果(this.font!=null)g.setFont,则设置字体颜色;//如果{this.x=h-this.fontsize+2;this.y=w;}否则{this.x=x;this.y=y;}如果(contentArr!
package writeimg;  
import javax.imageio.ImageIO;  
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 java.net.URL;  
  
  
public class pic {  
  
    private Font font = new Font("华文彩云", Font.PLAIN, 40);// 添加字体的属性设置  
  
    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 BufferedImage loadImageUrl(String imgName) {  
        try {  
            URL url = new URL(imgName);  
            return ImageIO.read(url);  
        } 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 void setFont(String fontStyle, int fontSize) {  
        this.fontsize = fontSize;  
        this.font = new Font(fontStyle, Font.PLAIN, fontSize);  
    }  
  
    /** 
     * 修改图片,返回修改后的图片缓冲区(只输出一行文本) 
     */  
    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.WHITE);  
            g.setColor(Color.orange);//设置字体颜色  
            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;  
    }  
  
    /** 
     * 修改图片,返回修改后的图片缓冲区(输出多个文本段) xory:true表示将内容在一行中输出;false表示将内容多行输出 
     */  
    public BufferedImage modifyImage(BufferedImage img, Object[] contentArr,  
            int x, int y, boolean xory) {  
        try {  
            int w = img.getWidth();  
            int h = img.getHeight();  
            g = img.createGraphics();  
            g.setBackground(Color.WHITE);  
            g.setColor(Color.RED);  
            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 (contentArr != null) {  
                int arrlen = contentArr.length;  
                if (xory) {  
                    for (int i = 0; i < arrlen; i++) {  
                        g.drawString(contentArr[i].toString(), this.x, this.y);  
                        this.x += contentArr[i].toString().length()  
                                * this.fontsize / 2 + 5;// 重新计算文本输出位置  
                    }  
                } else {  
                    for (int i = 0; i < arrlen; i++) {  
                        g.drawString(contentArr[i].toString(), this.x, this.y);  
                        this.y += this.fontsize + 2;// 重新计算文本输出位置  
                    }  
                }  
            }  
            g.dispose();  
        } catch (Exception e) {  
            System.out.println(e.getMessage());  
        }  
  
        return img;  
    }  
  
    /** 
     * 修改图片,返回修改后的图片缓冲区(只输出一行文本) 
     *  
     * 时间:2007-10-8 
     *  
     * @param img 
     * @return 
     */  
    public BufferedImage modifyImageYe(BufferedImage img) {  
  
        try {  
            int w = img.getWidth();  
            int h = img.getHeight();  
            g = img.createGraphics();  
            g.setBackground(Color.WHITE);  
            g.setColor(Color.blue);//设置字体颜色  
            if (this.font != null)  
                g.setFont(this.font);  
            g.drawString("reyo.cn", w - 85, h - 5);  
            g.dispose();  
        } catch (Exception e) {  
            System.out.println(e.getMessage());  
        }  
  
        return img;  
    }  
  
    public BufferedImage modifyImagetogeter(BufferedImage b, BufferedImage d) {  
  
        try {  
            int w = b.getWidth();  
            int h = b.getHeight();  
              
  
            g = d.createGraphics();  
            g.drawImage(b, 100, 10, w, h, null);  
            g.dispose();  
        } catch (Exception e) {  
            System.out.println(e.getMessage());  
        }  
  
        return d;  
    }  
  
    public static void main(String[] args) {  
  
        pic tt = new pic();  
  
        BufferedImage d = tt.loadImageLocal("D:\11.jpg");  
//      BufferedImage b = tt  
//              .loadImageLocal("E:\文件(word,excel,pdf,ppt.txt)\zte-logo.png");  
         tt.writeImageLocal("D:\cc.jpg",tt.modifyImage(d,"西昌苹果",90,90)  
        //往图片上写文件  
         );  
  
        //tt.writeImageLocal("D:\cc.jpg", tt.modifyImagetogeter(b, d));  
        //将多张图片合在一起  
        System.out.println("success");  
    }  
  
} 

  原文:http://www.cnblogs.com/interdrp/archive/2013/03/04/2942559.html

免责声明:文章转载自《java向图片上写字,两个图片合并的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇超简单,安卓模拟器手动rootflashcache下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Node.js如何执行cmd

最近,由于业务需求,有必要研究如何根据vscode插件的名称下载相应的插件,以解决打包插件并将其上载到服务器所导致的延迟问题。灵感是件好事。本文主要讨论Node.js如何执行cmd。除了我一开始说的,还有很多应用场景,但只有意想不到的。正如我们的经理所说,现在20%的技术基本上可以解决80%的业务问题。在这个时代,技术有点泛滥,换句话说,技术过剩。...

BAT教程 第三节(FOR命令中的变量)

FOR命令中有一些变量,许多新手朋友不太了解它们的用法。今天,我将向您解释它们的用法!让我们看看这个例子:首先,我们创建一个名为temp Txt文本文件的桌面,输入这些内容“11112222”“3333”44“44”,然后创建一个BAT文件,代码如下:FOR/F“delims=”%%iINDO@echo%%~执行ipause后,我们可以看到CMD echo如...

关于服务器并发量的简单计算

最简单的计算方式就是根据服务器带宽与页面的大小1.假设机房带宽为10Mbs,页面的大小为20KB同时并发量的理论值:10*1024/=64个请求/秒理论上1秒钟同时可以有64个请求访问页面。本考试系统,登陆的页面容量比较大,所有的js,css以及图片未优化前在400KB左右,我们就以400KB为基准,所有后面要用的文件是在首页一次性加载下来的。这一天的测评情...

TortoiseGit安装、配置(Git 小乌龟安装)

然后关闭5ToroiseGit。以克隆验证中心项目为例,验证TortoiseGit配置是否正确。注意:在克隆代码之前,请确保您具有相关的项目代码权限。如果您没有权限,请具有主权限的同事帮助您分配登录gitlab的权限,在本地目标下载目录中获取SSH链接地址,右键单击--˃TortoiseGit--˃克隆,然后将SSH链接地址粘贴到URL,单击“确定”确认项目...

微软新一代输入法框架 TSF

目前,市场上的非微软中文输入法基本上只实现IMM框架。自Windows XP开始以来,Windows提供了一个基于COM的新输入框架TSF。但是,Windows Vista和Windows 7用户也可以使用各种基于IMM的输入方法,因为Windows提供了一个组件来将所有TSF请求转换为IMM API。很可能,因为Win8下的许多Imm函数无法使用。)根据微...

SpringBoot入门 (三) 日志配置

上一篇博客文章记录了在spring-boot项目中读取的属性文件中配置的属性。本文将学习如何登录springboot项目。SpringBoot在内部使用CommonsLogging进行日志记录,但它也为其他日志记录框架提供默认配置,如JavautilLogging、Log4j2和Logback。在每种情况下,日志记录器都预先配置为使用控制台输出和可选文件输出...