需求背景:
去年对图片做批量处理,也就是把原始图片处理成所需的图片,包括缩放所用到的以便做前台调用处理同时实现离线图片操作。
调研思路:
1.java原始的imageio,详情参见以前博客
基于javax.imageio的图片缩放和图片剪裁
2.三方native工具,此处是imagemagick,接口基于im4java,其实imagemagick的接口有多种,但是im4java做的仅仅是命令行的转换,然后利用imagemagick去操作
环境:
依赖:
<dependency> <groupId>org.im4java</groupId> <artifactId>im4java</artifactId> <version>1.2.0</version> </dependency>
ImageMagick-6.7.6-Q16安装:
${ImageMagick_home}=D:/tools/tool/ImageMagick-6.7.6-Q16
代码实现:
缩放:
public static void scale(String srcFile, String dstFile, int dstWidth, int dstHeight) { try { IMOperation imOperation = new IMOperation(); imOperation.addImage(srcFile); imOperation.resize(dstWidth, dstHeight); imOperation.addImage(dstFile); ConvertCmd convert = new ConvertCmd(); convert.setSearchPath(imageMagickPath); convert.run(imOperation); } catch (Exception e) { e.printStackTrace(); } }
剪裁:
public static void cut(String srcFile, String dstFile, int x, int y, int widthRange, int heightRange) { try { IMOperation imOperation = new IMOperation(); imOperation.addImage(srcFile); imOperation.crop(widthRange, heightRange, x, y); imOperation.addImage(dstFile); ConvertCmd convert = new ConvertCmd(); convert.setSearchPath(imageMagickPath); convert.run(imOperation); } catch (Exception e) { e.printStackTrace(); } }
测试:
private final static String imageMagickPath = "D:/tools/tool/ImageMagick-6.7.6-Q16"; public static void main(String[] args) throws Exception { String srcFile = "G:/1.jpg"; String dstFile = "G:/test.jpg"; int dstHeight = 200; int dstWidth = 200; scale(srcFile, dstFile, dstWidth, dstHeight); int x = 10; int y = 10; int widthRange = 500; int heightRange = 600; cut(srcFile, dstFile, x, y, widthRange, heightRange); }
注意事项:
1.上述代码由于公司协议是经过处理的,如果直接使用请注意扩展性,异常处理等相关事宜
相关推荐
通过`imagick`扩展,您可以执行诸如图片缩放、裁剪、旋转、颜色调整等操作。例如,缩放图像: ```php $im = new Imagick('input.jpg'); $im->resizeImage(800, 0, Imagick::FILTER_LANCZOS, 1); $im->writeImage('...
它提供了与ImageMagick底层C++ API的桥梁,使得Delphi开发者可以直接在Delphi代码中调用ImageMagick的各种图像处理函数,如转换、裁剪、缩放、旋转、颜色调整等。 MagickImage.pas:这个文件定义了图像对象类,用于...
ASP图片裁剪系统是一种基于ASP(Active Server Pages)技术,结合JavaScript和HTML构建的Web应用程序,主要用于处理图像的在线裁剪功能。这个系统的核心目的是让用户能够通过浏览器上传图片,并在前端进行实时预览和...
Imagick则提供了更强大的图像处理功能,它基于ImageMagick,可以处理更多种类的图像格式,并且在性能和效果上通常优于GD库。 在头像处理方面,系统可能采用以下步骤:首先,用户通过Flash上传原始图片;然后,...
Imagick则基于ImageMagick,功能更为强大,支持更多的图像格式和复杂的图像操作。 这款PHP图片裁切工具正是基于GD库或Imagick实现的。它允许用户指定图片的裁切区域,通过调整坐标和宽高比例,可以精确地裁剪出所需...
在现代Web应用中,用户体验是至关重要的,而无刷新上传和图片剪裁功能可以极大地提升用户的交互体验。本文将深入探讨如何使用ASP.NET和jQuery技术来实现这一目标。ASP.NET是一个强大的Web应用程序框架,提供了丰富的...
在Struts2 Action中,我们需要解析接收到的裁剪参数,例如左上角坐标、宽度和高度,然后使用ImageMagick或Java的ImageIO等库处理图片。这些库可以读取原始图片,根据裁剪参数创建一个新的裁剪区域,最后保存裁剪后的...
在IT行业中,图片上传和裁剪是常见的交互功能,尤其在网页和移动应用设计中尤为重要。这个名为"图片上传、裁剪"的压缩包提供的是一个示例(demo),用于演示如何实现图片上传并具备裁剪、放大和缩小等功能。下面我们...
`jQuery Jcrop`是一个流行的JavaScript库,它允许用户在浏览器端进行图像选择、裁剪和截图操作,进而实现上传到服务器并保存。这个库是基于jQuery构建的,因此可以方便地与现有的jQuery应用集成,提供了丰富的API和...
ASP.NET JS图片剪裁是一种常见的前端图像处理技术,它结合了服务器端的ASP.NET和客户端的JavaScript技术,允许用户在网页上预览并裁剪图片。这种技术在上传头像、产品图片编辑或任何需要用户自定义图片尺寸的应用...
这个"asp.net 上传图片 预览+裁剪demo"就是一个很好的示例,它基于.NET框架3.5,并利用Flash技术来实现图片的预览和裁剪功能。 首先,我们要理解ASP.NET中的文件上传机制。ASP.NET提供了HttpFileCollection类,用于...
图片缩放可以通过调整图像的宽度和高度来实现,可以使用`BufferedImage`类的`getSubimage()`方法截取部分图像,再用`resize()`方法调整大小。注意保持图像比例,防止拉伸失真。 4. **图像裁剪** 图片裁剪涉及到...
总结,"hippo" 是一个使用 Java 开发的 HTTP 服务,其核心功能是整合 FastDFS 的文件存储能力和 GraphicsMagick 或 ImageMagick 的图像处理能力,为用户提供快速、可靠的图片缩放服务。通过这样的设计,"hippo" 可以...
在PHP中,Imagick模块是一个强大的图像处理库,它基于ImageMagick,提供了丰富的功能,包括图片的缩放、裁剪和压缩。本示例将详细介绍如何利用Imagick来实现这些操作。 首先,安装Imagick扩展是必要的。在PHP环境中...
ImageMagick 是一个功能强大的图像处理软件,支持多种图像格式,能够执行包括转换、裁剪、缩放、旋转、添加边框等在内的各种图像操作。 首先,我们来了解一下 ImageMagick。ImageMagick 是一套开源的跨平台工具集,...
Imagick库基于ImageMagick,提供了更高级的功能,包括复杂的滤镜和特效,以及更好的图片裁剪性能。在本实例中,可能会使用到GD库或者Imagick库来实现图片裁剪。 2. **基本概念** - 图片裁剪(Cropping):从原始...
ImageMagick可以读取、转换和保存各种格式的图像,支持裁剪、缩放、旋转等多种图像操作。 5. **文件上传处理**:Java Web应用通常使用Servlet API来处理文件上传。`multipart/form-data`类型的表单数据会被Servlet...
2. 图片处理:利用PHP的GD库或ImageMagick进行图片缩放、裁剪、压缩等操作。 3. 安全性:采用HTTPS协议保证数据传输安全,使用JWT(JSON Web Tokens)进行身份验证,防止CSRF(跨站请求伪造)攻击。 4. 性能优化:...
需要注意的是,由于`gm`是基于ImageMagick的,因此所有操作都会在磁盘上生成临时文件,如果你处理大量图片,可能会消耗大量磁盘空间。 总之,Node.js结合`gm`模块能方便地实现对图片的各种操作,但需要确保系统中...
这些库能够优化内存使用,处理图片缩放,以及在网络不稳定的环境下进行图片缓存。 3. **UI设计**:超炫的图片浏览器需要吸引人的用户界面。Android提供了丰富的布局组件如LinearLayout、RelativeLayout和...