`
ssxxjjii
  • 浏览: 950459 次
  • 性别: 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" ); 
分享到:
评论

相关推荐

    Jmagick32位的和Jmagick64位的Jmagick.dll,Jmagick.jar

    Jmagick广泛应用于图像的转换、裁剪、缩放、颜色调整、合成等多种操作。例如,一个Web应用可能使用Jmagick来动态生成缩略图,或者在上传图片时进行预处理,以确保符合规定的尺寸和格式。 总的来说,Jmagick提供了...

    jmagick jmagick.jar jmagick资料

    里面包括jmagick 所需所有文件,jmagick.dll,jmagick.jar 还有安装文件, 以及linux安装说明! jmagick jmagick.jar jmagick资料 jmagick缩略图 jmagick jmagick.jar jmagick资料 jmagick缩略图

    jmagick-win-6.3.9-Q16

    6. 效果滤镜:JMagick提供了多种滤镜效果,如模糊、锐化、边框等,可以增强图像的艺术表现力。 7. 层次操作:支持图像的合并和分离,以及调整各层的透明度。 8. 文本添加:可以方便地在图像上添加文字,创建水印或...

    jmagick6.4.0

    2. **图像处理操作**:JMagick允许开发者进行一系列图像处理操作,如旋转、缩放、裁剪、调整颜色、添加边框、合并图像、模糊、锐化、颜色分离等。 3. **颜色空间转换**:支持RGB、CMYK、灰度、索引颜色等多种颜色...

    jmagick.jar 用法

    3. **处理图像**:JMagick 提供了一系列方法来进行图像处理,如缩放、旋转、裁剪等。例如,`resizeImage()` 方法用于调整图像大小,`rotateImage()` 方法用于旋转图像,`cropImage()` 方法用于裁剪图像。 4. **保存...

    JMagick图片处理

    JMagick允许开发者指定水印的位置、透明度、字体和颜色,以创建个性化的水印效果。 **切图**是指从原始图像中裁剪出特定区域,这在需要提取图片的某个部分或者制作特定尺寸的图片时非常有用。JMagick提供了精确的...

    jmagick.zip

    3. 图像颜色和滤镜效果:可以改变图像的色彩模式,添加各种滤镜效果,如模糊、锐化等。 4. 图像合成:支持多张图像的组合,如拼接、叠加等。 5. 文字和形状的添加:可以在图像上添加文字、线条、形状等元素。 6. ...

    jmagick安装和配置

    **JMagick安装与配置详解** JMagick是一款强大的Java接口,它允许Java应用程序与ImageMagick图像处理库进行交互,从而实现丰富的图像操作功能。本文将详细介绍如何在Java环境中安装和配置JMagick,以及如何使用提供...

    jmagick 例子

    《JMagick:Java 图像处理的利器与内存管理策略》 在计算机视觉和Web开发领域,图像处理是一项至关重要的任务。Java作为一种广泛使用的编程语言,提供了多种图像处理库,其中JMagick是一个非常实用的工具,它为Java...

    jmagick-win-5.5.7-Q8.zip

    例如,一个常见的应用场景是用户上传一张大尺寸的照片,服务器端可以通过JMagick进行自动缩放,减少存储空间并加快网页加载速度。 总的来说,JMagick结合ImageMagick,为Java开发者提供了一个强大的图像处理工具,...

    java 水印(水印适应图片大小,但个别图片太小不支持)

    要实现在Java中添加水印,我们可以利用开源的图像处理库,如Apache Commons Imaging(原名:Sanselan)、ImageMagick的Java绑定(JMagick)或Java Advanced Imaging (JAI)。这里以Apache Commons Imaging为例,因为...

    jmagick-win-6.3.9

    - 图像处理服务:在服务器端,JMagick可以作为后台服务,对用户上传的图片进行自动化处理,如生成缩略图、调整尺寸、添加水印等。 - 数据可视化:在数据科学领域,JMagick可以帮助将复杂的数据转换成可视化的图像,...

    jmagick图片处理

    jmagick处理图片,图片高质量压缩,图片加水印。

    JMagick-5.5.6-0.tar.gz

    5. 文本处理:可以添加文本到图像上,调整字体、颜色、位置等属性,适用于制作水印、标题等。 6. 图像分析:包括颜色统计、直方图计算等,可用于图像的质量评估和分析。 在Java Web应用中,JMagick可以通过Ajax技术...

    Jmagick圖片處理

    Jmagick 是一个 Java 接口,用于 ImageMagick 图形库,它提供了一系列强大的功能,包括图片缩放、翻转、添加水印等复杂的图形处理操作。这些功能在很多应用中都非常有用,例如在 Web 应用程序中优化用户上传的图片...

    jmagick 用法

    JMagick 提供了丰富的 API 来进行图像处理,如缩放、裁剪、旋转、颜色调整等。以下是一些常见操作的例子: - **缩放图像**: ```java image.scale(new Dimension(800, 600)); // 将图像缩放到指定尺寸 ``` - **...

    jmagick linux file

    jmagick image generate or operator library

    ImageMagick-6.3.9+jmagick组合

    它可以进行调整大小、裁剪、旋转、色彩调整、添加边框、文字水印等操作,还能创建复杂的图像合成效果。 2. **命令行工具**:ImageMagick提供了许多命令行工具,如`convert`、`display`、` composite`等,方便开发者...

    JMagick-6.0.4-0.tar

    JMagick-6.0.4-0.tar 下载

    jmagick 软件、安装说明(window和linux两个版本)

    通过JMagick,开发者可以在Java环境中无缝地进行图像处理操作,如缩放、裁剪、旋转、调整颜色等。 **1. JMagick的基本概念** - **Java接口**: JMagick是ImageMagick与Java之间的桥梁,提供了一系列Java类和方法,...

Global site tag (gtag.js) - Google Analytics