使用ImageMagick的创建, 编辑, 撰写, 或转换位图图像。 它可以读取和写入各种格式(超过200种)的图像,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG。使用ImageMagick可以调整图像大小,翻转,镜像,旋转,变形,剪切和变换图像,调整图像颜色,应用各种特殊效果或绘制文本,线条,多边形,椭圆和贝塞尔曲线。ImageMagick利用多个计算线程来提高性能,并且可以读取,处理或写入兆,千兆或兆像素图像大小。
以下是ImageMagick可以为您提供帮助的一些示例:
动画 从一组图像创建一个GIF动画序列。
色彩管理 使用颜色配置文件或代替颜色空间所需的内置伽玛压缩或扩展进行精确的颜色管理。
命令行处理 从命令行使用ImageMagick。
复杂的文字布局 双向文本支持和整形。
综合 将一个图像重叠在另一个图像上。
连接的组件标签 唯一标记图像中的连接区域。
装饰 在图像上添加边框或框架。
描绘图像特征 坎尼边缘检测,霍夫线。
离散傅立叶变换 实现正向和反向DFT。
分布式像素缓存 将中间像素存储卸载到一台或多台远程服务器。
绘画 向图像添加形状或文本。
加密或解密图像 将普通图像转换为难以理解的乱码,然后再次返回。
格式转换 将图像从一种格式转换为另一种格式(例如,从PNG到JPEG)。
广义像素失真 校正或引起包括透视图在内的图像失真。
异构分布式处理 某些算法启用了OpenCL,以利用通过在由CPU,GPU和其他处理器组成的异构平台上协同执行而提供的提速。
高动态范围图像 可以准确代表真实场景中的各种强度级别,从最亮的直射阳光到最深的暗影。
直方图均衡 使用自适应直方图均衡来改善图像的对比度。
图像计算器 将数学表达式应用于图像或图像通道。
图像渐变 创建两种颜色的渐进混合,其形状为水平,垂直,圆形或椭圆形。
图像识别 描述图像的格式和属性。
iPhone上的ImageMagick 在您的iOS设备(例如iPhone或iPad)上转换,编辑或合成图像。
大图像支持 读取,处理或写入兆,千兆或兆像素图像大小。
剪辑 将图像缩略图并置在图像画布上。
形状形态 提取特征,描述形状并识别图像中的图案。
电影支持 读取和写入数字电影作品中使用的常见图像格式。
降噪降色 Kuwahara滤波器,均值漂移。
感知哈希 将视觉上相同的图像映射到相同或相似的哈希值-在图像检索,身份验证,索引编制或复制检测以及数字水印中很有用。
特殊效果 使图像模糊,锐化,阈值化或着色。
文字和评论 在图像中插入描述性或艺术性的文字。
执行线程 ImageMagick具有线程安全性,大多数内部算法可以并行执行以利用多核处理器芯片提供的加速功能。
转变 调整大小,旋转,校正,裁剪,翻转或修剪图像。
透明度 使图像的某些部分不可见。
虚拟像素支持 方便地访问图像边界之外的像素。
运行环境需安装FFmpeg和ImageMagick,官网地址如下:
FFmpeg: https://ffmpeg.org/
ImageMagick:http://www.imagemagick.com.cn/
FFmpeg解压后需设置/bin目录的环境变量,ImageMagick安装版安装后会自动设置环境变量。
<dependency>
<groupId>com.whty.zdxt</groupId>
<artifactId>multimedia-utils</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
spring:
servlet:
multipart:
# 是否支持 multipart 上传文件
enabled: true
# 最大支持文件大小
max-file-size: 10MB
# 最大支持请求大小
max-request-size: 10MB
# 上传文件的临时目录
location: E:/tomcat-temp
import com.whty.zdxt.multimedia.util.FFmpegUtils;
import com.whty.zdxt.multimedia.util.ImageMagickUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
@Component
public class MultimediaUtilsConfig {
/**
* 视频处理工具,因为所有压缩任务需要排队进行,所以FFmpegUtils需要是单例的,FFmpegUtils实例交由spring管理就为单例的
*/
@Bean
public FFmpegUtils fFmpegUtilsImpl() {
return new FFmpegUtils();
}
/**
* 图片处理工具
*/
@Bean
public ImageMagickUtils imageMagickUtils() {
return new ImageMagickUtils();
}
}
本项目要求四人组队分析,我组三人分工完成项目,因为代码量没有那么大,决定各自分析代码,并交流过程中遇到的问题与自己的收获,有助于提升小组成员的代码理解。