package com.pbids.sanqin.util;

import javax.imageio.ImageIO;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.net.URL;

public class PicUtil {

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 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, "png", 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("www.hi.baidu.com?xia_mingjian", w - 85, h - 5);

g.dispose();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return img;

}

/**

* 合成图片

* @param addImage

* @param originalImage

* @return

*/

public BufferedImage modifyImagetogeter(BufferedImage addImage, BufferedImage originalImage) {

try {

/* int w = d.getWidth();

int h = d.getHeight();*/

g = originalImage.createGraphics();

g.drawImage(addImage, 593, 1875, 335, 335, null);

g.dispose();

} catch (Exception e) {

System.out.println(e.getMessage());

}

return originalImage;

}

/**

* 图片合成

* @param

* @param

*/

/* public static final void overlapImage(String bigPath, String smallPath) {

try {

BufferedImage big = ImageIO.read(new File(bigPath));

BufferedImage small = ImageIO.read(new File(smallPath));

Graphics2D g = big.createGraphics();

int x = (big.getWidth() - small.getWidth()) / 2;

int y = (big.getHeight() - small.getHeight()) / 2;

g.drawImage(small, x, y, small.getWidth(), small.getHeight(), null);

g.dispose();

ImageIO.write(big, "png", new File("D/aa/jack.png"));

System.out.println("成功");

} catch (Exception e) {

e.printStackTrace();

}

}*/

public static void main(String[] args) {

PicUtil tt = new PicUtil();

BufferedImage addImage = tt.loadImageLocal("D:/new.png");

BufferedImage originalImage = tt.loadImageLocal("D:/aa/bg.png");

//往图片上写文件

// overlapImage("D:/aa/bg.png", "D:/new.png");

//将多张图片合在一起tt.writeImageLocal("D:/aa/cc.png", tt.modifyImagetogeter(addImage, originalImage));

System.out.println("success");

}

}

java盒图_java合成图片相关推荐

  1. java盒图_Java图形化界面设计——布局管理器之BoxLayout布局(盒式布局)

    允许垂直或水平布置多个组件的布局管理器.这些组件将不包装,因此举例来说,垂直排列的组件在重新调整框架的大小时仍然被垂直排列. 用水平组件和垂直组件的不同组合嵌套多面板的作用类似于 GridBagLay ...

  2. java thumbnails 中心点_java Thumbnails 图片处理的使用

    在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输过 ...

  3. java折线图_Java系列:JFreeChart在线制作折线图

    一.概述: JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.JFr ...

  4. java照片拍摄时间_java读取图片的(尺寸、拍摄日期、标记)等EXIF信息

    主要代码如下: package com.test; import java.io.File; import java.io.IOException; import java.util.Iterator ...

  5. java走势图_JAVA 如何实现WEB上曲线走势图

    转载自:http://www.xrss.cn/Dev/JAVA/200792816836.Html 实现非常简单,例子主要有3个类,ImageContainer.java 在内存中保存动态走势图,Im ...

  6. java image 透明_Java实现图片透明效果

    Java实现图片透明效果,从演示截图可看到,上层图片与下层图片互相重叠,也就是上层图片透明了,看到了下层以的图片,具体的代码实现: public class HalfTransparentImageD ...

  7. java 雪花特效_java实现图片飘雪花的特效

    一)制作要点 1.多线程的使用 2.类java.util.Random的使用 (二)嵌入Applet的HTML页面源代码 SnowPic 注意:上面的图片中java的类名为SnowPic 注意大小写, ...

  8. java 水印 位置_Java实现图片加水印且控制位置和透明度

    Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...

  9. java io图_JAVA IO流结构图

    InputStreamReader和OutputStreamWriter分别继承自java.io包中的Reader和Writer,对他们中的抽象的未实现的方法给出实现.如: public int re ...

最新文章

  1. 如何用LogQL在几秒内查询TB级的日志
  2. 某女网友吐槽:大厂程序员男友太忙,天天当望夫石或者床头灯!已分手!
  3. linux 命令 grep -A -B -C 显示行选项
  4. CRM WebClient UI页面的跳转处理
  5. python assert断言的用法
  6. java 字符串子串_java实现字符串匹配求两个字符串的最大公共子串
  7. 利用fiddler给android模拟器抓包
  8. 关于 RGB 的颜色认知
  9. webpack 中的 watch cache (下)
  10. python怎么做软件程序_Revit二次开发python怎么做?人工智能python语言在BIM软件高效建模的运用尝试...
  11. c语言三级试题及答案,2013年计算机二级C语言模拟试题五及答案
  12. daysmatter安卓版_days matter
  13. VC++ (MFC)调用 C#生成DLL的两种方法
  14. iOS Block(一)
  15. 入门程序员如何写博客
  16. vmware输入序列号老是不能注册问题
  17. 关于ubuntu20.04通过Software and updates安装NVIDIA驱动
  18. 一个故事带你了解集线器、交换机与路由器
  19. Qt Style Sheets(QSS)参考
  20. oracle批量清除会话,oracle快速彻底清理kill会话

热门文章

  1. websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室
  2. java调用c so动态库_jni 调用C动态库dll/so
  3. Linux查看lvm元数据,LVM元数据服务lvmetad分析
  4. python教学视频r_R Tutorial
  5. java if两个条件_java(3) if结构
  6. 使用 Akka 实现 Master 与 Worker 之间的通信
  7. springsession分布式登录被覆盖_拉勾 分布式 学习小结
  8. linux 登入用户记录,linux记录所有用户登陆及执行过的命令脚本
  9. Maven学习(六)————企业Maven项目最佳实践
  10. Collection框架介绍