java 在图片上写字,两个图片合并的实现方法_java

实例如下:

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");
  } 

}

以上就是小编为大家带来的java 在图片上写字,两个图片合并的实现方法全部内容了,希望大家多多支持~

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
在图片上写字
java 在图片上写字、java 图片写字、java往图片上写字、java 图片上写字、java怎么在图片上写字,以便于您获取更多的相关知识。

时间: 2024-12-26 10:47:51

java 在图片上写字,两个图片合并的实现方法_java的相关文章

怎样在插入Word文档的图片上写字

将图插入到Word文档之后,我们可能会需要在图片上面在写一些文字,例如我们制作书籍的封面,插入一张好看的图片作为背景,我们还需要在图片上写上书名和作者,类似这样的情况还有很多.今天易捷PDF转换成Word就来为大家介绍一下怎样在插入Word文档的图片上写字. 方法一:设置文字环绕图片方式 插入图片,[图片格式][文字环绕],设置文字环绕图片的方式为"衬于文字下方",这时我们就可以在图片上面写字了. Word2003界面 Word2007/2010界面 方法二:将图片插入为文档背景 Wo

word文档怎么在图片上写字?

  word文档怎么在图片上写字?         1.打开电脑后,首先找到WORD图标,双击打开WORD文档. 2.打开WORD文档后,在文档最上方的菜单栏上找到"插入"项,然后单击"图片",再单击"来自文件". 3.在单击"来自文件"后,选择你在的图片,然后点中打开它. 4.接着,在图片下另起一行,打上你想要写的文字. 5.然后,把光标放到图片上,右键点击,选中"设置图片格式",在选中"版式&

画图 写字-我想用MFC实现画图的写字功能,能够拖动放大,缩小,还能在图片上写字,现在不知道用什么原理可以实现

问题描述 我想用MFC实现画图的写字功能,能够拖动放大,缩小,还能在图片上写字,现在不知道用什么原理可以实现 就是做的和Windows自带的画图功能的写字的一个小功能,谢谢大家了 ! 解决方案 顶一下,顶一下,顶一下,顶一下 解决方案二: 做过的人来回答一下把

有没有办法在image控件上加上textbox,也就是实现在图片上写字?

问题描述 我在dockpanel里面已经放了一个image,想要在图片上写字,Dockpanel1.Children.Add(textbox);这样子加的话textbox会放在image下面,看不到了有没有什么办法直接把textbox放到image里面,或者说改变一下层次顺序,让textbox在上面其实最好是文字与图片结合然后变成一个位图 解决方案 解决方案二:设置下textbox的LeftTop属性.解决方案三: 解决方案四:为什么不把你要写入的文字和图片一起做成一个图片一起显示呢?就像给图片

html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一般的上传没有问题,不过如果是上传图片,且需要预览的话,就力有不逮了,趁着闲暇时间,给上传组件添加了单独的图片上传UI,支持图片预览和缩放(通过调整图片的大小以实现图片压缩). 上传组件特点 轻量级,不依赖任何JS库,核心代码(Q.Uploader.js)仅约700行,min版本加起来不到12KB 纯

android 图片上传 服务器接收图片方法代码

问题描述 android 图片上传 服务器接收图片方法代码 求android 批量图片上传 服务器接收,代码,最好有详细解释,万分感谢jackcathy369@163.com 解决方案 http://programmerguru.com/android-tutorial/how-to-upload-image-to-java-server/......答案就在这里:Android 上传图片,服务器接收图片实现 解决方案二: http://blog.csdn.net/y150481863/arti

html 如何实现鼠标放到图片上时显示小图片和信息(就像csdn 的本网页)

问题描述 如何实现鼠标放到图片上时显示小图片和信息(就像csdn的本网页) 解决方案 解决方案二:<imgsrc="a.jsp"alt="这是一个图片"/>解决方案三:是说书标指向用户头像出现的层么?解决方案四:<imgonmouseover="try{showUserCard(this,'b_sky2012')}catch(ex){};"alt="b_sky2012用户头像"title="b_sk

简单的php图片上传自动给图片加水印

本文主要实现了php图片上传自动给图片加水印,在下篇中我会给出用php添加文字水印的代码. php给图片加水印其实很简单,没有想象的那么神奇,就是利用了php里面的一个GD库.说起GD库,其实就是php里面一个专门用于处理图片有关的扩展,比如我们熟悉的验证码.生成缩略图,包括今天所说的php给图片加水印都是要有GD库的支持. 提示:新安装的php环境,可能需要开启GD库,开启方法:打开php.ini,去掉extension=php_gd2.dll前面的";"然后重启apache/iis

java实现文件上传下载和图片压缩代码示例_java

分享一个在项目中用的到文件上传下载和对图片的压缩,直接从项目中扒出来的:) 复制代码 代码如下: package com.eabax.plugin.yundada.utils; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.