একটি ডিজিটাল ছবি পিক্সেলের 2D অ্যারে হিসাবে সংরক্ষণ করা হয় এবং একটি পিক্সেল হল একটি ডিজিটাল চিত্রের ক্ষুদ্রতম উপাদান৷
প্রতিটি পিক্সেলে আলফা, লাল, সবুজ, নীল মানের মান রয়েছে এবং প্রতিটি রঙের মান 0 থেকে 255 এর মধ্যে থাকে যা 8 বিট (2^8) ব্যবহার করে।
ARGB মানগুলি একই ক্রমে (ডান থেকে বামে) মেমরির 4 বাইটে সংরক্ষিত হয় যার সাথে নীল মান 0-7 বিটে, সবুজ মান 8-15 বিটে, লাল মান 16-23 বিটে এবং আলফা 24-31 এ বিট।
একটি ছবির পিক্সেল বিষয়বস্তু (ARGB মান) পুনরুদ্ধার করা −
একটি ছবি থেকে পিক্সেল মান পেতে -
-
ইমেজ প্রতিটি পিক্সেল মাধ্যমে লুপ. অর্থাৎ চিত্রের উচ্চতা এবং প্রস্থ অতিক্রম করে নেস্টেড লুপ চালান।
-
getRGB() পদ্ধতি ব্যবহার করে প্রতিটি পয়েন্টে পিক্সেল মান পান।
-
একটি প্যারামিটার হিসাবে পিক্সেল মান পাস করে কালার অবজেক্টকে ইনস্ট্যান্টিয়েট করুন।
-
যথাক্রমে getRed(), getGreen() এবং getBlue() পদ্ধতি ব্যবহার করে লাল, সবুজ, নীল মানগুলি পান৷
উদাহরণ
জাভা অনুসরণ করে, উদাহরণটি একটি চিত্রের প্রতিটি পিক্সেলের বিষয়বস্তু পড়ে এবং একটি ফাইলে আরজিবি মানগুলি লিখে −
import java.io.File; import java.io.FileWriter; import java.awt.Color; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class GetPixels { public static void main(String args[])throws Exception { FileWriter writer = new FileWriter("D:\\Images\\pixel_values.txt"); //Reading the image 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++) { //Retrieving contents of a pixel int pixel = img.getRGB(x,y); //Creating a Color object from pixel value Color color = new Color(pixel, true); //Retrieving the R G B values int red = color.getRed(); int green = color.getGreen(); int blue = color.getBlue(); writer.append(red+":"); writer.append(green+":"); writer.append(blue+""); writer.append("\n"); writer.flush(); } } writer.close(); System.out.println("RGB values at each pixel are stored in the specified file"); } }
আউটপুট
RGB values at each pixel are stored in the specified file
আপনি শিফট অপারেটর ব্যবহার করে পিক্সেল থেকে আরজিবি মান পুনরুদ্ধার করতে পারেন -
তা করতে -
-
ডানদিকে, প্রতিটি রঙের প্রারম্ভিক অবস্থানে স্থানান্তর করুন যেমন লালের জন্য আলফা 16 এর জন্য 24, ইত্যাদি।
-
শিফট রাইট অপারেশন অন্যান্য চ্যানেলের মানকে প্রভাবিত করতে পারে, এটি এড়াতে, আপনাকে 0Xff দিয়ে বিটওয়াইজ এবং অপারেশন করতে হবে। এটি ভেরিয়েবলটিকে শেষ 8 বিট ছেড়ে বাকি সমস্ত বিট উপেক্ষা করে।
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;