admin 管理员组文章数量: 887836
一、什么是Imagemagick?
ImageMagick是一款免费开源的图片编辑软件。既可以通过命令行使用,也可以通过调用API来完成。本文介绍下怎么使用命令并结合代码实现对图片的一些处理。
二、下载和安装
这里以Windows为例
官网下载地址
ImageMagick – Download
这个7.0版本和6点几版本有些不同,系统环境变量都是自动配置好的,不需要手动配置。
使用 magick --version 查看是否安装成功:
三、使用
如果很多子命令不能直接使用,则可以把他们当做magick的子命令使用,如:
1、转换格式:将cat.png另存为cat.jpg
magick cat.png cat.jpg
2、合成gif:将cat1.jpg、cat2.jpg合成cat.gif
magick cat1.jpg cat2.jpg cat.gif
3、调整图片大小:等比例放大为原来2倍
magick cat1.jpg -resize 200% cat3.jpg
4、解析psd文件:获取图层信息
D:\>magick identify test.psd
test.psd[0] PSD 2000x2000 2000x2000+0+0 8-bit sRGB 20.3131MiB 0.010u 0:00.009
test.psd[1] PSD 346x28 346x28+827+1005 8-bit sRGB 0.007u 0:00.007
test.psd[2] PSD 235x28 235x28+882+966 8-bit sRGB 0.009u 0:00.009
test.psd[3] PSD 2000x2000 2000x2000+0+0 8-bit sRGB 0.013u 0:00.012
test.psd[4] PSD 1957x1956 1957x1956+26+21 8-bit sRGB 0.015u 0:00.014
test.psd[5] PSD 761x1035 761x1035+603+467 8-bit sRGB 0.017u 0:00.017
test.psd[6] PSD 763x1039 763x1039+602+467 8-bit sRGB 0.020u 0:00.020
test.psd[7] PSD 761x1035 761x1035+603+467 8-bit sRGB 0.023u 0:00.023
更多命令可以用到时搜一下,需要程序执行命令可以参考下面代码。
在Java代码里使用ProcessBuilder执行ImageMagick命令。
public static List<PsdImageDTO> getPsdImageSequenceInfo(String filePath) {
log.info("获取PSD文件图层信息 filePath:{}", filePath);
List<String> commands = new ArrayList<>();
//这两行Linus环境下不用写
commands.add("cmd.exe");
commands.add("/c");
commands.add("magick");
commands.add("identify");
commands.add("-format");
commands.add("%p %W %H %X %Y\\n");
commands.add(filePath);
ProcessBuilder builder = new ProcessBuilder();
buildermand(commands);
BufferedReader br = null;
InputStream is = null;
try {
// 将错误输出流转移到标准输出流中,但使用Runtime不可以
builder.redirectErrorStream(true);
Process process = builder.start();
int result = process.waitFor();
if (result != 0) {
throw new BusinessException("查询PSD文件总的图层序列信息命令执行失败");
}
is = process.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String line = "";
List<String> contents = new ArrayList<>();
while ((line = br.readLine()) != null) {
log.info("lineContent:{}", line);
contents.add(line);
}
log.info("获取PSD文件图层信息 contents:{}", contents);
if (CollectionUtils.isEmpty(contents)) {
return new ArrayList<>();
}
List<PsdImageDTO> psdImageDtos = new ArrayList<>();
for (int i = 0; i < contents.size(); i++) {
String[] s = contents.get(i).split(" ");
PsdImageDTO imageDto = new PsdImageDTO();
imageDto.setIndex(s[0]);
imageDto.setWidth(s[1]);
imageDto.setHeight(s[2]);
imageDto.setCoordinateX(s[3]);
imageDto.setCoordinateY(s[4]);
psdImageDtos.add(imageDto);
}
return psdImageDtos;
} catch (Exception e) {
log.error("getPsdImageSequenceInfo error, e:{}", e.getMessage());
if (e instanceof BusinessException) {
throw (BusinessException) e;
}
throw new BusinessException("查询PSD文件总的图层序列信息命令执行方法异常");
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
本文标签: 系统安装 imageMagick Windows
版权声明:本文标题:Imagemagick在Windows系统安装使用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1735374342h1720153.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论