Java DIP - пиксели изображения
Изображение содержит двумерный массив пикселей. Фактически это значение тех пикселей, из которых состоит изображение. Обычно изображение может быть цветным или полутоновым.
В Java для обработки изображений используется класс BufferedImage. Вам нужно позвонитьgetRGB() метод BufferedImage класс, чтобы получить значение пикселя.
Получение значения пикселей
Значение пикселя можно получить, используя следующий синтаксис:
Color c = new Color(image.getRGB(j, i));
Получение значений RGB
Метод getRGB()принимает индекс строки и столбца в качестве параметра и возвращает соответствующий пиксель. В случае цветного изображения он возвращает три значения: красный, зеленый, синий. Их можно получить следующим образом:
c.getRed();
c.getGreen();
c.getBlue();
Получение ширины и высоты изображения
Высоту и ширину изображения можно получить, вызвав getWidth() и getHeight()методы класса BufferedImage. Его синтаксис приведен ниже:
int width = image.getWidth();
int height = image.getHeight();
Помимо этих методов, в классе BufferedImage поддерживаются другие методы. Они кратко описаны -
Sr. No. | Метод и описание |
---|---|
1 |
copyData(WritableRaster outRaster) Он вычисляет произвольную прямоугольную область BufferedImage и копирует ее в указанный WritableRaster. |
2 |
getColorModel() Он возвращает ColorModel изображения. |
3 |
getData() Он возвращает изображение как одну большую плитку. |
4 |
getData(Rectangle rect) Он вычисляет и возвращает произвольную область BufferedImage. |
5 |
getGraphics() Этот метод возвращает Graphics2D, но здесь для обратной совместимости. |
6 |
getHeight() Он возвращает высоту BufferedImage. |
7 |
getMinX() Он возвращает минимальную координату x этого BufferedImage. |
8 |
getMinY() Он возвращает минимальную координату y этого BufferedImage. |
9 |
getRGB(int x, int y) Он возвращает целочисленный пиксель в цветовой модели RGB по умолчанию (TYPE_INT_ARGB) и цветовом пространстве sRGB по умолчанию. |
10 |
getType() Возвращает тип изображения. |
пример
В следующем примере показано использование класса Java BufferedImage, который отображает пиксели изображения размером (100 x 100) -
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
class Pixel {
BufferedImage image;
int width;
int height;
public Pixel() {
try {
File input = new File("blackandwhite.jpg");
image = ImageIO.read(input);
width = image.getWidth();
height = image.getHeight();
int count = 0;
for(int i=0; i<height; i++) {
for(int j=0; j<width; j++) {
count++;
Color c = new Color(image.getRGB(j, i));
System.out.println("S.No: " + count + " Red: " + c.getRed() +" Green: " + c.getGreen() + " Blue: " + c.getBlue());
}
}
} catch (Exception e) {}
}
static public void main(String args[]) throws Exception {
Pixel obj = new Pixel();
}
}
Вывод
Когда вы выполняете приведенный выше пример, он печатает пиксели следующего изображения -
Original Image
Pixels Output
Если вы прокрутите вывод вниз, то увидите следующую картину: