`
Java_Fan
  • 浏览: 84957 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

java调用windows/Linux/Unix 命令行执行命令的方法--调用ImageMagick的合并图形的命令

 
阅读更多

在实现图形合并的时候,因为对Jmagick的处理方式还不熟悉,但是Jmagick依赖于imageMagick,imageMagick又刚好有执行图像合并的命令。

因此想到了利用java调用windows命令行执行命令的方式来达到目的。

直接看代码:

	/**
	 * 合并图片
	 * @param srcPathList 源图片路径名称列表
	 * @param toPathFile	合并后图片路径名称
	 * @param orientation 合并方位:横向(+)、纵向(-)
	 * @return
	 */
	public  void convert(List srcPathList,String toPathFile,String orientation){
		/*	合并图片命令格式:
		 * convert +append 1.jpg 2.jpg 3.jpg ... 0.jpg //横向合并(最后一个为合并成功的文件名称)
		 * convert -append 1.jpg 2.jpg 3.jpg ... 0.jpg  //纵向合并(最后一个为合并成功的文件名称)
		*/
		StringBuffer command = new StringBuffer("");
		command.append("convert ");
		command.append(orientation+"append ");
		int length = srcPathList.size();
		for(int i=0;i<length;i++){
			command.append(srcPathList.get(i)+" ");
		}
		command.append(toPathFile);
		String[] str = {command.toString()};
		JmagickTest.exec(str);
	}
	
	/**
	 * 调用windows的命令行并执行命令
	 * @param command 命令行窗口中要执行的命令字符串
	 */
	public static  void  exec(String[] command) {  
        	Process proc;  
        	InputStream is = null;
        	String comman = command[0];
        	System.out.println("命令为:"+comman);
        	String[] cmd = {"cmd.exe","/c",comman};
        	try {
			proc = Runtime.getRuntime().exec(cmd);
			int result = proc.waitFor();
			System.out.println("Process result:" + result);
			is = proc.getInputStream();
			byte[] b = new byte[1024];
			is.read(b);
			System.out.println("b:" + b);
			is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
    }  

通过将执行命令写入数组变量cmd,然后调用Runtime.getRuntime().exec(cmd)来执行此功能。这样就实现了调用java调用windows命令行执行命令的操作。


---------------------------------------------------------------------------------------------------------------------------------

针对不同的操作系统的判断,进行命令调用:

	/**
	 * 获取操作系统名称
	 * @return
	 */
	public static String getOS(){
		Properties pros = System.getProperties();
		String os = (String) pros.get("os.name");
		System.out.println(os);
		return os;
	}
	
	/**
	 * 根据操作系统类型来执行调用系统命令
	 * @param command
	 */
	public static  void  execWindowsOrLinux(String[] command) {  
    	Process proc = null;  
    	InputStream is = null;
    	String comman = command[0];
    	System.out.println("命令为:"+comman);
    	//String[] cmd = {"cmd.exe","/c",comman};
    	String osName = getOS();
    	try {
	    	if(osName.startsWith("Windows")){//windows下调用系统命令
	    		String[] cmdWindows = {"cmd.exe","/c",comman};
	    		proc = Runtime.getRuntime().exec(cmdWindows);
	    	}else if(osName.startsWith("Linux")){//Linux下调用系统命令
	    		String[] cmdLinux = {"/bin/sh","-c",comman};
	    		proc = Runtime.getRuntime().exec(cmdLinux);
	    	}else if(osName.startsWith("Unix")){
	    		String[] cmdUnix = {comman};
	    		proc = Runtime.getRuntime().exec(cmdUnix);
	    	}
		  int result = proc.waitFor();
		  System.out.println("Process result:" + result);
		  is = proc.getInputStream();
		  byte[] b = new byte[1024];
		  is.read(b);
		  System.out.println("b:" + b);
		  is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	



分享到:
评论

相关推荐

    ImageMagick-6.9.11-16.tar.gz ImageMagick图像软件下载

    在标题提到的版本“ImageMagick-6.9.11-16.tar.gz”中,我们看到的是一个压缩包文件,其格式为tar.gz,这是一种常见的Linux/Unix系统中的归档和压缩格式。 ImageMagick的主要功能包括但不限于以下几点: 1. 图像...

    ImageMagick-6.7.5-10.tar.gz

    这个特定的版本,ImageMagick-6.7.5-10,是一个压缩包文件,采用tar.gz格式,这是一种在Linux和Unix环境中常见的归档和压缩方式,通过tar命令进行归档,然后用gzip进行压缩,以减少文件大小,便于存储和传输。...

    ImageMagick-6.8.9-build-MinGW.7z

    Msys帮助开发者在Windows上模拟Unix环境,使得原本在Unix或Linux下编译的软件可以在Windows上顺利构建。 标签"MingW"指出了这个压缩包的关键编译工具,它提供了GCC(GNU Compiler Collection)和其他GNU工具,如...

    MediaStore_Images_MediaTest.rar_Linux/Unix编程_Unix_Linux_

    在Linux/Unix编程中,我们通常使用标准I/O库、系统调用来操作文件和目录,例如`open()`, `read()`, `write()`, 和 `close()`等。对于图像处理,Linux提供了许多库,如GD, ImageMagick的MagickWand API,或开源的...

    利用shell获取缩略图的类

    在Linux或Unix系统中,shell脚本是一种强大的工具,可以用来自动化一系列命令。而缩略图则是对图像文件的小尺寸版本,通常用于预览,以节省显示大量图片时的资源。 在`Thumb.cpp`和`Thumb.h`这两个文件中,`Thumb`...

    MTK环境搭建STEP BY STEP

    - **MSYS**:一个为Windows设计的类Unix环境,便于使用Linux/Unix命令行工具。 - **GCC核心**:版本为3.3.1,用于编译器的核心组件。 - **GCC++**:版本也为3.3.1,用于支持C++编译。 - **ImageMagick**:版本为...

    MTK程序编译.docMTK程序编译.doc

    MTK的编译过程主要在Windows命令行环境下进行,通过Makefile文件调用预处理脚本或C程序,将资源包转化为C源程序,并结合各个模块的C程序编译产生的.o、.lib或.obj中间代码,最终生成可在手机上运行的.bin文件和在...

    launch.rar_图形图像处理_Unix_Linux_

    在图形图像处理方面,Unix和Linux提供了丰富的库支持,如OpenCV(开源计算机视觉库)、ImageMagick、PIL(Python Imaging Library)等,它们提供了大量的函数和API,用于图像的读取、转换、处理、显示等。...

    OSD.rar_图片显示_Unix_Linux_

    标题中的"OSD.rar_图片显示_Unix_Linux_"表明我们即将探讨的是如何在Unix或Linux操作系统中,针对图片添加OSD(On-Screen Display)菜单,这通常涉及到图形用户界面(GUI)和图像处理技术。OSD菜单是屏幕上显示的...

    libpng-1.6.25.tar.gz

    tar.gz是一种常见的Unix/Linux系统中的文件打包和压缩格式,通过tar命令将多个文件或目录打包成单一的tar文件,然后用gzip压缩工具进行压缩,以节省存储空间。 描述中提到"Linux操作系统配置nginx+php+mysql工具",...

    用Xlib库进行基本图形编程

    Xlib库不仅适用于Linux,还在其他Unix-like系统上广泛使用。在使用Xlib进行图形编程时,你需要理解以下几个关键概念: 1. **窗口和根窗口**:在X Window System中,每个图形界面都由一个或多个窗口组成。根窗口是...

    MTK setup.doc

    - **MSYS**:一个提供类Unix命令行环境的系统,用于在Windows上运行Make等工具。 - **MinGW**:Minimalist GNU for Windows,包含GCC编译器。 - **Gcc-core-3.3.1** 和 **Gcc-g++-3.3.1**:GNU C和C++编译器。 - **...

    PHP架构师 指南 设计

    #### 二、Unix/Linux基本使用 **查看系统负载** - `top`: 实时显示系统中各个进程的资源占用状况。 - `vmstat`: 显示关于虚拟内存、进程、CPU活动等的统计信息。 - `sar`: 报告系统活动统计信息。 **Vim快捷键** ...

    ip6t_NPT.rar_图形图像处理_Unix_Linux_

    在图形图像处理方面,虽然标题提及但文件列表中没有直接相关的文件,不过在Unix和Linux系统上,通常会使用开源的图像处理库,如OpenCV、ImageMagick等。开发者可以利用这些库来开发图像处理软件,包括图像转换、编辑...

    MTK程序编译环境搭建

    - 将所有已安装工具的路径添加到系统的PATH环境变量中,便于在命令行中调用。 - 特别需要注意的是MinGW、MSYS等工具的路径配置。 3. **配置自定义脚本** - 使用Perl脚本`custom3rdParty.pl`来自动配置工具路径。...

    MTK编译平台搭建.doc

    完成以上步骤后,即可执行MAKE命令,如`Make customer_name gprs new_modis`或`Make CUSTOMER_NAME gprs new`。 #### 三、资源与代码编译 MTK编译分为资源编译和代码编译两部分。资源编译主要涉及字符串资源文件、...

    MTK程序编译

    这个过程通常在Windows命令行中通过Makefile文件控制,执行预处理脚本(如perl脚本)和C程序。 搭建MTK编译环境需要一系列的工具,包括但不限于: 1. ADS1.2及其更新补丁848,用于ARM架构的开发。 2. Perl,用于...

    PictureManagement

    在Windows中,`javac`和`java`命令依然可用,而类似的功能可以使用PowerShell或CMD命令来实现,例如`magick`(ImageMagick的Windows版本)代替`convert`。 为了在Windows上使用此项目,你需要做以下步骤: 1. 安装...

    VF截屏功能源码 VF截屏功能源码 VF截屏功能源码

    这通常通过操作系统提供的API完成,例如在Windows系统中可以使用GDI(Graphics Device Interface)或DirectX,而在Unix/Linux系统中则可能涉及X Window System的函数。 2. **图形缓冲区的访问**:获取屏幕图像通常...

    Magick++_tutorial.pdf

    Magick++ 在多种操作系统上都有良好的支持,包括 Linux、Windows、Mac OS X 和 UNIX 系统。它包括用于渲染图像的图形用户界面(GUI)。 在学习Magick++的过程中,用户需要按照文档的指导,逐步熟悉库的基本功能,...

Global site tag (gtag.js) - Google Analytics