原理还是比较简单的,利用java.awt.Image和javax.imageio.ImageIO类读入待处理的图片,自己new一个新的
java.awt.image.BufferedImage创建一个java.awt.Graphics出来,利用它就可以为所欲为随便乱画叻,哈哈,然
后用com.sun.image.codec.jpeg.JPEGCodec和
com.sun.image.codec.JPEGImageEncoder输出为.jpg文件即可。
需要注意的是异常处理,以及ImageIO.read()方法后变量的null判断,因为文件可能不存在,也可能不是个图片文件。
相关代码:
需要注意的是异常处理,以及ImageIO.read()方法后变量的null判断,因为文件可能不存在,也可能不是个图片文件。
相关代码:
Code:
/*
* Created on 2005-8-23
*
*/
package cn.edu.sjtu.se.elearning.util;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
* @author hongliang
*
*/
public class Test {
public static void main(String[] args) throws Throwable {
//get source image
Image img = ImageIO.read(new File("/home/hongliang/a.png"));
int width = img.getWidth(null);
int height = img.getHeight(null);
//create target image
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//get a graphics pen
Graphics g = image.createGraphics();
//draw source image
g.drawImage(img, 0, 0, width, height, null);
//draw target logo
Image logo = ImageIO.read(new File("/home/hongliang/4x.gif"));
int lw = logo.getWidth(null);
int lh = logo.getHeight(null);
g.drawImage(logo, width-lw, height-lh, lw, lh, null);
//如果不想加图片水印,而是文字,则是这里的代码
// String str = "http://www.hongliang.net";
// g.setColor(Color.BLUE);
// g.setFont(new Font("Courier", Font.PLAIN, 36));
//这里的文字位置要研究一番,容易对不准
// g.drawString(str, width-360, height-72);
g.dispose();
FileOutputStream os = new FileOutputStream("/home/hongliang/b.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
encoder.encode(image);
}
}