自己做这个找了不少例子,发现例子较少,所以把自己的代码也贴出来,给大家多些参考。
一、将本地图片剪切成规定大小的图片,并保存到本地。以下是部分核心代码
//w-目标图像宽,h-目标图像高,o_w-待裁剪的图像宽,o_h-待裁剪的图像高,l-剪切部分距离待裁图像左边距,t-//剪切部分距离待裁图像上边距,in是源图片的路径及名称,out是剪切后图片的路径及名称
import java.awt.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;BufferedImage bufferedImage = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = bufferedImage.createGraphics();
try {
Frame frame = new Frame();
frame.addNotify();
MediaTracker mt = new MediaTracker(frame);// frame acts as an ImageObserver
Image img = Toolkit.getDefaultToolkit().getImage(in);//取到源图片
mt.addImage(img, 0);
mt.waitForAll();
g2d.setColor(Color.white); //图片底色为白色
g2d.fillRect(0, 0, (w + l), (h + t)); //先画一个白底矩形
g2d.drawImage(img, -l, -t, o_w, o_h, null);//先将图片定为当前放大缩小后的大小
g2d.dispose();
g2d.drawImage(img, 0, 0, w, h, l, t, (l + w), (h + t),
Color.WHITE, null);//裁剪
g2d.dispose();
FileOutputStream outfile = new FileOutputStream(out);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outfile);
encoder.encode(bufferedImage);//输出图片
outfile.close();
} catch (Exception e) {
e.printStackTrace();
}
二、为本地图片增加文字。以下是部分核心代码
try {
Frame frame = new Frame();
frame.addNotify();
MediaTracker mt = new MediaTracker(frame);// frame acts as an ImageObserver
InputStream imageIn = new FileInputStream(new File("c://test.jpg"));
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
BufferedImage image = decoder.decodeAsBufferedImage();
Graphics2D g2d = image.createGraphics();
g2d.setColor(Color.YELLOW);
Font mFont = new Font("仿宋体",Font.PLAIN,20);
g2d.setFont(mFont);
//输出文字
g2d.drawString("图片增加文字测试",50,50);
g2d.dispose();
//输出数据流
FileOutputStream outfile = new FileOutputStream("d://test1.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outfile);
encoder.encode(image);
imageIn.close();
} catch (Exception e) {
e.printStackTrace();
}