How can I modify image from java through ImageMagick
? Is there any way of doing it?
Use JMagick (docs). Read the documentation. It provides all the functionality of ImageMagick. You may also look into another ImageMagick Java wrapper, im4java.
There is a good starters document for im4java here
Here is an example, I've worked out.
/** 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
Edit #1:
If you are wondering for the Jar file of JMagick. Download jMagick tarball, untar it.
$ tar xvzf jmagick-linux-6.4.0-Q32.tar.gz
./jmagick-6.4.0.jar
./jmagick.jar
./libJMagick-6.4.0.so
./libJMagick.so
How to Install JMajick on Windows
- Go to http://downloads.jmagick.org/6.3.9/ (or any other version of your choice)
- Download ImageMagick-6.3.9-0-Q8-windows-dll.exe and jmagick-win-6.3.9-Q8.zip.
- Install the exe file. This will install ImageMagick which is a prerequisite for JMagick to work.
- Now extract the zip file. This will give jmagick.dll and jmagick.jar.
- Copy the jmagick.jar to you lib folder and include it in the classpath.
- Copy the jmagick.dll to the root installation directory of ImageMagic and add it as an entry to the PATH environment variable.
- JMagick is installed :).
For 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);
And if you like maven!
<dependency>
<groupId>org.im4java</groupId>
<artifactId>im4java</artifactId>
<version>1.4.0</version>
</dependency>
convert my_image.jpg pdf_version.pdf
? –
Antelope Resizing an image (using the easiest method) within the 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://pscode.org/media/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);
}
}
I tried using imagemagick from Java but found hardware accelerated 100% java library for image operations.
https://github.com/thebuzzmedia/imgscalr
"This library makes uses of efficient Java2D scaling techniques advocated by the Java2D team which provides hardware accelerated operations on most platforms."
© 2022 - 2024 — McMap. All rights reserved.