একটি পিক্সেল হলো ডিজিটাল চিত্রের সবচেয়ে ছোট উপাদান, প্রতিটি পিক্সেলে আলফা, লাল, সবুজ, নীল মান থাকে। পিক্সেল মান ৩২-বিট মেমরি স্পেসে ARGB মান (প্রতিটি ৮ বিট) একই ক্রমে সংরক্ষিত থাকে। তাই চিত্রের রঙ মডিফাই করতে -
চিত্রের প্রতিটি পিক্সেলের মধ্য দিয়ে লুপ চালাতে হবে।
getRGB() মেথড ব্যবহার করে পিক্সেল মান পেতে হবে।
পিক্সেল মান থেকে ARGB মান রিট্রিভ করতে হবে।
RGB মানগুলিতে প্রয়োজনীয় পরিবর্তন আনা হবে।
সংশোধিত RGB মান দিয়ে নতুন পিক্সেল মান তৈরি করতে হবে।
setRGB() মেথড ব্যবহার করে নতুন পিক্সেল মান সেট করতে হবে।
ARGB মান সেট করা -
পিক্সেল মান পাস করে Color অবজেক্ট ইনস্ট্যানশিয়েট করুন। getRed(), getGreen() এবং getBlue() মেথড ব্যবহার করে লাল, সবুজ, নীল মান পান। পরিবর্তন করার পর মানগুলো ফিরিয়ে সেট করতে -
নতুন RGB মান পাস করে একটি Color অবজেক্ট তৈরি করুন।
Color ক্লাসের getRGB() মেথড ব্যবহার করে কালার অবজেক্ট থেকে পিক্সেল মান পান।
x এবং y পজিশন এবং নতুন পিক্সেল মান পাস করে setRGB() মেথড ব্যবহার করে ইমেজে নতুন পিক্সেল মান সেট করুন।
উদাহরণ
import java.io.File;
import java.io.IOException;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class SetPixels {
public static void main(String args[]) throws IOException {
// ইমেজ পড়া হচ্ছে
File file = new File("D:\\Images\\cat.jpg");
BufferedImage img = ImageIO.read(file);
for (int y = 0; y < img.getHeight(); y++) {
for (int x = 0; x < img.getWidth(); x++) {
// একটি পিক্সেলের কন্টেন্ট রিট্রিভ করা হচ্ছে
int pixel = img.getRGB(x, y);
// পিক্সেল মান থেকে Color অবজেক্ট তৈরি
Color color = new Color(pixel, true);
// R G B মান রিট্রিভ করা হচ্ছে
int red = color.getRed();
int green = color.getGreen();
int blue = color.getBlue();
// RGB মান মডিফাই করা হচ্ছে
green = 150;
blue = 150;
// নতুন Color অবজেক্ট তৈরি
color = new Color(red, green, blue);
// ইমেজে নতুন Color অবজেক্ট সেট করা হচ্ছে
img.setRGB(x, y, color.getRGB());
}
}
// সংশোধিত ইমেজ সংরক্ষণ
file = new File("D:\\Images\\setting_pixels.jpg");
ImageIO.write(img, "jpg", file);
System.out.println("Done...");
}
}
ইনপুট

আউটপুট

শিফট অপারেটর ব্যবহার করে ARGB মান সেট করা -
একটি পিক্সেল থেকে প্রতিটি মান রিট্রিভ করতে আপনাকে প্রতিটি রঙের শুরু পজিশনে রাইট শিফট করতে হবে অর্থাৎ আলফার জন্য ২৪, লালের জন্য ১৬ ইত্যাদি এবং 0Xff এর সাথে বিটওয়াইজ AND অপারেশন করতে হবে। এটি ভেরিয়েবলকে মাস্ক করে শেষ ৮ বিট রেখে বাকি সব বিট উপেক্ষা করে।
আপনি ARGB কে তাদের সংশ্লিষ্ট পজিশনে লিফট শিফট করে এবং বিটওয়াইজ OR দিয়ে জোড়া দিয়ে একটি পিক্সেল পুনর্নির্মাণ করতে পারেন।
// নতুন RGB মান সেট p = (a << 24) | (r << 16) | (g << 8) | b; img.setRGB(x, y, p);