2011-03-01 12 views
19

¿Cómo puedo modificar la imagen de java a través de ImageMagick? ¿Hay alguna forma de hacerlo?Imagen magick java

+1

Por favor, añada un signo de interrogación (?) A las preguntas. Utilice una letra mayúscula al comienzo de cada oración. Ese pasaje fue doloroso de leer en minúsculas. Vale la pena ser más específico sobre lo que quiere decir con 'modificar'.En cuanto al cambio de tamaño (fin de marca de agua, incluso), esto se puede hacer utilizando Java 2D (en el J2SE), sin necesidad de una API de terceros. La única advertencia es el rango limitado de tipos de archivos de imagen que ofrece J2SE. (Y si quisiera tratar con tipos de imágenes como TIFF, recomendaría JAI.) –

+0

@Andrew Thompson: hecho. Sí, puedes usar JAI. He usado tanto ImageMagick como JAI. Hay dos problemas principales por los que evito JAI siempre que puedo. (1) La calidad de la imagen se degrada mucho, especialmente en una reducción de escala pesada. Hay muchos parámetros que debe conocer para obtener un resultado correcto con una calidad decente. (2) No es fácil de usar. – Nishant

Respuesta

18

Utilice JMagick (docs). Lee la documentación. Proporciona toda la funcionalidad de ImageMagick. También puede consultar otro contenedor ImageMagick Java, im4java.

No es un buen documento para empezar im4java here


Este es un ejemplo, he trabajado a cabo.

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

Edición # 1:

Si usted se está preguntando por el archivo JAR de JMagick. Descarga jMagick tarball, quítalo.

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

@nishant gracias por tu ayuda puedes dar un ejemplo donde imagemagick se usa con java ... –

+0

@rahul the great: ¿quieres un poco de código? El uso más común es el cambio de tamaño de la imagen y la marca de agua. – Nishant

+0

@nishant yaaa quiero cambiar el tamaño de la imagen. Por favor publíquelo muchas gracias por su ayuda –

0

Cambiar el tamaño de una imagen (usando el método de más fácil) dentro de la 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

Ahora, ¿cómo podrías, por ejemplo, almacenar esta imagen redimensionada en el disco? –

6

Cómo instalar JMajick en Windows

  1. Ir a http://downloads.jmagick.org/6.3.9/ (o cualquier otra versión de su elección)
  2. Descargar ImageMagick-6.3.9-0-Q8-ventanas- dll.exe y jmagick-win-6.3.9-Q8.zip.
  3. Instale el archivo exe. Esto instalará ImageMagick, que es un requisito previo para que JMagick funcione.
  4. Ahora extrae el archivo zip. Esto dará jmagick.dll y jmagick.jar.
  5. Copie la carpeta jmagick.jar lib e inclúyala en classpath.
  6. Copie el jmagick.dll en el directorio de instalación raíz de ImageMagic y agréguelo como una entrada a la variable de entorno PATH.
  7. JMagick está instalado :).
+2

esto es genial! Me enfrenté a una excepción (usando Windows 7) "UnsatisfiedLinkError" hasta que mantuve el 'jmagick.dll' dentro de mi JRE_HOME/bin y necesité un reinicio del sistema para cargar el dll. – tusar

2

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

Y si te gusta el experto!

<dependency> 
    <groupId>org.im4java</groupId> 
    <artifactId>im4java</artifactId> 
    <version>1.4.0</version> 
</dependency> 
+0

¿cómo se puede imitar 'convertir my_image.jpg pdf_version.pdf'? – mmcrae

+0

No estoy seguro de eso. Lo usó hace mucho tiempo. Pero creo que simplemente puedes eliminar resize() y cambiar resized_picture.jpg a pdf_version.pdf – user1079877

0

Intenté usar imagemagick de Java pero encontré una biblioteca 100% java acelerada por hardware para las operaciones de imagen.

https://github.com/thebuzzmedia/imgscalr

"Esta biblioteca hace uso de técnicas de escalamiento Java2D eficientes defendidas por el equipo Java2D que proporciona operaciones aceleradas de hardware en la mayoría de las plataformas."