ImageMagick主页:
http://www.imagemagick.org/script/index.php
这两篇文章介绍了ImageMagick的基本使用
http://www.ibm.com/developerworks/cn/linux/l-graf/
http://www.ibm.com/developerworks/cn/linux/l-graf2/
由于ImageMagick中有些命令与系统中的一些命令相冲突,如:convert命令,因此可以使用GraphicsMagick,其主页:http://www.graphicsmagick.org/,其命令用法和ImageMagick命令的用法基本一样,只在其前面加入了gm,为了避免和系统命令相冲突。
命令参考:
http://www.graphicsmagick.org/utilities.html
例如:
(1)gm identify
可以识别图片的基本信息
如:
gm identify firelily.jpg 显示基本图片信息
gm identify -format "%d %b %f %w %h %[EXIF:DateTimeOriginal]" firelily.jpg 显示指定的图片信息
-format选项可以参考官方文档
(2)gm convert
转换图片
如:
gm convert -colors 256 -depth 8 -resize 50% -quality 70 firelily.jpg test1.jpg
colors:指颜色数
depth:颜色深度数
resize:大小
quality:质量
gm convert -resize 100 -crop 100X100+0+0 -gravity center -quality 70 firelily.jpg test.jpg
resize 100:高度按照宽度缩放比例进行调整
crop:截取
100X100+0+0 指截取的宽度X截取的宽度+从图片左上角起的横坐标+从图片左上角起的纵坐标
gravity center:从中心截取
gm convert -resize 100X100! firelily.jpg test.jpg
加!号,表明不按比例对图片进行缩放
================================
ImageMagick给许多编程语言提供了编程API,对Java提供了两种:
(1)JMagic,是基于JNI的对C程序的封装调用
(2)im4java,是对ImageMagick的命令行调用进行的java封装
在这里介绍下im4java,其代码示例很少,可以看其官方提供的测试程序,网上的示例也很少,最直接的方法是读其源代码。
im4java主页:http://im4java.sourceforge.net/
源代码中有一个属性:im4java.useGM,为true,表明使用GraphicsMagick,否则使用ImageMagick
示例1:
显示图片信息
view plaincopy to clipboardprint?
public static String showImageInfo(String imagePath) throws ImageProcessException {
try {
IMOperation op = new IMOperation();
op.format("%w#%h#%d#%f#%b#%[EXIF:DateTimeOriginal]");
op.addImage(1);
IdentifyCmd identifyCmd = new IdentifyCmd();
ArrayListOutputConsumer output = new ArrayListOutputConsumer();
identifyCmd.setOutputConsumer(output);
logger.info("==ImageMagic==\n" +
"Op=" + op.toString() +
";Cmd=" + identifyCmd.toString());
identifyCmd.run(op, imagePath);
ArrayList<String> cmdOutput = output.getOutput();
assert cmdOutput.size() == 1;
String line = cmdOutput.get(0);
return line;
} catch (Exception e) {
throw new ImageProcessException(e);
}
public static String showImageInfo(String imagePath) throws ImageProcessException {
try {
IMOperation op = new IMOperation();
op.format("%w#%h#%d#%f#%b#%[EXIF:DateTimeOriginal]");
op.addImage(1);
IdentifyCmd identifyCmd = new IdentifyCmd();
ArrayListOutputConsumer output = new ArrayListOutputConsumer();
identifyCmd.setOutputConsumer(output);
logger.info("==ImageMagic==\n" +
"Op=" + op.toString() +
";Cmd=" + identifyCmd.toString());
identifyCmd.run(op, imagePath);
ArrayList<String> cmdOutput = output.getOutput();
assert cmdOutput.size() == 1;
String line = cmdOutput.get(0);
return line;
} catch (Exception e) {
throw new ImageProcessException(e);
}
示例2:
旋转图片
view plaincopy to clipboardprint?
public static void rotate(String srcImagePath, String destImagePath, double angle) throws ImageProcessException {
try {
IMOperation op = new IMOperation();
op.rotate(angle);
op.addImage(srcImagePath);
op.addImage(destImagePath);
ConvertCmd cmd = new ConvertCmd();
logger.info("==ImageMagic==\n" +
"Op=" + op.toString() +
";Cmd=" + cmd.toString());
cmd.run(op);
} catch (Exception e) {
throw new ImageProcessException(e);
}
}
public static void rotate(String srcImagePath, String destImagePath, double angle) throws ImageProcessException {
try {
IMOperation op = new IMOperation();
op.rotate(angle);
op.addImage(srcImagePath);
op.addImage(destImagePath);
ConvertCmd cmd = new ConvertCmd();
logger.info("==ImageMagic==\n" +
"Op=" + op.toString() +
";Cmd=" + cmd.toString());
cmd.run(op);
} catch (Exception e) {
throw new ImageProcessException(e);
}
}
示例3:
调整大小,并改变图片质量
view plaincopy to clipboardprint?
public static String resize(String srcImagePath,
String destImagePath,
int width, int height,
double quality,
int colors, int depth, boolean isProportionChanged,
boolean isUseFileExt) throws ImageProcessException {
try {
IMOperation op = new IMOperation();
if (width > 0) {
if (height > 0) {
if (!isProportionChanged) {
op.resize(width, height);
op.crop(width, height, 0, 0);
} else {
op.resize(width, height, '!');
op.crop(width, height, 0, 0, '!');
}
} else {
op.resize(width);
op.crop(width);
}
}
op.gravity("center");
op.quality(quality);
op.colors(colors);
op.depth(depth);
op.addImage(srcImagePath);
if (!isUseFileExt) {
String extension = FilenameUtils.getExtension(destImagePath);
destImagePath = StringUtils.removeEnd(destImagePath, extension) + Constants.DEFAULT_EXT;
}
op.addImage(destImagePath);
ConvertCmd convCmd = new ConvertCmd();
logger.info("==ImageMagic==\n" +
"Op=" + op.toString() +
";Cmd=" + convCmd.toString());
convCmd.run(op);
return destImagePath;
} catch (Exception e) {
throw new ImageProcessException(e);
}
}
分享到:
相关推荐
4. **服务器端处理**:在服务器端,可以使用ImageMagick处理用户上传的图片,比如自动调整大小、添加水印等。 5. **图像分析**:在人工智能和机器学习领域,ImageMagick可以作为预处理步骤,对图像进行标准化和格式...
总的来说,ImageMagick是一个功能强大的图像处理工具,无论你是网页开发者、系统管理员还是图形设计师,都可以利用它的强大功能来满足各种图像处理需求。通过学习和掌握ImageMagick,你将能够高效地处理大量图像,...
ImageMagick处理GIF时,可以拆分动画帧并进行逐帧编辑。 - **TIFF**:TIFF(Tagged Image File Format)是多功能的图像格式,支持无损压缩和多种颜色模式。ImageMagick能处理多页的TIFF文件,适用于扫描文档或专业...
ImageMagick是一款强大的开源图像...此外,开发人员可以利用提供的API在自己的程序中调用ImageMagick的功能,实现更复杂的图像处理任务。总的来说,ImageMagick是一个强大而灵活的工具,适用于需要大量处理图像的项目。
此外,由于ImageMagick处理图像的能力强大,也有可能被恶意利用,因此在使用时要注意权限设置,避免不必要的安全风险。 总之,"ImageMagick-7.1.1-21-Q16-x86-dll.exe"是一个专为32位Windows系统设计的图像处理工具...
**ImageMagick详解** ImageMagick,作为一个开源的图像处理软件包,已经在IT行业中占据了重要的地位,尤其在图像处理和转换领域。...如果你还没有尝试过ImageMagick,那么它绝对值得你去探索和利用。
利用ImageMagick和JMagick,开发者可以实现以下功能: 1. **水印添加**:在图片的指定位置添加文字或图像水印,可以调整透明度、角度、大小等属性。 2. **图像调整**:改变亮度、对比度、饱和度,或者应用色调和...
为了充分利用ImageMagick,用户需要熟悉命令行操作,或者通过编程语言(如Python的PIL库或Node.js的sharp模块)来调用ImageMagick的API。对于开发者来说,理解每个命令的作用和参数设置是非常重要的,这可以帮助他们...
《ImageMagick终极指南》是图像处理领域内的一部权威性著作,由Michael Still撰写,版权自2006年起归属作者。...通过对本书的学习,读者将能够充分利用ImageMagick的各种特性,实现高质量的图像处理和创意设计。
ImageMagick是一款强大的开源图像处理工具,其在Linux系统下的出色兼容性使其成为开发者和图形设计者们的重要选择。这个名为"ImageMagick-6.8.6-2.i386.zip"的压缩包文件包含了该软件的一个特定版本,即6.8.6-2,...
5. 基于矢量图形的操作:虽然ImageMagick主要是处理像素图像,但它也支持基本的矢量图形操作,如绘制线条、形状等。 6. 动画处理:对于GIF格式的动画,可以进行拆分、合并、编辑帧等操作。 7. 命令行工具:...
总之,ImageMagick是一个功能强大的图像处理库,对于需要在Linux系统上进行图形开发的用户来说,它是一个不可或缺的工具。通过这个“ImageMagick-6.8.7-6.tar.gz”压缩包,用户可以快速地在本地获取并安装该软件,...
Imagemagick作为一个功能强大的图像处理工具,不仅支持常见的图像格式,还具备高级功能和跨平台兼容性,使其成为图形设计、Web开发和其他图像处理任务中的重要工具。通过深入理解其核心功能和安装配置细节,用户可以...
6. 并行处理:利用多核处理器的Q16配置,提高处理速度,这里的Q16表示16位量子深度,意味着更高的色彩精度。 安装“ImageMagick-7.0.2-4-Q16-x64-static.exe”文件,用户将获得一个完整的ImageMagick工具集,其中...
本项目“MFC图形图像处理及绘图软件设计”旨在利用MFC库创建一个具备基本绘图、图像处理以及音频视频播放功能的软件。 一、MFC基础 1. MFC架构:MFC包含了一系列的类,如CWinApp、CWinThread、CWnd等,它们分别...
`RMagick`是Ruby与ImageMagick之间的一个绑定库,它允许Ruby程序员充分利用ImageMagick的强大功能来处理图像。 RMagick的安装通常涉及到两个步骤:首先,你需要在系统上安装ImageMagick,然后通过Ruby的Gem包管理器...
ImageMagick-GUI 是一个专为 ImageMagick 设计的图形用户界面(GUI),它采用 Java 的 Swing 框架构建,旨在简化对 ImageMagick 命令行工具的操作。ImageMagick 是一个功能强大的图像处理软件,支持多种图像格式,...