学海无涯

记录我的程序人生...

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
原理还是比较简单的,利用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判断,因为文件可能不存在,也可能不是个图片文件。

相关代码:

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

}

}
posted on 2005-09-07 22:36  josson  阅读(1626)  评论(1编辑  收藏  举报