`
frank1998819
  • 浏览: 752059 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Java图片处理的类库:SimpleImage(转)

    博客分类:
  • Java
 
阅读更多

介绍

Java下处理图形是一件很头疼的工作, 这方面Java虽然提供了JAI/ImageIO API组件让程序员可以完成大量的操作, 但是, 由于固有一些缺陷, 导致应用的稳定性/常用功能受到极大的影响。 另外一些C/C++制作的图形库存在各种各样的问题, 比如由之封装的Java API JImageMagic, 稍微大点压力的群集可能每天造成数次的崩溃 。

SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。

SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对ImageRender类的引用。

ReadRedner可以理解成一个组件,不是一个装饰者,因为ReadRender是所有渲染操作的第一步。 其他的子类DrawTextRender(水印处理),ScaleRender(缩略处理),WriterRender(输出)都是装饰者。

使用示例

[java] 预览复制
 
 
  1. package cn.wuzhuti;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileOutputStream;  
  6. import org.apache.commons.io.IOUtils;  
  7. import com.alibaba.simpleimage.ImageRender;  
  8. import com.alibaba.simpleimage.SimpleImageException;  
  9. import com.alibaba.simpleimage.render.ReadRender;  
  10. import com.alibaba.simpleimage.render.ScaleParameter;  
  11. import com.alibaba.simpleimage.render.ScaleRender;  
  12. import com.alibaba.simpleimage.render.WriteRender;  
  13.   
  14. public class Example {  
  15.   
  16.     public static void main(String[] args) {   
  17.         File in = new File("d:/source.jpg");      //原图片  
  18.         File out = new File("d:/dest.jpg");       //目的图片  
  19.         ScaleParameter scaleParam = new ScaleParameter(10241024);  //将图像缩略到1024x1024以内,不足1024x1024则不做任何处理  
  20.           
  21.         FileInputStream inStream = null;  
  22.         FileOutputStream outStream = null;  
  23.         WriteRender wr = null;  
  24.         try {  
  25.             inStream = new FileInputStream(in);  
  26.             outStream = new FileOutputStream(out);  
  27.             ImageRender rr = new ReadRender(inStream);  
  28.             ImageRender sr = new ScaleRender(rr, scaleParam);  
  29.             wr = new WriteRender(sr, outStream);  
  30.           
  31.             wr.render();                            //触发图像处理  
  32.         } catch(Exception e) {  
  33.             e.printStackTrace();  
  34.         } finally {  
  35.             IOUtils.closeQuietly(inStream);         //图片文件输入输出流必须记得关闭  
  36.             IOUtils.closeQuietly(outStream);  
  37.             if (wr != null) {  
  38.                 try {  
  39.                     wr.dispose();                   //释放simpleImage的内部资源  
  40.                 } catch (SimpleImageException ignore) {  
  41.                     // skip ...   
  42.                 }  
  43.             }  
  44.         }  
  45.     }  
  46. }  

项目地址

依赖jar

commons-io.jar  下载地址

jai_codec.jar 下载地址

jai_core.jar 下载地址

常见问题

1.Linux系统下异常。

项目在windows中使用没有问题,而到Linux系统中,出现:

java.lang.NoClassDefFoundError:

Could not initializeclass sun.awt.image.code.JPEGImageEncoderImpl

这是因为java虚拟机在处理图片时,需要本地的x-server的支持;解决方案如下:

在java启动时加上参数:-Djava.awt.headless=true

例如:我们在启动tomcat时,在启动命令行里面加上这个参数即可。

或者在tomcat的catalina.sh中添加参数:

[shell] 预览复制
 
 
  1. ...  
  2. # LOGGING_CONFIG (Optional) Override Tomcat's logging config file  
  3. # Example (all one line)  
  4. # LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"  
  5. #  
  6. # LOGGING_MANAGER (Optional) Override Tomcat's logging manager  
  7. # Example (all one line)  
  8. # LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"  
  9. # -----------------------------------------------------------------------------  
  10.   
  11. JAVA_OPTS="-Djava.awt.headless=true" #启动参数  
  12.   
  13. # OS specific support. $var _must_ be set to either true or false.  
  14. cygwin=false  
  15. darwin=false  
 
0
 
0
分享到:
评论

相关推荐

    Java图片处理类库SimpleImage.zip

    SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...

    阿里云图片压缩SimpleImage jar

    总结,阿里云SimpleImage是Java开发者的强大图片处理工具,能够轻松实现图片压缩和裁剪,帮助优化图片质量和大小,适用于各种需要处理图片的场景。通过简单易懂的API,开发者可以快速集成到自己的项目中,提高图片...

    阿里巴巴 simpleimage 图片处理工具类 功能 等比例缩放 裁切 加水印 复合操作例子和jar包

    阿里巴巴的SimpleImage是一款高效、易用的图片处理工具类,主要应用于Java开发环境中。这款工具提供了丰富的功能,包括等比例缩放、裁切、添加水印以及复合操作等,极大地简化了开发者对图像进行后期处理的工作流程...

    simpleimage-1.2.3.jar

    SimpleImage是阿里巴巴开源的一款轻量级的Java图片处理库,主要服务于那些对图片处理有需求但不想引入庞大如Apache Commons Imaging或ImageMagick等复杂库的项目。它提供了一系列简洁易用的API,涵盖了图片的基本...

    阿里巴巴SimpleImage图片压缩相关jar

    aliSimpleImage.jar是对SimpleImage中simpleimage.core\src\main\java文件打包。 SimpleImage github地址:https://github.com/alibaba/simpleimage 测试代码: public static void main(String[] args) { File in...

    simpleimage&jai-core.rar

    在Java开发中,图片处理是一项常见的任务,涉及到各种操作,如裁剪、缩放、旋转、格式转换等。"simpleimage&jai-core.rar"这个压缩包提供了两个关键的库,即SimpleImage和JAI Core,它们对于Java开发者来说是非常...

    java图片处理

    在Java编程语言中,图片处理是一项常见的任务,特别是在多媒体应用或者网页开发中。本文将深入探讨如何使用Java来处理图片,特别是BMP格式的图片,以及实现各种图片特效。 首先,我们要了解BMP(Bitmap)格式,这是...

    simpleImage

    SimpleImage 是一个专门为简化图像处理而设计的工具库,它提供了丰富的功能,使得开发者能够方便地进行图像的读取、显示、保存以及多种图像操作。在这个名为 "SimpleImage-For_2010" 的压缩包文件中,我们可以期待...

    阿里巴巴图片处理simpleimage-1.2.3.jar

    阿里巴巴图片处理simpleimage-1.2.3.jar

    simpleimage-1.2.0-sources

    SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...

    simpleImageTool图片格式转换缩放java库

    simpleImageTool又一个简单、好用的图片格式转换、缩放水印叠加等功能的纯Java图片工具库。 simpleImageTool的由来,近期需要用到图片处理,通过网上的图片流直接进行缩放水印叠加等,需要一个纯java的处理库,在...

    simpleImage所需要的6个jar包

    "SimpleImage"可能是某种图像处理或图形显示的库,它依赖于特定的jar(Java Archive)包来运行。jar包是Java平台特有的归档格式,包含编译后的Java类文件、资源文件以及相关的元数据。当我们看到"simpleImage所需要...

    PHP图片等比缩放类SimpleImage使用方法和使用实例分享

    PHP作为一门流行的服务器端编程语言,提供了丰富的图片处理库,而SimpleImage就是其中的一个轻量级图片处理类,它支持图片的等比缩放,具有简洁的接口和较高的执行效率。 首先,SimpleImage类的基本使用方法包括...

    阿里26款Java开源项目(附源码).docx

    10. **SimpleImage**:SimpleImage是阿里巴巴的Java图片处理库,支持图片缩略图和水印功能,为开发者提供便捷的图片处理手段。 11. **Tedis**:Tedis是Redis的Java客户端,致力于提供一个高可用的Redis解决方案,...

    myimage:对图片的裁剪,压缩,旋转等

    `myimage`项目就是针对这些需求而设计的一个工具,它利用了JDK自带的图像处理功能,以及第三方库如thumbnailator、simpleimage和im4java来增强功能。下面将详细介绍这些知识点。 1. **JDK内置的图像处理**: JDK...

    SimpleImage.zip

    支持图片裁剪,加水印,加文字,压缩等功能的php图片处理类。 try { // Create a new SimpleImage object $image = new \claviska\SimpleImage(); // Magic! ✨ $image ->fromFile('image.jpg') // load image....

    PHP图片封装类

    `SimpleImage.php`文件提供了一个简洁而强大的PHP类,用于简化图片处理任务。这个类由Simon Jarvis编写,遵循GPLv2开源协议,允许开发者自由地使用、修改和分发代码。 #### 类的功能概览 `SimpleImage`类主要提供...

    图片缩放处理+图片水印的添加

    html,jsp图片在java中的缩放处理和加水印功能 主要有图片和文字水印

    simpleImage需要的资源包jai_core

    Java Advanced Imaging (JAI) Core 是一个用于处理图像的库,它提供了丰富的图像操作功能,如旋转、缩放、裁剪、色彩空间转换等。在Java应用程序中,特别是在图像处理和分析方面,JAI Core是一个重要的工具。...

Global site tag (gtag.js) - Google Analytics