您的位置:首页 > 其它

图片改变大小加水印加文字

2012-08-25 15:10 295 查看
package com.lss.common.file.image;

import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import javax.imageio.IIOException;
import java.io.*;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
* 图片改变大小加水印加文字
*
* @author SHOUSHEN LUAN
* @datetime Aug 25, 20123:13:01 PM
*
*/
public class ImageOperate {
public static void main(String[] args) {
new ImageOperate().waterMark("/source.jpg", "/suiyin.jpg");
new ImageOperate().modifyImageSize("/source.jpg", "/lss.jpg", 100, 200);
new ImageOperate().imageAddFont("D:\\image/source.jpg", "D:\\image/addFont.png", "图片增加文字效果图");
}

/**
* 给图片加水印,但不改变大小
*
* @param strOriginalFileName
*            String(原始文件)
* @param strWaterMarkFileName
*            String(水印后)
*/
public void waterMark(String strOriginalFileName, String strWaterMarkFileName) {
try {
// 源文件
String root = "D:\\image";
// session.getServletContext().getRealPath("/");
File fileOriginal = new File(root + strOriginalFileName);
Image imageOriginal = ImageIO.read(fileOriginal);
int widthOriginal = imageOriginal.getWidth(null);
int heightOriginal = imageOriginal.getHeight(null);
BufferedImage bufImage = new BufferedImage(widthOriginal, heightOriginal, BufferedImage.TYPE_INT_RGB);
Graphics g = bufImage.createGraphics();
g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, null);
// 水印文件
File fileWaterMark = new File(root + strWaterMarkFileName);
Image imageWaterMark = ImageIO.read(fileWaterMark);
int widthWaterMark = imageWaterMark.getWidth(null);
int heightWaterMark = imageWaterMark.getHeight(null);
// 水印文件在源文件的右下角
g.drawImage(imageWaterMark, widthOriginal - widthWaterMark, heightOriginal - heightWaterMark, widthWaterMark, heightWaterMark, null);
g.dispose();

String newFile = root + strOriginalFileName;
int index = newFile.lastIndexOf(".");
newFile = newFile.substring(0, index) + "_x_" + newFile.substring(index);
FileOutputStream fos = new FileOutputStream(newFile);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(bufImage);
fos.flush();
fos.close();
fos = null;
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 给图片增加文字,画线,话3D方框
*
* @param sourceImage
* @param targetImage
* @param str
*/
public void imageAddFont(String sourceImage, String targetImage, String str) {
try {
File fileOriginal = new File(sourceImage);
Image imageOriginal = ImageIO.read(fileOriginal);
int widthOriginal = imageOriginal.getWidth(null);
int heightOriginal = imageOriginal.getHeight(null);
BufferedImage bufImage = new BufferedImage(widthOriginal, heightOriginal, BufferedImage.TYPE_INT_RGB);
Graphics g = bufImage.createGraphics();
g.drawImage(imageOriginal, 0, 0, widthOriginal, heightOriginal, null);
g.setColor(Color.RED);
g.drawString(str, 15, 15);
g.setFont(Font.getFont("新宋体"));
g.drawLine(10, 10, 100, 200);
g.draw3DRect(10, 10, widthOriginal - 30, heightOriginal - 30, false);
g.dispose();
FileOutputStream fos = new FileOutputStream(targetImage);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(bufImage);
fos.flush();
fos.close();
fos = null;
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 修改图片大小
*/
public void modifyImageSize(String srcImgFile, String newImageFile, int new_w, int new_h) {
String root = "D:\\image";
File file = new File(root + srcImgFile);
Image src = null;
try {
src = javax.imageio.ImageIO.read(file);
java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(new_w, new_h, java.awt.image.BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null);
FileOutputStream newimage = new FileOutputStream(root + newImageFile);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); // 近JPEG编码
newimage.close();

} catch (IIOException ee) {
ee.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐