Обработка изображений в Java — создание зеркального изображения
Условие:
- Обработка изображений в Java — чтение и запись
- Обработка изображений в Java — получение и установка пикселей
- Обработка изображений в Java — преобразование цветного изображения в изображение в градациях серого
- Обработка изображений в Java — преобразование цветного изображения в негативное изображение
- Обработка изображений в Java — преобразование цветных изображений в красные, зеленые, синие
- Обработка изображений в Java — преобразование цветного изображения в изображение сепии
- Обработка изображений в Java — создание случайного пиксельного изображения
В этом наборе мы будем создавать зеркальное отражение. Изображение предмета, увиденного в зеркале, есть его зеркальное отражение или зеркальное отображение. На таком изображении правая сторона объекта появляется слева и наоборот. Поэтому говорят, что зеркальное отражение перевернуто вбок, а явление называется боковой инверсией. Основная хитрость заключается в том, чтобы получить исходные значения пикселей слева направо и установить их в результирующем изображении справа налево.
Алгоритм:
- Прочитайте исходное изображение в BufferedImage, чтобы прочитать данное изображение.
- Получить размеры данного изображения.
- Создайте еще один объект BufferedImage того же размера для хранения зеркального изображения.
- Получите значения ARGB (альфа, красный, зеленый и синий) из исходного изображения [слева направо].
- Установите ARGB (альфа, красный, зеленый и синий) для вновь созданного изображения [справа налево].
- Повторите шаги 4 и 5 для каждого пикселя изображения.
Реализация:
Java
// Java program to demonstrate // creation of a mirror image import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class MirrorImage { public static void main(String args[]) throws IOException { // BufferedImage for source image BufferedImage simg = null ; // File object File f = null ; // Read source image file try { f = new File( "C:/Users/hp/Desktop/Image Processing in Java/gfg-logo.png" ); simg = ImageIO.read(f); } catch (IOException e) { System.out.println( "Error: " + e); } // Get source image dimension int width = simg.getWidth(); int height = simg.getHeight(); // BufferedImage for mirror image BufferedImage mimg = new BufferedImage( width, height, BufferedImage.TYPE_INT_ARGB); // Create mirror image pixel by pixel for ( int y = 0 ; y < height; y++) { for ( int lx = 0 , rx = width - 1 ; lx < width; lx++, rx--) { // lx starts from the left side of the image // rx starts from the right side of the // image lx is used since we are getting // pixel from left side rx is used to set // from right side get source pixel value int p = simg.getRGB(lx, y); // set mirror image pixel value mimg.setRGB(rx, y, p); } } // save mirror image try { f = new File( "C:/Users/hp/Desktop/Image Processing in Java/GFG.png" ); ImageIO.write(mimg, "png" , f); } catch (IOException e) { System.out.println( "Error: " + e); } } } |
Выход:
Note: This code will not run on online ide since it requires an image in the drive.
Эта статья предоставлена Pratik Agarwal . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью с помощью write.geeksforgeeks.org или отправить ее по адресу review-team@geeksforgeeks.org. Посмотрите, как ваша статья появится на главной странице GeeksforGeeks, и помогите другим гикам. Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или хотите поделиться дополнительной информацией по теме, обсуждаемой выше.