jsp 上传图片并生成缩位图或者加水印 ,给图片添加水印,生成缩小图片程序

// 添加水印,filePath 源图片路径, watermark 水印图片路径
  public   static   boolean  createMark(String filePath,String watermark)   {
ImageIcon imgIcon = new  ImageIcon(filePath);
Image theImg  = imgIcon.getImage();
ImageIcon waterIcon = new  ImageIcon(watermark);
Image waterImg  = waterIcon.getImage();
 int  width = theImg.getWidth( null );
 int  height =  theImg.getHeight( null );
BufferedImage bimage  =   new  BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.creatGraphics( );
g.setColor(Color.red);
g.setBackground(Color.white);
g.drawImage(theImg,  0 ,  0 ,  null  );
g.drawImage(waterImg,  100 ,  100 ,  null  );
g.drawString( " 12233 " , 10 , 10 );  // 添加文字
 g.dispose();
 try  {
FileOutputStream out = new  FileOutputStream(filePath);
JPEGImageEncoder encoder  = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param  =  encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(50f,  true );
encoder.encode(bimage, param);
out.close();
} catch (Exception e)  {  return   false ; }
 return   true ;
}

 


 JAVA给图片上添加水印文字

 import  java.awt. * ;
 import  java.awt.image. * ;
 import  java.io. * ;
 import  javax.swing. * ;
 import  com.sun.image.codec.jpeg. * ;
 import  java.text.AttributedString;
 import  java.awt.font.TextAttribute;
 import  java.text.AttributedCharacterIterator;


 public   class  WaterMark   {
    /** */ /**   */ /** */ /**
      * 给图片添加水印
     *  @param  filePath 需要添加水印的图片的路径
     *  @param  markContent 水印的文字
     *  @param  markContentColor 水印文字的颜色
     *  @param  qualNum 图片质量
     *  @param  fontType 字体
     *  @param  fontsize 字体大小
     *  @return
     *  @author  zhongweihai
newwei2001@yahoo.com.cn
      */
     public   boolean  createMark(String filePath,String markContent,Color markContentColor, float  qualNum,
                              String fontType, int  fontSize)
      {
        ImageIcon imgIcon = new  ImageIcon(filePath);
        Image theImg  = imgIcon.getImage();
         int  width = theImg.getWidth( null );
         int  height =  theImg.getHeight( null );
        BufferedImage bimage  =   new  BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = bimage.createGraphics();
        g.setColor(markContentColor);
        g.setBackground(Color.white);
        g.drawImage(theImg,  0 ,  0 ,  null  );
        AttributedString ats  =   new  AttributedString(markContent);
        Font f  =   new  Font(fontType,Font.BOLD, fontSize);

        ats.addAttribute(TextAttribute.FONT, f,  0 ,markContent.length() );
        AttributedCharacterIterator iter  =  ats.getIterator();

        g.drawString(iter,width / 5 ,height / 5 );  // 添加水印的文字和设置水印文字出现的内容
         g.dispose();

         try   {
        FileOutputStream out = new  FileOutputStream(filePath);
        JPEGImageEncoder encoder  = JPEGCodec.createJPEGEncoder(out);
        JPEGEncodeParam param  =  encoder.getDefaultJPEGEncodeParam(bimage);
        param.setQuality(qualNum,  true );
        encoder.encode(bimage, param);
        out.close();
        } catch (Exception e)
          {  return   false ; }
         return   true ;
    }
 


     public   static   void  main(String[] args)
      {
     WaterMark wm  =   new  WaterMark();
     wm.createMark( " c:\year2-11.jpg " , " 此图片来自煞笔网 " ,Color.red,70f, " 黑体 " , 23 );
     }
} 生成缩小jpg图片程序

 import  java.awt.image.BufferedImage;
 import  java.io.File;
 import  javax.swing.Icon;
 import  javax.swing.ImageIcon;
 import  javax.imageio.ImageIO;
 import  java.awt.image.AffineTransformOp;
 import  java.awt.geom.AffineTransform;
 import  java.awt.Image;

 public   class  ZoomPicture  {
   public   static   void  main(String arg[])  {
   
    String filePath  =   " g:/图片.jpg " ;   //  图片的位置
    
     int  height = 50 ;
     int  width = 150 ;
    Icon icon  =   null ;
     try  {
       icon  =  getFixedBoundIcon(filePath,height,width);
       } catch (Exception e)  {
        System.out.println( " exception :  "   +  e);
        }
    System.out.println( "  ###  "   +  icon);   // 生成新图片的位置;
   }
 
      public   static  Icon getFixedBoundIcon(String filePath,  int  height,  int  width)
         throws  Exception  {
         double  Ratio = 0.0 ;
        // 缩放比例 
    File F  =   new  File(filePath);
         if  ( ! F.isFile())  throw   new  Exception
           (F + "  is not image file error in getFixedBoundIcon! " );
        Icon ret  =   new  ImageIcon(filePath);
        BufferedImage Bi  =  ImageIO.read(F);
         if  ((Bi.getHeight() > height)  ||  (Bi.getWidth() > width))  {
     if  (Bi.getHeight() > Bi.getWidth())  {
     Ratio  =  ( new  Integer(height)).doubleValue()  / Bi.getHeight();
    }
      else    {
      Ratio  =  ( new  Integer(width)).doubleValue() / Bi.getWidth();
    }
     int  lastLength  =  filePath.lastIndexOf( " . " );
    String subFilePath  =  filePath.substring( 0 ,lastLength);
    String fileType  =  filePath.substring(lastLength);
    File zoomFile  =   new  File(subFilePath + " _ " + height  + " _ " + width + fileType);
    Image Itemp  =  Bi.getScaledInstance (width,height,Bi.SCALE_SMOOTH);
    AffineTransformOp op  =   new  AffineTransformOp
     (AffineTransform.getScaleInstance(Ratio, Ratio),  null );
    Itemp  =  op.filter(Bi,  null );
     try    {
      ImageIO.write((BufferedImage)Itemp,  " jpg " , zoomFile);
      ret  =   new  ImageIcon(zoomFile.getPath());
    } catch  (Exception ex)   {
     System.out.println( " ######## here error :  "   +  ex);
    } 
   }
     return  ret;
 }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值