在实现图形合并的时候,因为对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”中,我们看到的是一个压缩包文件,其格式为tar.gz,这是一种常见的Linux/Unix系统中的归档和压缩格式。 ImageMagick的主要功能包括但不限于以下几点: 1. 图像...
这个特定的版本,ImageMagick-6.7.5-10,是一个压缩包文件,采用tar.gz格式,这是一种在Linux和Unix环境中常见的归档和压缩方式,通过tar命令进行归档,然后用gzip进行压缩,以减少文件大小,便于存储和传输。...
Msys帮助开发者在Windows上模拟Unix环境,使得原本在Unix或Linux下编译的软件可以在Windows上顺利构建。 标签"MingW"指出了这个压缩包的关键编译工具,它提供了GCC(GNU Compiler Collection)和其他GNU工具,如...
在Linux/Unix编程中,我们通常使用标准I/O库、系统调用来操作文件和目录,例如`open()`, `read()`, `write()`, 和 `close()`等。对于图像处理,Linux提供了许多库,如GD, ImageMagick的MagickWand API,或开源的...
在Linux或Unix系统中,shell脚本是一种强大的工具,可以用来自动化一系列命令。而缩略图则是对图像文件的小尺寸版本,通常用于预览,以节省显示大量图片时的资源。 在`Thumb.cpp`和`Thumb.h`这两个文件中,`Thumb`...
- **MSYS**:一个为Windows设计的类Unix环境,便于使用Linux/Unix命令行工具。 - **GCC核心**:版本为3.3.1,用于编译器的核心组件。 - **GCC++**:版本也为3.3.1,用于支持C++编译。 - **ImageMagick**:版本为...
MTK的编译过程主要在Windows命令行环境下进行,通过Makefile文件调用预处理脚本或C程序,将资源包转化为C源程序,并结合各个模块的C程序编译产生的.o、.lib或.obj中间代码,最终生成可在手机上运行的.bin文件和在...
在图形图像处理方面,Unix和Linux提供了丰富的库支持,如OpenCV(开源计算机视觉库)、ImageMagick、PIL(Python Imaging Library)等,它们提供了大量的函数和API,用于图像的读取、转换、处理、显示等。...
标题中的"OSD.rar_图片显示_Unix_Linux_"表明我们即将探讨的是如何在Unix或Linux操作系统中,针对图片添加OSD(On-Screen Display)菜单,这通常涉及到图形用户界面(GUI)和图像处理技术。OSD菜单是屏幕上显示的...
tar.gz是一种常见的Unix/Linux系统中的文件打包和压缩格式,通过tar命令将多个文件或目录打包成单一的tar文件,然后用gzip压缩工具进行压缩,以节省存储空间。 描述中提到"Linux操作系统配置nginx+php+mysql工具",...
Xlib库不仅适用于Linux,还在其他Unix-like系统上广泛使用。在使用Xlib进行图形编程时,你需要理解以下几个关键概念: 1. **窗口和根窗口**:在X Window System中,每个图形界面都由一个或多个窗口组成。根窗口是...
- **MSYS**:一个提供类Unix命令行环境的系统,用于在Windows上运行Make等工具。 - **MinGW**:Minimalist GNU for Windows,包含GCC编译器。 - **Gcc-core-3.3.1** 和 **Gcc-g++-3.3.1**:GNU C和C++编译器。 - **...
#### 二、Unix/Linux基本使用 **查看系统负载** - `top`: 实时显示系统中各个进程的资源占用状况。 - `vmstat`: 显示关于虚拟内存、进程、CPU活动等的统计信息。 - `sar`: 报告系统活动统计信息。 **Vim快捷键** ...
在图形图像处理方面,虽然标题提及但文件列表中没有直接相关的文件,不过在Unix和Linux系统上,通常会使用开源的图像处理库,如OpenCV、ImageMagick等。开发者可以利用这些库来开发图像处理软件,包括图像转换、编辑...
- 将所有已安装工具的路径添加到系统的PATH环境变量中,便于在命令行中调用。 - 特别需要注意的是MinGW、MSYS等工具的路径配置。 3. **配置自定义脚本** - 使用Perl脚本`custom3rdParty.pl`来自动配置工具路径。...
完成以上步骤后,即可执行MAKE命令,如`Make customer_name gprs new_modis`或`Make CUSTOMER_NAME gprs new`。 #### 三、资源与代码编译 MTK编译分为资源编译和代码编译两部分。资源编译主要涉及字符串资源文件、...
这个过程通常在Windows命令行中通过Makefile文件控制,执行预处理脚本(如perl脚本)和C程序。 搭建MTK编译环境需要一系列的工具,包括但不限于: 1. ADS1.2及其更新补丁848,用于ARM架构的开发。 2. Perl,用于...
在Windows中,`javac`和`java`命令依然可用,而类似的功能可以使用PowerShell或CMD命令来实现,例如`magick`(ImageMagick的Windows版本)代替`convert`。 为了在Windows上使用此项目,你需要做以下步骤: 1. 安装...
这通常通过操作系统提供的API完成,例如在Windows系统中可以使用GDI(Graphics Device Interface)或DirectX,而在Unix/Linux系统中则可能涉及X Window System的函数。 2. **图形缓冲区的访问**:获取屏幕图像通常...
Magick++ 在多种操作系统上都有良好的支持,包括 Linux、Windows、Mac OS X 和 UNIX 系统。它包括用于渲染图像的图形用户界面(GUI)。 在学习Magick++的过程中,用户需要按照文档的指导,逐步熟悉库的基本功能,...