`
ssxxjjii
  • 浏览: 932265 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JMagick 缩放 剪切 水印 锐化

 
阅读更多

对图片进行缩放剪切

Java代码
  1. public  String cut()  
  2.     {  
  3.         String fileName = getRequest().getParameter("fileName" ); //图片路径+图片名称   
  4.         String txt_width = getRequest().getParameter("txt_width" ); //缩放后宽   
  5.         String txt_height = getRequest().getParameter("txt_height" ); //缩放后高   
  6.         String txt_top = getRequest().getParameter("txt_top" ); //x坐标   
  7.         String txt_left = getRequest().getParameter("txt_left" ); //y坐标   
  8.         String txt_DropWidth = getRequest().getParameter("txt_DropWidth" ); //剪切宽   
  9.         String txt_DropHeight = getRequest().getParameter("txt_DropHeight" ); //剪切高   
  10.         String filePath = getRequest().getSession().getServletContext().getRealPath("/" )+ "attachFiles\\" +fileName;  
  11.           
  12.           
  13.         String cutFilePath = getRequest().getSession().getServletContext().getRealPath("/" )+ "attachFiles\\cut\\" +fileName;  
  14.         File fileList = new  File(getRequest().getSession().getServletContext().getRealPath( "/" )+ "attachFiles\\cut\\" );  
  15.         if (!fileList.exists())  
  16.         {  
  17.             fileList.mkdirs();  
  18.         }  
  19.         try  {  
  20.              System.setProperty("jmagick.systemclassloader" , "no" );  
  21.              ImageInfo info = new  ImageInfo(filePath);  
  22.                
  23.              MagickImage image = new  MagickImage(info);   
  24.              MagickImage cropped = null ;  
  25.              MagickImage scaleImg = image.scaleImage(Integer.valueOf(txt_width), Integer.valueOf(txt_height));//缩放图片   
  26.              Rectangle rect = new  Rectangle (Integer.valueOf(txt_left),Integer.valueOf(txt_top),Integer.valueOf(txt_DropWidth),Integer.valueOf(txt_DropHeight));  
  27.              cropped = scaleImg.cropImage(rect);//剪切图片   
  28.              cropped.setFileName(cutFilePath);   
  29.              cropped .writeImage(info);  
  30.              getRequest().setAttribute("cutImagePath" , getRequest().getContextPath()+ "/attachFiles/cut/" +fileName);  
  31.                
  32.         } catch  (MagickException e) {  
  33.             // TODO Auto-generated catch block   
  34.             e.printStackTrace();  
  35.         }   
  36.         return   "cut" ;  
  37.     }  
public String cut()
	{
		String fileName = getRequest().getParameter("fileName");//图片路径+图片名称
		String txt_width = getRequest().getParameter("txt_width");//缩放后宽
		String txt_height = getRequest().getParameter("txt_height");//缩放后高
		String txt_top = getRequest().getParameter("txt_top");//x坐标
		String txt_left = getRequest().getParameter("txt_left");//y坐标
		String txt_DropWidth = getRequest().getParameter("txt_DropWidth");//剪切宽
		String txt_DropHeight = getRequest().getParameter("txt_DropHeight");//剪切高
		String filePath = getRequest().getSession().getServletContext().getRealPath("/")+"attachFiles\\"+fileName;
		
		
		String cutFilePath = getRequest().getSession().getServletContext().getRealPath("/")+"attachFiles\\cut\\"+fileName;
		File fileList = new File(getRequest().getSession().getServletContext().getRealPath("/")+"attachFiles\\cut\\");
		if(!fileList.exists())
		{
			fileList.mkdirs();
		}
		try {
			 System.setProperty("jmagick.systemclassloader","no");
			 ImageInfo info = new ImageInfo(filePath);
			 
			 MagickImage image = new MagickImage(info); 
			 MagickImage cropped = null;
			 MagickImage scaleImg = image.scaleImage(Integer.valueOf(txt_width), Integer.valueOf(txt_height));//缩放图片
			 Rectangle rect = new Rectangle (Integer.valueOf(txt_left),Integer.valueOf(txt_top),Integer.valueOf(txt_DropWidth),Integer.valueOf(txt_DropHeight));
			 cropped = scaleImg.cropImage(rect);//剪切图片
			 cropped.setFileName(cutFilePath); 
			 cropped .writeImage(info);
			 getRequest().setAttribute("cutImagePath", getRequest().getContextPath()+"/attachFiles/cut/"+fileName);
			 
		} catch (MagickException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		return "cut";
	}

 

 

对图片进行缩放剪切并添加水印

Java代码
  1. public  String watermark()  
  2.     {  
  3.         String fileName = getRequest().getParameter("fileName" ); //图片路径+名字   
  4.         String logoFileName = getRequest().getParameter("logoFileName" ); //水印图片历经+名字   
  5.         Integer txt_width = Integer.valueOf(getRequest().getParameter("txt_width" )); //缩放后宽   
  6.         Integer txt_height = Integer.valueOf(getRequest().getParameter("txt_height" )); //缩放后高   
  7.         Integer txt_top = Integer.valueOf(getRequest().getParameter("txt_top" )); //x坐标   
  8.         Integer txt_left = Integer.valueOf(getRequest().getParameter("txt_left" )); //y坐标   
  9.         Integer txt_DropWidth = Integer.valueOf(getRequest().getParameter("txt_DropWidth" )); //剪切宽度   
  10.         Integer txt_DropHeight = Integer.valueOf(getRequest().getParameter("txt_DropHeight" )); //剪切高度   
  11.         String filePath = getRequest().getSession().getServletContext().getRealPath("/" )+ "attachFiles\\" +fileName;  
  12.         String logoImagPath = getRequest().getSession().getServletContext().getRealPath("/" )+ "attachFiles\\logo\\" +logoFileName;  
  13.         String flag = getRequest().getParameter("flag" );  
  14.           
  15.         String cutFilePath = getRequest().getSession().getServletContext().getRealPath("/" )+ "attachFiles\\cut\\" +fileName;  
  16.         File fileList = new  File(getRequest().getSession().getServletContext().getRealPath( "/" )+ "attachFiles\\cut\\" );  
  17.         if (!fileList.exists())  
  18.         {  
  19.             fileList.mkdirs();  
  20.         }  
  21.         try  {  
  22.              System.setProperty("jmagick.systemclassloader" , "no" );  
  23.              ImageInfo info = new  ImageInfo(filePath);  
  24.                
  25.              MagickImage image = new  MagickImage(info);   
  26.              MagickImage cropped = null ;  
  27.              MagickImage fLogo = null ;  
  28.              MagickImage sLogo = null ;  
  29.              Dimension logoDim = null ;  
  30.                
  31.              MagickImage scaleImg = image.scaleImage(txt_width, txt_height);  
  32.              Rectangle rect = new  Rectangle (txt_left,txt_top,txt_DropWidth,txt_DropHeight);  
  33.              cropped = scaleImg.cropImage(rect);  
  34.              fLogo = new  MagickImage( new  ImageInfo(logoImagPath));  
  35.              logoDim = fLogo.getDimension();  
  36.              int  lw = txt_DropWidth /  4 ;  
  37.              int  lh = logoDim.height * lw / logoDim.width;  
  38.              sLogo = fLogo.scaleImage(lw, lh);  
  39.              //水印出现在左上方   
  40.              if (flag.equals( "leftTop" ))  
  41.              {  
  42.                  cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,  
  43.                          lh / 10 , lh /  10 );  
  44.              }  
  45.              else   if (flag.equals( "rightTop" ))  
  46.              {  
  47.                  cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,  
  48.                          txt_DropWidth - (lw + lh / 10 ), lh /  10 );  
  49.              }  
  50.              else   if (flag.equals( "middle" ))  
  51.              {  
  52.                  cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,  
  53.                          (txt_DropWidth - lw)/2 , (txt_DropHeight-lh)/ 2 );  
  54.              }  
  55.              else   if (flag.equals( "leftBottom" ))  
  56.              {  
  57.                  cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,  
  58.                          lh / 10 , txt_DropHeight - (lh + lh /  10 ));  
  59.              }  
  60.              else   
  61.              {  
  62.                  cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,  
  63.                          txt_DropWidth - (lw + lh / 10 ), txt_DropHeight - (lh + lh /  10 ));  
  64.              }  
  65.              cropped.setFileName(cutFilePath);  
  66.              cropped.writeImage(info);  
  67.              getRequest().setAttribute("cutImagePath" , getRequest().getContextPath()+ "/attachFiles/cut/" +fileName);  
  68.                
  69.         } catch  (MagickException e) {  
  70.             // TODO Auto-generated catch block   
  71.             e.printStackTrace();  
  72.         }   
  73.         return   "cut" ;  
  74.     }  
public String watermark()
	{
		String fileName = getRequest().getParameter("fileName");//图片路径+名字
		String logoFileName = getRequest().getParameter("logoFileName");//水印图片历经+名字
		Integer txt_width = Integer.valueOf(getRequest().getParameter("txt_width"));//缩放后宽
		Integer txt_height = Integer.valueOf(getRequest().getParameter("txt_height"));//缩放后高
		Integer txt_top = Integer.valueOf(getRequest().getParameter("txt_top"));//x坐标
		Integer txt_left = Integer.valueOf(getRequest().getParameter("txt_left"));//y坐标
		Integer txt_DropWidth = Integer.valueOf(getRequest().getParameter("txt_DropWidth"));//剪切宽度
		Integer txt_DropHeight = Integer.valueOf(getRequest().getParameter("txt_DropHeight"));//剪切高度
		String filePath = getRequest().getSession().getServletContext().getRealPath("/")+"attachFiles\\"+fileName;
		String logoImagPath = getRequest().getSession().getServletContext().getRealPath("/")+"attachFiles\\logo\\"+logoFileName;
		String flag = getRequest().getParameter("flag");
		
		String cutFilePath = getRequest().getSession().getServletContext().getRealPath("/")+"attachFiles\\cut\\"+fileName;
		File fileList = new File(getRequest().getSession().getServletContext().getRealPath("/")+"attachFiles\\cut\\");
		if(!fileList.exists())
		{
			fileList.mkdirs();
		}
		try {
			 System.setProperty("jmagick.systemclassloader","no");
			 ImageInfo info = new ImageInfo(filePath);
			 
			 MagickImage image = new MagickImage(info); 
			 MagickImage cropped = null;
			 MagickImage fLogo = null;
			 MagickImage sLogo = null;
			 Dimension logoDim = null;
			 
			 MagickImage scaleImg = image.scaleImage(txt_width, txt_height);
			 Rectangle rect = new Rectangle (txt_left,txt_top,txt_DropWidth,txt_DropHeight);
			 cropped = scaleImg.cropImage(rect);
			 fLogo = new MagickImage(new ImageInfo(logoImagPath));
			 logoDim = fLogo.getDimension();
			 int lw = txt_DropWidth / 4;
			 int lh = logoDim.height * lw / logoDim.width;
			 sLogo = fLogo.scaleImage(lw, lh);
			 //水印出现在左上方
			 if(flag.equals("leftTop"))
			 {
				 cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,
						 lh / 10, lh / 10);
			 }
			 else if(flag.equals("rightTop"))
			 {
				 cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,
						 txt_DropWidth - (lw + lh / 10), lh / 10);
			 }
			 else if(flag.equals("middle"))
			 {
				 cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,
						 (txt_DropWidth - lw)/2, (txt_DropHeight-lh)/2);
			 }
			 else if(flag.equals("leftBottom"))
			 {
				 cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,
						 lh / 10, txt_DropHeight - (lh + lh / 10));
			 }
			 else
			 {
				 cropped.compositeImage(CompositeOperator.AtopCompositeOp, sLogo,
						 txt_DropWidth - (lw + lh / 10), txt_DropHeight - (lh + lh / 10));
			 }
			 cropped.setFileName(cutFilePath);
			 cropped.writeImage(info);
			 getRequest().setAttribute("cutImagePath", getRequest().getContextPath()+"/attachFiles/cut/"+fileName);
			 
		} catch (MagickException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		return "cut";
	}

 

锐化图片

Java代码
  1. //锐化   
  2.     public   void  sharpen(String filePath,String savePath)  
  3.     {  
  4.         ImageInfo info = null ;  
  5.         MagickImage image = null ;  
  6.         MagickImage sharpened = null ;  
  7.         try  {  
  8.             info = new  ImageInfo(filePath);  
  9.             image = new  MagickImage(info);  
  10.             sharpened = image.sharpenImage(1.0 5.0 );  
  11.             sharpened.setFileName(savePath);  
  12.           
  13.         sharpened.writeImage(info);  
  14.         } catch  (MagickException e) {  
  15.             // TODO Auto-generated catch block   
  16.             e.printStackTrace();  
  17.         }  
  18.         finally  {  
  19.             if  (image !=  null ) {  
  20.                 image.destroyImages();  
  21.             }  
  22.         }  
  23.     }  
//锐化
	public void sharpen(String filePath,String savePath)
	{
		ImageInfo info = null;
		MagickImage image = null;
		MagickImage sharpened = null;
		try {
			info = new ImageInfo(filePath);
			image = new MagickImage(info);
			sharpened = image.sharpenImage(1.0, 5.0);
			sharpened.setFileName(savePath);
		
		sharpened.writeImage(info);
		} catch (MagickException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally {
			if (image != null) {
				image.destroyImages();
			}
		}
	}

 最后:不要忘了这句话

Java代码
  1. System.setProperty( "jmagick.systemclassloader" "no" ); 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics