พิกเซลเป็นองค์ประกอบที่เล็กที่สุดของภาพดิจิทัล แต่ละพิกเซลประกอบด้วยค่าอัลฟา สีแดง สีเขียว และสีน้ำเงิน ค่าพิกเซลจะถูกเก็บไว้ในพื้นที่หน่วยความจำ 32 บิตโดยมีค่า ARGB (แต่ละ 8 บิต) ในลำดับเดียวกัน ดังนั้นในการปรับเปลี่ยนสีของภาพ −
-
คุณต้องวนซ้ำแต่ละพิกเซลในภาพ
-
รับค่าพิกเซลโดยใช้เมธอด getRGB()
-
ดึงค่า ARGB จากค่าพิกเซล
-
ดำเนินการแก้ไขค่า RGB ที่จำเป็น
-
สร้างค่าพิกเซลใหม่ด้วยค่า RGB ที่ปรับเปลี่ยน
-
ตั้งค่าพิกเซลใหม่โดยใช้เมธอด setRGB()
การตั้งค่า ARGB -
สร้างอินสแตนซ์ของวัตถุสีโดยส่งค่าพิกเซลเป็นพารามิเตอร์ รับค่าสีแดง สีเขียว สีน้ำเงินโดยใช้เมธอด getRed(), getGreen() และ getBlue() ตามลำดับ หลังจากแก้ไขเพื่อตั้งค่ากลับ -
-
สร้างวัตถุสีโดยข้ามค่า RGB ใหม่เป็นพารามิเตอร์
-
รับค่าพิกเซลจากวัตถุสีโดยใช้เมธอด getRGB() ของคลาสสี
-
ตั้งค่าพิกเซลใหม่ให้กับรูปภาพโดยส่งตำแหน่ง x และ y พร้อมกับค่าพิกเซลใหม่ไปยังเมธอด setRGB()
ตัวอย่าง
<ก่อน> นำเข้า java.io.File; นำเข้า java.io.IOException; นำเข้า java.awt.Color; นำเข้า java.awt.image.BufferedImage; นำเข้า javax.imageio.ImageIO; SetPixels คลาสสาธารณะ { หลักโมฆะคงที่สาธารณะ (สตริง) args []) โยน IOException { // กำลังอ่านไฟล์รูปภาพ ไฟล์ =ไฟล์ใหม่ ("D:\\Images\\cat.jpg"); BufferedImage img =ImageIO.read (ไฟล์); สำหรับ (int y =0; yอินพุต
ผลลัพธ์
การตั้งค่า ARGB โดยใช้ตัวดำเนินการกะ -
ในการดึงค่าแต่ละค่าจากพิกเซล คุณต้องเลื่อนไปทางขวาไปยังตำแหน่งเริ่มต้นของแต่ละสี เช่น 24 สำหรับอัลฟ่า 16 สำหรับสีแดง เป็นต้น และดำเนินการในระดับบิตและดำเนินการด้วย 0Xff ซึ่งจะปิดบังตัวแปรที่ปล่อย 8 บิตสุดท้ายและไม่สนใจบิตที่เหลือทั้งหมด
คุณสามารถสร้างพิกเซลขึ้นมาใหม่ได้โดยการเลื่อน ARGB ไปทางซ้ายในตำแหน่งที่เกี่ยวข้องและเข้าร่วมโดยใช้ระดับบิต OR
//ตั้งค่า RGB ใหม่p =(a<<24) | (r<<16) | (g<<8) | b;img.setRGB(x, y, p);