介绍
Java下处理图形是一件很头疼的工作, 这方面Java虽然提供了JAI/ImageIO API组件让程序员可以完成大量的操作, 但是, 由于固有一些缺陷, 导致应用的稳定性/常用功能受到极大的影响。 另外一些C/C++制作的图形库存在各种各样的问题, 比如由之封装的Java API JImageMagic, 稍微大点压力的群集可能每天造成数次的崩溃 。
SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。
SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对ImageRender类的引用。
ReadRedner可以理解成一个组件,不是一个装饰者,因为ReadRender是所有渲染操作的第一步。 其他的子类DrawTextRender(水印处理),ScaleRender(缩略处理),WriterRender(输出)都是装饰者。
使用示例
- package cn.wuzhuti;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import org.apache.commons.io.IOUtils;
- import com.alibaba.simpleimage.ImageRender;
- import com.alibaba.simpleimage.SimpleImageException;
- import com.alibaba.simpleimage.render.ReadRender;
- import com.alibaba.simpleimage.render.ScaleParameter;
- import com.alibaba.simpleimage.render.ScaleRender;
- import com.alibaba.simpleimage.render.WriteRender;
- public class Example {
- public static void main(String[] args) {
- File in = new File("d:/source.jpg"); //原图片
- File out = new File("d:/dest.jpg"); //目的图片
- ScaleParameter scaleParam = new ScaleParameter(1024, 1024); //将图像缩略到1024x1024以内,不足1024x1024则不做任何处理
- FileInputStream inStream = null;
- FileOutputStream outStream = null;
- WriteRender wr = null;
- try {
- inStream = new FileInputStream(in);
- outStream = new FileOutputStream(out);
- ImageRender rr = new ReadRender(inStream);
- ImageRender sr = new ScaleRender(rr, scaleParam);
- wr = new WriteRender(sr, outStream);
- wr.render(); //触发图像处理
- } catch(Exception e) {
- e.printStackTrace();
- } finally {
- IOUtils.closeQuietly(inStream); //图片文件输入输出流必须记得关闭
- IOUtils.closeQuietly(outStream);
- if (wr != null) {
- try {
- wr.dispose(); //释放simpleImage的内部资源
- } catch (SimpleImageException ignore) {
- // skip ...
- }
- }
- }
- }
- }
项目地址
依赖jar
commons-io.jar 下载地址
jai_codec.jar 下载地址
jai_core.jar 下载地址
常见问题
1.Linux系统下异常。
项目在windows中使用没有问题,而到Linux系统中,出现:
java.lang.NoClassDefFoundError:
Could not initialize
class sun.awt.image.code.JPEGImageEncoderImpl
这是因为java虚拟机在处理图片时,需要本地的x-server的支持;解决方案如下:
在java启动时加上参数:-Djava.awt.headless=true
例如:我们在启动tomcat时,在启动命令行里面加上这个参数即可。
或者在tomcat的catalina.sh中添加参数:
- ...
- # LOGGING_CONFIG (Optional) Override Tomcat's logging config file
- # Example (all one line)
- # LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
- #
- # LOGGING_MANAGER (Optional) Override Tomcat's logging manager
- # Example (all one line)
- # LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
- # -----------------------------------------------------------------------------
- JAVA_OPTS="-Djava.awt.headless=true" #启动参数
- # OS specific support. $var _must_ be set to either true or false.
- cygwin=false
- darwin=false
相关推荐
SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...
阿里巴巴的SimpleImage是一款高效、易用的图片处理工具类,主要应用于Java开发环境中。这款工具提供了丰富的功能,包括等比例缩放、裁切、添加水印以及复合操作等,极大地简化了开发者对图像进行后期处理的工作流程...
总结,阿里云SimpleImage是Java开发者的强大图片处理工具,能够轻松实现图片压缩和裁剪,帮助优化图片质量和大小,适用于各种需要处理图片的场景。通过简单易懂的API,开发者可以快速集成到自己的项目中,提高图片...
SimpleImage是阿里巴巴开源的一款轻量级的Java图片处理库,主要服务于那些对图片处理有需求但不想引入庞大如Apache Commons Imaging或ImageMagick等复杂库的项目。它提供了一系列简洁易用的API,涵盖了图片的基本...
aliSimpleImage.jar是对SimpleImage中simpleimage.core\src\main\java文件打包。 SimpleImage github地址:https://github.com/alibaba/simpleimage 测试代码: public static void main(String[] args) { File in...
在Java开发中,图片处理是一项常见的任务,涉及到各种操作,如裁剪、缩放、旋转、格式转换等。"simpleimage&jai-core.rar"这个压缩包提供了两个关键的库,即SimpleImage和JAI Core,它们对于Java开发者来说是非常...
在Java编程语言中,图片处理是一项常见的任务,特别是在多媒体应用或者网页开发中。本文将深入探讨如何使用Java来处理图片,特别是BMP格式的图片,以及实现各种图片特效。 首先,我们要了解BMP(Bitmap)格式,这是...
SimpleImage 是一个专门为简化图像处理而设计的工具库,它提供了丰富的功能,使得开发者能够方便地进行图像的读取、显示、保存以及多种图像操作。在这个名为 "SimpleImage-For_2010" 的压缩包文件中,我们可以期待...
阿里巴巴图片处理simpleimage-1.2.3.jar
SimpleImage是阿里巴巴的一个Java图片处理的类库,可以实现图片缩略、水印等处理。 SimpleImage中的ImageRender是图片处理的基类,它是一个抽象类,我们看到,该类中定义了一个抽象方法render(),同时持有一个对...
simpleImageTool又一个简单、好用的图片格式转换、缩放水印叠加等功能的纯Java图片工具库。 simpleImageTool的由来,近期需要用到图片处理,通过网上的图片流直接进行缩放水印叠加等,需要一个纯java的处理库,在...
"SimpleImage"可能是某种图像处理或图形显示的库,它依赖于特定的jar(Java Archive)包来运行。jar包是Java平台特有的归档格式,包含编译后的Java类文件、资源文件以及相关的元数据。当我们看到"simpleImage所需要...
PHP作为一门流行的服务器端编程语言,提供了丰富的图片处理库,而SimpleImage就是其中的一个轻量级图片处理类,它支持图片的等比缩放,具有简洁的接口和较高的执行效率。 首先,SimpleImage类的基本使用方法包括...
10. **SimpleImage**:SimpleImage是阿里巴巴的Java图片处理库,支持图片缩略图和水印功能,为开发者提供便捷的图片处理手段。 11. **Tedis**:Tedis是Redis的Java客户端,致力于提供一个高可用的Redis解决方案,...
`myimage`项目就是针对这些需求而设计的一个工具,它利用了JDK自带的图像处理功能,以及第三方库如thumbnailator、simpleimage和im4java来增强功能。下面将详细介绍这些知识点。 1. **JDK内置的图像处理**: JDK...
支持图片裁剪,加水印,加文字,压缩等功能的php图片处理类。 try { // Create a new SimpleImage object $image = new \claviska\SimpleImage(); // Magic! ✨ $image ->fromFile('image.jpg') // load image....
`SimpleImage.php`文件提供了一个简洁而强大的PHP类,用于简化图片处理任务。这个类由Simon Jarvis编写,遵循GPLv2开源协议,允许开发者自由地使用、修改和分发代码。 #### 类的功能概览 `SimpleImage`类主要提供...
html,jsp图片在java中的缩放处理和加水印功能 主要有图片和文字水印
Java Advanced Imaging (JAI) Core 是一个用于处理图像的库,它提供了丰富的图像操作功能,如旋转、缩放、裁剪、色彩空间转换等。在Java应用程序中,特别是在图像处理和分析方面,JAI Core是一个重要的工具。...