Để chuyển đổi hình ảnh âm bản sang hình ảnh tích cực -
-
Đọc hình ảnh được yêu cầu bằng phương thức ImageIO.read ().
-
Lấy chiều cao và chiều rộng của hình ảnh.
-
Sử dụng các vòng lặp for lồng nhau đi qua từng pixel trong hình ảnh.
-
Nhận giá trị pixel bằng phương thức getRGB ().
-
Để truy xuất từng giá trị từ một pixel, bạn cần phải dịch chuyển sang phải về vị trí bắt đầu của mỗi màu, tức là 24 cho alpha 16 cho màu đỏ, v.v. và thực hiện theo chiều dọc và thao tác với 0Xff. Điều này che dấu biến để lại 8 bit cuối cùng và đánh dấu tất cả các bit còn lại.
-
Tính các giá trị đỏ, lục và lam mới bằng cách trừ chúng cho 255.
-
Tạo lại một pixel bằng cách dịch chuyển ARGB sang trái ở các vị trí tương ứng của chúng và nối chúng bằng cách sử dụng bitwise OR.
-
Đặt (các) giá trị pixel mới bằng phương thức setRGB ().
Ví dụ
import java.io.File; import java.io.IOException; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class Negative2Color { public static void main(String args[])throws IOException { //Reading the image File file= new File("D:\\Images\\cat_neg.jpg"); BufferedImage img = ImageIO.read(file); for (int y = 0; y < img.getHeight(); y++) { for (int x = 0; x < img.getWidth(); x++) { //Retrieving contents of a pixel int p = img.getRGB(x,y); //Getting the A R G B values from the pixel value int a = (p>>24)&0xff; int r = (p>>16)&0xff; int g = (p>>8)&0xff; int b = p&0xff; //Subtract RGB from 255 r = 255 - r; g = 255 - g; b = 255 - b; //Set new RGB value p = (a<<24) | (r<<16) | (g<<8) | b; img.setRGB(x, y, p); } } //Saving the modified image file = new File("D:\\Images\\negative_positive.jpg"); ImageIO.write(img, "jpg", file); System.out.println("Done..."); } }
Đầu vào
Đầu ra