图像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
- 转到http://downloads.jmagick.org/6.3.9/ (或您选择的任何其他版本)
- 下载ImageMagick-6.3.9-0-Q8-windows-dll.exe和jmagick-win-6.3.9-Q8.zip。
- 安装exe文件。 这将安装ImageMagick,这是JMagick工作的先决条件。
- 现在解压缩zip文件。 这将给jmagick.dll和jmagick.jar。
- 将jmagick.jar复制到lib文件夹并将其包含在类路径中。
- 将jmagick.dll复制到ImageMagic的根安装目录,并将其作为条目添加到PATH环境变量中。
- 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扩展技术,该技术在大多数平台上提供硬件加速操作。”