知识大全 用java生成缩略图和给图上打上公司logo

Posted

篇首语:时间,就像海绵里的水,只要愿挤,总是有的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用java生成缩略图和给图上打上公司logo相关的知识,希望对你有一定的参考价值。

  这是我前两天写的生成图片的缩略图和给图片打上logo的java代码 没有怎么整理就放上来了 希望能够为大家在工作中帮点忙 同时写的有什么不对的地方 希望大家指点指点

  import java awt Graphics D;

  import java awt geom AffineTransform;

  import java awt image AffineTransformOp;

  import java awt image BufferedImage;

  import java io File;

  import java io FileInputStream;

  import java io FileNotFoundException;

  import java io FileOutputStream;

  import java io IOException;

  import java awt Color;

  //生成缩略图和给图上打上公司logo

  public static void main(String[] args) throws IOException

  //源文件 必须是有文件

  String pathS= D:/tdeng/My Pictures/showPhoto gif ;

  //目标文件

  String pathD= D:/temp/showPhotomini gif ;

  //拷贝文件

  copyfile(pathS pathD);

  //

  //生成缩小mimi图

  File stadimgfile = new File(pathD);

  //图片缓存

  BufferedImage img = ImageIO read(stadimgfile );

  //得到图片的宽和高

  double width = img getWidth();

  double height = img getHeight();

  int miniwidth = ;//缩略图宽度

  int miniheight = ;//缩略图高度

  double ratew = miniwidth / width;

  double rateh = miniheight / height;

  //获得适合的缩放比率 即以在规定缩略尺寸中完整显示图片内容的同时又保证最大的缩放比率

  double rate = Math min(ratew rateh);

  rate = (Math rint((rate * ) + )) / ;

  BufferedImage imgmini = new java awt image BufferedImage(miniwidth miniheight BufferedImage TYPE_USHORT_ _RGB);

  Graphics D gmini = imgmini createGraphics();

  gmini setBackground(Color WHITE);

  gmini clearRect( miniwidth miniheight);

  AffineTransform trans = new AffineTransform();

  trans scale(rate rate);

  AffineTransformOp op = new AffineTransformOp(trans AffineTransformOp TYPE_BILINEAR);

  gmini drawImage(img op (int) (miniwidth (width * rate)) / (int) (miniheight (height * rate)) / );

  ImageIO write(imgmini jpg stadimgfile );

  //

  //mimi图加水印

  BufferedImage img = ImageIO read(stadimgfile );

  int mimi_width = img getWidth();

  int mimi_height = img getHeight();

  BufferedImage imgmimi = new java awt image BufferedImage(mimi_width mimi_height

  BufferedImage TYPE_USHORT_ _RGB);

  //logo文件的位置 必须是真是的

  String logoFile = D:/tdeng/My Pictures/logo gif ;

  BufferedImage watermark = ImageIO read(new File(logoFile));

  Graphics D gmimi = imgmimi createGraphics();

  gmimi drawImage(img null );

  gmimi drawImage(watermark null mimi_width watermark getWidth() mimi_height watermark getHeight());

  ImageIO write(imgmimi jpg stadimgfile );

  

  //    使用FileInputStream和FileOuStream

  public static void copyfile(String pathSrc String pathDest) throws IOException

  

  FileInputStream fi=new FileInputStream(pathSrc);

  FileOutputStream fo=new FileOutputStream(pathDest);

  byte data[]=new byte[fi available()];

  fi read(data);

  fo write(data);

  fi close();

  fo close();

cha138/Article/program/Java/hx/201311/26025

相关参考