| 
			
	
	
		
		
				jsp 上传图片并生成缩位图或者加水印
		
		
		
		
				JAVA给图片上添加水印文字 //
				添加水印,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
						; 
  } 
   
				生成缩小jpg图片程序 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
								); 
  } 
  } 
				 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; 
  } 
  } 
   
   
     |