Imagemagic的安装

来源:互联网 发布:嵌入式linux内核裁剪 编辑:程序博客网 时间:2024/05/25 12:21

        žImageMagick是一个图象处理软件。它可以编辑、显示包括JPEG、TIFF、PNM、PNG、GIF和PhotoCD在内的绝大多数当今最流行的图象格式。你可以改变图象尺寸、旋转、锐化、减少颜色或加入特殊效果到图象里,并且能够以另一种图象格式保存 

安装步骤

ž下载介质

  例:ImageMagick-6.4.2-4.tar.gz

ž解压

   tar zxvf ImageMagick-6.4.2-4.tar.gz

ž编译安装

    ./configure

    Make

    make install

注意:使用root用户并且系统需要有gcc等编译器


ž你观察一下这个目录中包含了以下哪一个文件:configure、Makefile还是Imake。
如果是configure文件,就执行:
#./configure
#make 
#makeinstall
如果是Makefile文件,就执行:
#make  
#makeinstall
如果是Imake文件,就执行:
#xmkmf
#make
#make install

ž查看支持图片类型

   identify -list format

ž安装jpeg格式支持库

  下载 libjpeg-6b.tar.gz

   解压编译安装

  tar zxvf libjpeg-6b.tar.gz

  ./configure --with-jpeg=yes  

  make

  make install

然后进入到 ImageMagick-6.4.2 重新

  ./configure

  make

   make install


如果有报错信息 error while loading shared libraries: libMagickCore.so.4: cannot open shared object file: No such file or directory

请在/usr/local/lib目录下执行ldconfig



ž查看支持图片类型

   identify -list format

ž安装jpeg格式支持库

  下载 libjpeg-6b.tar.gz

   解压编译安装

  tar zxvf libjpeg-6b.tar.gz

  ./configure --with-jpeg=yes  

  make

  make install

然后进入到 ImageMagick-6.4.2 重新

  ./configure

  make

    make install



ArrayList<String>command = new ArrayList<String>();

ProcessBuilderpb = null;

Processp = null;

//缩略图

command.add(imagemagick_path+/convert);//命令路径

command.add(largePic_url);//大图路径

command.add("-resize");//执行缩小操作

command.add(image_height+"x"+image_width);//缩小到150x150

command.add(smallPic_url);//小图路径,需要自己建立父目录 

pb= new ProcessBuilder();

pb.command(command);

pb.redirectErrorStream(true);//标准错误将与标准输出合并

p= pb.start();

print(p);



//执行该方法是为了确保命令执行完成

public void print(Process p) throws Exception {

  InputStreamis=null;

  BufferedReaderbr=null;

  try{

          is = p.getInputStream();

          br = new BufferedReader(newInputStreamReader(is));

          String line;

          while ((line = br.readLine()) != null){

              this.info(line);

          }

  }catch(Exceptione){

  thrownew Exception("print error!"+e);

  }finally{

  if(is!=null){try{is.close();}catch(Exceptione){}}

  if(br!=null){try{br.close();}catch(Exceptione){}}

  }

}


žredirectErrorStream 属性
最初,此属性为 false,意思是子进程的标准输出和错误输出被发送给两个独立的流,这些流可以通过Process.getInputStream()和Process.getErrorStream()方法来访问。如果将值设置为true,标准错误将与标准输出合并。这使得关联错误消息和相应的输出变得更容易。在此情况下,合并的数据可从Process.getInputStream()返回的流读取,而从Process.getErrorStream()返回的流读取将直接到达文件尾
ž因为错误输出流中的数据没有被读取,进程就不会结束

   因此调用readLine()方法时整个程序就会阻塞 





0 0