rahul the great
rahul the great

Reputation: 291

Image magick java

How can I modify image from java through ImageMagick? Is there any way of doing it?

Upvotes: 27

Views: 60144

Answers (5)

Nishant
Nishant

Reputation: 55876

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 looking for the JMagick jar file: download the jMagick tarball and 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

Upvotes: 24

user1079877
user1079877

Reputation: 9398

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>

Upvotes: 5

mikowiec
mikowiec

Reputation: 501

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."

Upvotes: 0

Anand
Anand

Reputation: 91

How to Install JMajick on Windows

  1. Go to http://downloads.jmagick.org/6.3.9/ (or any other version of your choice)
  2. Download ImageMagick-6.3.9-0-Q8-windows-dll.exe and jmagick-win-6.3.9-Q8.zip.
  3. Install the exe file. This will install ImageMagick which is a prerequisite for JMagick to work.
  4. Now extract the zip file. This will give jmagick.dll and jmagick.jar.
  5. Copy the jmagick.jar to you lib folder and include it in the classpath.
  6. Copy the jmagick.dll to the root installation directory of ImageMagic and add it as an entry to the PATH environment variable.
  7. JMagick is installed :).

Upvotes: 9

Andrew Thompson
Andrew Thompson

Reputation: 168845

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);
    }
}

Upvotes: 0

Related Questions