Как преобразовать изображение в буферизованное изображение, используя библиотеки Java по умолчанию - PullRequest
0 голосов
/ 30 мая 2019

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

Я попытался взять java.awt.Image, чтобы изменить его размер, а затем преобразовать его в BufferedImage для проверки на RGB.значение для каждого независимого пикселя.Однако приведение BufferedImage к изображению не работает.

Поскольку java.awt.Image не может получить доступ к значению цвета каждого отдельного пикселя, я должен использовать функции .getRBG объекта BufferedImage.Тем не менее, я должен принять java.awt.Image, потому что BufferedImage не может быть изменен.Я провел некоторые исследования по изменению размера BufferedImage, но в результате я обнаружил изменение его размера на экране, но не фактическое изображение.Я НЕ пытаюсь отобразить BufferedImage на экране, я пытаюсь получить доступ к значению цвета каждого пикселя на изображении.

Вот способы, которые могут решить мою проблему: Пожалуйста, предложите способ ...

  • Масштабирование BufferedImage (это не включает рисование на экране, просто изменение размера самого BufferedImage)

или

  • Доступ кзначение цвета пикселя в java.awt.Image
Image img = ImageIO.read(inputFile).getScaledInstance(400, 400, 0);

BufferedImage scaledImage = (BufferedImage)img;

Следующий код не компилируется, так как BufferedImage не может быть приведен к java.awt.Image

1 Ответ

0 голосов
/ 30 мая 2019
String imagePath = "path/to/your/image.jpg";
BufferedImage myPicture = ImageIO.read(new File(imagePath));

Вы можете использовать ImageIO, проверить эту документацию: Преобразование изображения в BufferedImage

Или этот удивительный урок: https://www.baeldung.com/java-images Или даже этот же вопрос в 2012 году: Преобразование изображения в BufferedImage

Если я неправильно отвечу на ваш вопрос, дайте мне знать.

Для изменения размера изображения вы можете попробовать использовать что-то подобное:

public static BufferedImage resize(BufferedImage img, int newW, int newH) { 
    Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH);
    BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB);

    Graphics2D g2d = dimg.createGraphics();
    g2d.drawImage(tmp, 0, 0, null);
    g2d.dispose();

    return dimg;
}  

ответ получен: Изменение размера изображения в буфере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...