web-dev-qa-db-fra.com

Image magick java

Comment modifier une image à partir de Java via ImageMagick? Y a-t-il un moyen de le faire?

20
rahul the great

Utilisez JMagick ( docs ). Lisez la documentation. Il fournit toutes les fonctionnalités d'ImageMagick. Vous pouvez également rechercher un autre wrapper ImageMagick Java, im4Java .

Il existe un bon document de démarrage pour im4Java ici


Voici un exemple, j'ai travaillé. 

/** 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:

Si vous vous demandez le fichier Jar de JMagick. Téléchargez l'archive jMagick, décompressez-la.

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

Comment installer JMajick sur Windows

  1. Allez à http://downloads.jmagick.org/6.3.9/ (ou toute autre version de votre choix)
  2. Téléchargez ImageMagick-6.3.9-0-Q8-windows-dll.exe et jmagick-win-6.3.9-Q8.Zip.
  3. Installez le fichier exe. Cela installera ImageMagick, qui est une condition préalable au fonctionnement de JMagick.
  4. Maintenant, extrayez le fichier Zip. Cela donnera jmagick.dll et jmagick.jar.
  5. Copiez le fichier jmagick.jar dans votre dossier lib et incluez-le dans le chemin d'accès aux classes.
  6. Copiez le fichier jmagick.dll dans le répertoire d'installation racine d'ImageMagic et ajoutez-le en tant qu'entrée dans la variable d'environnement PATH.
  7. JMagick est installé :).
9
Anand

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

Et si vous aimez maven!

<dependency>
    <groupId>org.im4Java</groupId>
    <artifactId>im4Java</artifactId>
    <version>1.4.0</version>
</dependency>
2
user1079877

J’ai essayé d’utiliser imagemagick à partir de Java mais j’ai trouvé une bibliothèque 100% Java accélérée par le matériel pour les opérations d’image. 

https://github.com/thebuzzmedia/imgscalr

"Cette bibliothèque utilise les techniques de dimensionnement Java2D efficaces préconisées par l'équipe Java2D, qui fournit des opérations à accélération matérielle sur la plupart des plates-formes."

0
mikowiec

Redimensionnement d’une image (à l’aide de la méthode easiest ) dans 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);
    }
}
0
Andrew Thompson