ImageIO ক্লাসের ব্যবহার এবং ইমেজ ফাইল লোড করা
ImageIO ক্লাস জাভার একটি গুরুত্বপূর্ণ ক্লাস যা ইমেজ ফাইলগুলি লোড, সংরক্ষণ এবং রেন্ডার করার জন্য ব্যবহৃত হয়। এটি javax.imageio প্যাকেজের অন্তর্গত এবং JPEG, PNG, BMP, TIFF সহ বেশ কিছু ফাইল ফরম্যাট সমর্থন করে। ImageIO ক্লাসের সাহায্যে ইমেজ ফাইলের রিড (লোড) এবং রাইট (সংরক্ষণ) সহজভাবে করা যায়।
ImageIO ক্লাসের মৌলিক ব্যবহার
- ইমেজ লোড করা:
ImageIO.read()মেথড ব্যবহার করে একটি ইমেজ ফাইল লোড করা হয়। - ইমেজ সেভ করা:
ImageIO.write()মেথড ব্যবহার করে একটিBufferedImageফাইল সেভ করা হয়।
ইমেজ ফাইল লোড করা
ImageIO.read() মেথড একটি File বা InputStream অবজেক্ট গ্রহণ করে এবং BufferedImage অবজেক্ট ফেরত দেয়। এটি ইমেজের বিভিন্ন ধরনের ফরম্যাট (যেমন JPEG, PNG, BMP) সমর্থন করে।
উদাহরণ ১: JPEG বা PNG ফরম্যাটের ইমেজ লোড করা
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ImageLoader {
public static void main(String[] args) {
try {
// ইমেজ ফাইল লোড করা
File imageFile = new File("path/to/your/image.jpg"); // ছবি ফাইলের পাথ
BufferedImage image = ImageIO.read(imageFile); // ইমেজ লোড করা
// ইমেজ লোড করা সফল হলে কনসোল মেসেজ
System.out.println("Image Loaded Successfully!");
// ইমেজের আকার প্রদর্শন
System.out.println("Image Width: " + image.getWidth());
System.out.println("Image Height: " + image.getHeight());
} catch (IOException e) {
e.printStackTrace(); // কোনো সমস্যা হলে ত্রুটি মেসেজ প্রদর্শন
}
}
}এখানে, ImageIO.read() ব্যবহার করা হয়েছে ছবিটি লোড করতে। যদি ছবিটি সঠিকভাবে লোড হয়, তবে ইমেজের আকার (উচ্চতা এবং প্রস্থ) কনসোলে প্রদর্শিত হবে।
উদাহরণ ২: ইমেজ প্রদর্শন করা
একই কোডে ইমেজটি Swing লাইব্রেরি ব্যবহার করে একটি উইন্ডোতে প্রদর্শন করা যেতে পারে।
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
public class ImageDisplay {
public static void main(String[] args) {
JFrame frame = new JFrame();
try {
// ইমেজ ফাইল লোড করা
File imageFile = new File("path/to/your/image.jpg");
BufferedImage image = ImageIO.read(imageFile);
// JLabel এ ইমেজ প্রদর্শন
JLabel label = new JLabel(new ImageIcon(image));
frame.getContentPane().add(label, BorderLayout.CENTER);
// JFrame সেটআপ
frame.setTitle("Image Display");
frame.setSize(image.getWidth(), image.getHeight());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
} catch (IOException e) {
e.printStackTrace(); // ইমেজ লোড করার সময় যদি কোনো ত্রুটি হয়
}
}
}এখানে, Swing ব্যবহার করে BufferedImage এর মাধ্যমে ইমেজটিকে JLabel এর মাধ্যমে JFrame তে প্রদর্শন করা হচ্ছে।
ImageIO ক্লাসের অন্যান্য ফিচার
ইমেজ ফাইল রাইট (Save) করা:
ImageIO.write()মেথড ব্যবহার করেBufferedImageফাইলকে বিভিন্ন ফরম্যাটে সেভ করা যায়। যেমন, JPEG, PNG ইত্যাদি।
উদাহরণ:
import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageSaver { public static void main(String[] args) { try { // একটি নতুন BufferedImage তৈরি করা BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); // ছবি তৈরি করতে একটি কালো রঙ ব্যবহার করা হচ্ছে for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { image.setRGB(i, j, 0x000000); // কালো রঙ } } // ইমেজটি ফাইল হিসেবে সেভ করা File outputfile = new File("path/to/save/image.png"); ImageIO.write(image, "png", outputfile); // PNG ফরম্যাটে সেভ System.out.println("Image Saved Successfully!"); } catch (IOException e) { e.printStackTrace(); } } }- ইমেজ ফাইল ফরম্যাটের চেক করা:
ImageIO.getReaderFormatNames()এবংImageIO.getWriterFormatNames()ব্যবহার করে ইমেজের সমর্থিত ফরম্যাট চেক করা যায়।
সারসংক্ষেপ
ImageIO জাভার একটি গুরুত্বপূর্ণ ক্লাস যা ইমেজ লোডিং, সেভিং এবং বিভিন্ন ফরম্যাটে ইমেজ প্রসেসিংয়ে সহায়ক। এই ক্লাসের সাহায্যে আমরা সহজেই ইমেজ ফাইল লোড করতে, প্রদর্শন করতে এবং সংরক্ষণ করতে পারি। BufferedImage অবজেক্টের মাধ্যমে বিভিন্ন ধরনের ইমেজ প্রসেসিং কার্যক্রম যেমন ফিল্টারিং, এনহ্যান্সমেন্ট, এবং ম্যানিপুলেশন করা যায়।