Как изменить изображение из java через ImageMagick? Есть ли способ сделать это?
Изображение magick java
Ответ 1
Используйте JMagick (docs). Прочтите документацию. Он обеспечивает все функции ImageMagick. Вы также можете посмотреть другую оболочку ImageMagick Java, 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. Загрузите tar-архив 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
Ответ 2
Как установить JMajick в Windows
- Перейдите в http://downloads.jmagick.org/6.3.9/ (или любую другую версию по вашему выбору)
- Загрузите ImageMagick-6.3.9-0-Q8-windows-dll.exe и jmagick-win-6.3.9-Q8.zip.
- Установите exe файл. Это установит ImageMagick, что является обязательным условием для работы JMagick.
- Теперь извлеките zip файл. Это даст jmagick.dll и jmagick.jar.
- Скопируйте папку jmagick.jar в папку lib и включите ее в путь к классам.
- Скопируйте файл jmagick.dll в корневой каталог установки ImageMagic и добавьте его как запись в переменную среды PATH.
- Установлен JMagick:).
Ответ 3
Для 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);
И если вам нравится maven!
<dependency>
<groupId>org.im4java</groupId>
<artifactId>im4java</artifactId>
<version>1.4.0</version>
</dependency>
Ответ 4
Изменение размера изображения (с использованием самого простого метода) в 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);
}
}
Ответ 5
Я попытался использовать imagemagick с Java, но нашел аппаратную ускоренную 100% -ную java-библиотеку для операций с изображениями.
https://github.com/thebuzzmedia/imgscalr
"В этой библиотеке используются эффективные методы масштабирования Java2D, защищаемые командой Java2D, которая обеспечивает аппаратные ускоренные операции на большинстве платформ".