Обрезать изображение на Java с помощью класса? - PullRequest
1 голос
/ 01 июня 2011

Я пытался сделать это около недели.Каждый раз, когда я пробовал что-то, это терпело неудачу.Поэтому я перешел к копированию чужого кода ... они сказали, что код работает для них ... но у меня это не получилось.

Часть кода, которая мне понравилась, пришла из следующего.

Как обрезать изображение на Java (StackOverflow)

Итак, я в основном скопировал / сделал это.

import java.awt.Graphics;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;

public class ImageEditor {

    public BufferedImage crop(BufferedImage src, Rectangle rect) {
        BufferedImage dest = new BufferedImage(rect.getWidth(), rect.getHeight(), BufferedImage.TYPE_INT_RGB);
        Graphics g = dest.getGraphics();
        g.drawImage(src, 0, 0, rect.getWidth(), rect.getHeight(), rect.getX(), rect.getY(), rect.getX() + rect.getWidth(), rect.getY() + rect.getHeight(), null);
        g.dispose();
        return dest;
    }
}

Я получил следующие ошибки с этимкод.

Error 2

Error 1

Спасибо за помощь заранее!

1 Ответ

3 голосов
/ 01 июня 2011

Первая ошибка говорит, что не может найти метод drawImage(BufferedImage,int,int,double,double,double,double,double,double,<nulltype>).Все эти двойные значения взяты из прямоугольника, верно?

Графика имеет метод drawImage(BufferedImage,int,int,int,int,int,int,int,int,ImageObserver).Это, вероятно, тот, который вы пытаетесь использовать.Вы должны использовать значения int вместо этого.

Вторая ошибка говорит, что не может найти конструктор BufferedImage(double, double, int).Это аналогичная проблема.

Прямоугольник предоставляет поля точности int x, y, height и width.Вы можете их использовать?Например, rect.x вместо rect.getX()

...