图像magick java

如何通过ImageMagick从java修改图像? 这有什么办法吗?

使用JMagick ( docs )。 阅读文档。 它提供了ImageMagick的所有function。 您还可以查看另一个ImageMagick Java包装器im4java 。

这里有一个很好的im4java入门文档


这是一个例子,我已经解决了。

/** Typical scaling implementation using JMagick **/ ImageInfo origInfo = new ImageInfo(absPath); //load image info MagickImage image = new MagickImage(origInfo); //load image image = image.scaleImage(finalWidth, finalHeight); //to Scale image image.setFileName(absNewFilePath); //give new location image.writeImage(origInfo); //save 

编辑#1:

如果你想知道JMagick的Jar文件。 下载jMagick tarball,解压它。

 $ tar xvzf jmagick-linux-6.4.0-Q32.tar.gz ./jmagick-6.4.0.jar ./jmagick.jar ./libJMagick-6.4.0.so ./libJMagick.so 

如何在Windows上安装JMajick

  1. 转到http://downloads.jmagick.org/6.3.9/ (或您选择的任何其他版本)
  2. 下载ImageMagick-6.3.9-0-Q8-windows-dll.exe和jmagick-win-6.3.9-Q8.zip。
  3. 安装exe文件。 这将安装ImageMagick,这是JMagick工作的先决条件。
  4. 现在解压缩zip文件。 这将给jmagick.dll和jmagick.jar。
  5. 将jmagick.jar复制到lib文件夹并将其包含在类路径中。
  6. 将jmagick.dll复制到ImageMagic的根安装目录,并将其作为条目添加到PATH环境变量中。
  7. JMagick已安装:)。

对于ImageMagic 1.4.0

 // create command ConvertCmd cmd = new ConvertCmd(); // create the operation, add images and operators/options IMOperation op = new IMOperation(); op.addImage("source_picture.jpg"); // source file op.resize(800,600); // of op.resize(800); // and height calculate automatically op.addImage("resized_picture.jpg"); // destination file file // execute the operation cmd.run(op); 

如果你喜欢maven!

  org.im4java im4java 1.4.0  

在J2SE中调整图像大小(使用最简单的方法)。

 import java.awt.Graphics; import java.awt.image.BufferedImage; import javax.swing.*; import javax.imageio.ImageIO; import java.net.URL; class ResizeImage { public static void main(String[] args) throws Exception { URL url = new URL("http://sofzh.miximages.com/java/citymorn2.jpg"); final BufferedImage bi = ImageIO.read(url); Runnable r = new Runnable() { public void run() { JLabel unresize = new JLabel(new ImageIcon(bi)); int width = (int)(bi.getWidth()*.75); int height = (int)(bi.getHeight()*.75); BufferedImage bi1 = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics g1 = bi1.getGraphics(); g1.drawImage( bi, 0, 0, width, height, null ); JLabel easyResize = new JLabel(new ImageIcon(bi1)); JPanel p = new JPanel(); p.add( unresize ); p.add( easyResize ); JOptionPane.showMessageDialog(null, p); } }; SwingUtilities.invokeLater(r); } } 

我尝试使用Java中的imagemagick,但发现硬件加速了100%的java库进行图像操作。

https://github.com/thebuzzmedia/imgscalr

“这个库利用了Java2D团队倡导的高效Java2D扩展技术,该技术在大多数平台上提供硬件加速操作。”