|
|
操作系统:winXP
软件下载地址:http://downloads.jmagick.org/
用的是6.3.9
下载ImageMagick-6.3.9-0-Q8-windows-dll.exe和jmagick-win-6.3.9-Q8.zip
安装ImageMagick-6.3.9-0-Q8-windows-dll.exe,按照网上说法把安装后根目录下的所有.dll文件拷贝到C:\WINDOWS\system32下。不过没拷贝成功。略之不理。
jmagick-win-6.3.9-Q8.zip解压缩。将里面的jmagick.dll拷贝至C:\WINDOWS\system32下最好JAVAHOME/bin下也放一份。
配置环境变量path加入C:\Program Files\ImageMagick-6.3.9-Q8(自己视情况在而变)
将jmagick-win-6.3.9-Q8.zip里jmagick.jar放入自己的工程
这里用的是java调用命令操作。
程序例子代码:
import java.io.File;import java.io.IOException;import java.util.ArrayList;public class Aa {public static String CONVERT_PROG = "C:\\Program Files\\ImageMagick-6.3.9-Q8\\convert.exe";//视情况而变public static void main(String[] args) {File in = new File("C:\\1.gif");//源文件File out = new File("C:\\2.gif");//输出文件convert(in,out,300,100,100,10);}/* * Uses a Runtime.exec()to use imagemagick to perform the given conversion * operation. Returns true on success, false on failure. Does not check if * either file exists. * * @param in Description of the Parameter @param out Description of the * Parameter @param newSize Description of the Parameter @param quality * Description of the Parameter @return Description of the Return Value */@SuppressWarnings("unchecked")private static boolean convert(File in, File out, int width, int height,int quality,int newSize) {System.out.println("convert(" + in.getPath() + ", " + out.getPath()+ ", " + newSize + ", " + quality);if (quality < 0 || quality > 100) {quality = 75;}ArrayList command = new ArrayList(10);// note: CONVERT_PROG is a class variable that stores the location of// ImageMagick's convert command// it might be something like "/usr/local/magick/bin/convert" or// something else, depending on where you installed it.command.add(CONVERT_PROG);command.add("-geometry");command.add(width + "x" + height);command.add("-quality");command.add("" + quality);command.add(in.getAbsolutePath());command.add(out.getAbsolutePath());System.out.println(command);return exec((String[]) command.toArray(new String[1]));}/** * Tries to exec the command, waits for it to finsih, logs errors if exit * status is nonzero, and returns true if exit status is 0 (success). * * @param command * Description of the Parameter * @return Description of the Return Value */private static boolean exec(String[] command) {Process proc;try {// System.out.println("Trying to execute command " +// Arrays.asList(command));proc = Runtime.getRuntime().exec(command);} catch (IOException e) {System.out.println("IOException while trying to execute " + command);return false;}// System.out.println("Got process object, waiting to return.");int exitStatus;while (true) {try {exitStatus = proc.waitFor();break;} catch (java.lang.InterruptedException e) {System.out.println("Interrupted: Ignoring and waiting");}}if (exitStatus != 0) {System.out.println("Error executing command: " + exitStatus);}return (exitStatus == 0);}} |
|