import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
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;
import javax.servlet.http.HttpSession;
// 图片操作,改变大小加水印
public class ImageOperate {
/**
* 给图片加水印,但不改变大小
* @param strOriginalFileName String(原始文件)
* @param strWaterMarkFileName String(水印后)
*/
public void waterMark(String strOriginalFileName,String strWaterMarkFileName,HttpSession session){
try{
//源文件
String root=session.getServletContext().getRealPath("/");
File fileOriginal = new File(root+strOriginalFileName);
Image imageOriginal = ImageIO.read(fileOriginal);
int widthOriginal = imageOriginal.getWidth(null);
int heightOriginal = imageOriginal.getHeight(null);
System.out.println("widthOriginal:" + widthOriginal + "theightOriginal:" + heightOriginal);
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);
System.out.println("widthWaterMark:" + widthWaterMark + "theightWaterMark:" + heightWaterMark);
//水印文件在源文件的右下角
g.drawImage(imageWaterMark,widthOriginal - widthWaterMark,heightOriginal - heightWaterMark,widthWaterMark,heightWaterMark,null);
g.dispose();
FileOutputStream fos = new FileOutputStream( root+strOriginalFileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(bufImage);
fos.flush();
fos.close();
fos = null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 修改图片大小
*/
public void alterSize(String srcImgFile,String addChar,int new_w,int new_h,HttpSession session){
//System.out.print("文件路径为:"+"//"+srcImgFile);
String root=session.getServletContext().getRealPath("/");
java.io.File file=new java.io.File(root+srcImgFile);
if(file.exists())
System.out.println("文件存在");
else
System.out.println("文件不存在");
int i = srcImgFile.indexOf(".");
int sLen = srcImgFile.length();
String suffix = srcImgFile.substring(i, sLen); //带点+后缀名
String urlName=srcImgFile.substring(0,i); //路径+文件名
String newUrlName=root+urlName+addChar+suffix;
//System.out.print("新文件名为"+newUrlName);
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(newUrlName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close();
}
catch(IIOException ee)
{
ee.printStackTrace();
System.out.print("这里出错了");
}
catch(Exception e)
{
e.printStackTrace();
}
}//End sizeAlter
}
分享到:
相关推荐
struts2 上传 java 图片水印 改变图片大小
java 水印(水印适应图片大小,但个别图片太小不支持)
java 处理图片大小等比例缩放;图片裁剪;支持图片压缩不失真;支持图片添加水印;支持动态图的处理;支持自定义图片大小的转换 等 压缩包中内附使用说明
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...
工作中可能经常需要对图片做一些调整大小的操作,这里我们用Java实现一个方法,将图片按照比例缩放至原来的80%,你可以稍微改动一下这个方法,让图片可以任意比例缩放。准备一张图片,并命名为test.png,并将图片放...
1、生成PDF文件 2、支持中文字体 3、PDF文件内容为表格,表格有表头 ...10、PDF文件增加文字或图片水印功能,要求文字或图片在整个页面清晰可见。增加的水印信息不能使PDF文件大小增长超过5%。 11、对PDF文件进行加密
SIET是简单图像编辑(编辑器)工具,它是易于使用,方便且免费的应用程序,可用于诸如调整大小,裁剪,修饰,加水印等任务。还提供批处理。 因为是以解释性语言编写的与操作系统无关的,所以SIET可以在具有Java...