Ошибка наложения изображения и кода сравнения.

  • Автор темы morozoff1
  • 40
  • Обновлено
  • 17, May 2024
  • #1
Я все еще новичок в программировании, и у меня возникла проблема с кодом, и я надеюсь, что кто-нибудь сможет мне помочь.

Ниже я нашел Java-код для наложения и сравнения пикселей двух изображений на онлайн-форуме.

Когда я пытаюсь скомпилировать код, я получаю синтаксическую ошибку.

Надеюсь, вы поможете мне найти ошибку.

Вот ссылка на три изображения, показывающие ошибки, которые я получаю ( https://postimg.cc/gallery/fJZW2k5

). Заранее спасибо. Код: обмен стеком пакетов; импортировать java.awt.Color; импортировать java.awt.image.BufferedImage; импортировать java.io.File; импортировать java.io.IOException; импортировать javax.imageio.ImageIO; общественный класс PictureOverlayTest { /*
  • Четыре переменных: три для нужных BufferedImages, одна строка для
  • Путь третьего изображения, которого еще нет.


*/` частное изображение BufferedImage1; частное изображение BufferedImage2; частное изображение BufferedImage3; частная строка pathImage3; public PictureOverlayTest (String filePathAndName1, String filePathAndName2, Строка filePathAndName3) выдает IOException { /*
  • Конструктор, чтобы этот метод можно было использовать повторно и в чистоте. Потребности
  • три струны. Пути и имена файлов всех трех изображений. Изображение 1
  • и 2 уже должны существовать, изображение 3 будет создано, если все
  • требования соблюдены. Конструктор создает первые два буферизованных
  • изображения, устанавливает все необходимые переменные и запускает функцию checkAndCompare().
  • метод


*/ Файл файл = новый файл (filePathAndName1); this.image1 = ImageIO.read(файл); файл = новый файл (filePathAndName2); this.image2 = ImageIO.read(файл); this.pathImage3 = filePathAndName3; проверитьИСравнить(); } Private void checkAndCompare() выдает IOException { /*
  • Эта функция создает синий цвет, сравнивает размеры обоих
  • изображения, и если они одинаковые, создается третье изображение. Затем это
  • циклически перебирает два изображения и сравнивает каждый пиксель. Если пиксели
  • одинаковы, третье изображение в этой точке получает синий пиксель


*/

Цвет синий = Цвет.синий;

если (image1.getHeight() == image2.getHeight()

& & image1.getWidth() == image2.getWidth()) {

image3 = новый BufferedImage(image1.getWidth(), image1.getHeight(),

изображение1.getType());

for (int y = 0; y < image1.getHeight(); y++) {

for (int x = 0; x < image1.getWidth(); x++) {

int colorImage1 = image1.getRGB(x, y);

int colorImage2 = image2.getRGB(x, y);

если (colorImage1 == colorImage2) {

image3.setRGB(x, y, blue.getRGB()); } еще { // Какой бы цвет вы ни выбрали.

По умолчанию он черный. } } } сохранитьКартину3(); System.out.println("Сообщение: сравнение изображений завершено"); } еще { System.out.println("Ошибка: размеры изображения не совпадают"); } } Private void savePicture3() выдает IOException { /*
  • Этот метод сохраняет созданное изображение в файл на вашем компьютере.
  • Оператор if() используется для проверки успешности файла.
  • создано во избежание нежелательных ошибок. Имейте в виду, что вы
  • необходимо изменить «bmp» в ImageIO.write() на любой формат, который вы хотите
  • на самом деле хочу


*/

Файл файл = новый файл (pathImage3);

если (file.createNewFile()) {

ImageIO.write(изображение3, «bmp», файл);

}

}

}

обмен стеком пакетов;

импортировать java.io.IOException;

общественный класс Main {

public static void main(String[] args) {

// TODO Автоматически сгенерированная заглушка метода

пытаться {

Тест PictureOverlayTest = новый PictureOverlayTest(

"H:\\stackexchange\\file1.bmp",

"H:\\stackexchange\\file2.bmp",

"H:\\stackexchange\\file3.bmp");

} catch (IOException e) {

// TODO Автоматически сгенерированный блок catch

е.printStackTrace();

}

}

}

morozoff1


Рег
22 Oct, 2013

Тем
1

Постов
1

Баллов
11
Тем
49554
Комментарии
57426
Опыт
552966

Интересно