Имиджевая магия java - PullRequest
20 голосов
/ 01 марта 2011

Как я могу изменить изображение из Java через ImageMagick?Есть ли способ сделать это?

Ответы [ 5 ]

23 голосов
/ 01 марта 2011

Используйте JMagick ( документы ). Прочитайте документацию. Он обеспечивает всю функциональность ImageMagick. Вы также можете посмотреть другую Java-оболочку ImageMagick, 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:

Если вам интересно файл Jar от JMagick. Загрузите архив jMagick, распакуйте его.

$ tar xvzf jmagick-linux-6.4.0-Q32.tar.gz 
./jmagick-6.4.0.jar
./jmagick.jar
./libJMagick-6.4.0.so
./libJMagick.so
9 голосов
/ 28 сентября 2011

Как установить JMajick в Windows

  1. Перейти к http://downloads.jmagick.org/6.3.9/ (или любой другой версии по вашему выбору)
  2. Загрузите ImageMagick-6.3.9-0-Q8-windows-dll.exe и jmagick-win-6.3.9-Q8.zip.
  3. Установите исполняемый файл.Это установит ImageMagick, который является необходимым условием для работы JMagick.
  4. Теперь распакуйте zip-файл.Это даст jmagick.dll и jmagick.jar.
  5. Скопируйте jmagick.jar в вашу папку lib и включите его в classpath.
  6. Скопируйте jmagick.dll в корневой установочный каталогImageMagic и добавьте его как запись в переменную окружения PATH.
  7. JMagick установлен:).
2 голосов
/ 11 ноября 2013

Для 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);

А если тебе нравится мавен!

<dependency>
    <groupId>org.im4java</groupId>
    <artifactId>im4java</artifactId>
    <version>1.4.0</version>
</dependency>
0 голосов
/ 10 февраля 2014

Я попытался использовать imagemagick из Java, но обнаружил, что аппаратное ускорение 100% библиотеки Java для операций с изображениями.

https://github.com/thebuzzmedia/imgscalr

"В этой библиотеке используются эффективные методы масштабирования Java2D, отстаиваемые командой Java2D, которая обеспечивает аппаратное ускорение операций на большинстве платформ."

0 голосов
/ 01 марта 2011

Изменение размера изображения (используя самый простой метод) в 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...