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;
   }
						
						
								 
								 }
				
				
						 
						 
						 
						 
						 
						 
				
		 
	 
	
	
 
 
				
 |