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 อธิบายสั้น ๆ
ซีเนียร์ | วิธีการและคำอธิบาย |
---|---|
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
หากคุณเลื่อน ouput ลงจะเห็นรูปแบบต่อไปนี้