- 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 { /*
*/` частное изображение BufferedImage1; частное изображение BufferedImage2; частное изображение BufferedImage3; частная строка pathImage3; public PictureOverlayTest (String filePathAndName1, String filePathAndName2, Строка filePathAndName3) выдает IOException { /*
*/ Файл файл = новый файл (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 { /*
*/
Файл файл = новый файл (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();
}
}
}
Ниже я нашел 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();
}
}
}