java图片加水印后变小了_Java操作图片改变大小加水印

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 {

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值