जावा में इमेज के साथ काम करना: लाइब्रेरीज़ और टूल्स का पूर्ण अवलोकन
Java रास्टर इमेज के साथ काम करने के लिए शक्तिशाली साधन प्रदान करता है — सरल लोडिंग और सेविंग से लेकर फ़िल्टर और न्यूरल नेटवर्क का उपयोग करके जटिल प्रोसेसिंग तक। इस लेख में हम तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: बिल्ट-इन लाइब्रेरी Java 2D, विशेषीकृत ImageJ और औद्योगिक मानक OpenCV। आप सीखेंगे कि उपयुक्त टूल कैसे चुनें और कार्यशील कोड उदाहरण देखेंगे।
1. बिल्ट-इन लाइब्रेरी Java 2D (javax.imageio, java.awt)
Java 2D मानक Java लाइब्रेरी (JDK) का हिस्सा है। इसे अतिरिक्त डिपेंडेंसी स्थापित करने की आवश्यकता नहीं है और यह बुनियादी कार्यों के लिए आदर्श है: लोड करना, आकार बदलना, क्रॉप करना, टेक्स्ट जोड़ना और सरल फ़िल्टर।
मुख्य क्लासेज़:
javax.imageio.ImageIO— इमेज को पढ़ना और लिखना (PNG, JPEG, BMP, GIF, WBMP)।java.awt.image.BufferedImage— पिक्सेल तक पहुँच के साथ मेमोरी में इमेज का प्रतिनिधित्व।java.awt.Graphics2D— ड्राइंग के लिए कॉन्टेक्स्ट (स्केलिंग, रोटेशन, ओवरले)।java.awt.image.BufferedImageOp— फ़िल्टर के लिए इंटरफ़ेस (ब्लर, कंट्रास्ट, कलर करेक्शन)।
उदाहरण 1: लोड करना, आकार बदलना और सेव करना
import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;
public class ImageResizer { public static void main(String[] args) throws IOException { // मूल इमेज लोड करें BufferedImage original = ImageIO.read(new File("input.jpg"));
// नए आयाम (उदाहरण के लिए, 300x200 तक छोटा करें) int newWidth = 300; int newHeight = 200;
// आवश्यक आयामों के साथ एक नई इमेज बनाएँ BufferedImage resized = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = resized.createGraphics();
// स्केलिंग के साथ मूल इमेज ड्रा करें g2d.drawImage(original, 0, 0, newWidth, newHeight, null); g2d.dispose();
// परिणाम सेव करें ImageIO.write(resized, "jpg", new File("output.jpg")); System.out.println("हो गया! आकार बदल दिया गया।"); }}उदाहरण 2: बिल्ट-इन फ़िल्टर लागू करना (ब्लर)
import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.awt.image.ConvolveOp;import java.awt.image.Kernel;import java.io.File;
public class BlurFilter { public static void main(String[] args) throws Exception { BufferedImage img = ImageIO.read(new File("input.jpg"));
// 3x3 ब्लर कर्नेल (बॉक्स ब्लर) float[] blurKernel = { 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f, 1f/9f }; Kernel kernel = new Kernel(3, 3, blurKernel); ConvolveOp convolve = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); BufferedImage blurred = convolve.filter(img, null);
ImageIO.write(blurred, "jpg", new File("blurred.jpg")); }}2. ImageJ लाइब्रेरी — वैज्ञानिक और चिकित्सा इमेज के लिए
ImageJ इमेज प्रोसेसिंग के लिए एक लोकप्रिय टूल है, जो मूल रूप से Java में लिखा गया है। यह सैकड़ों रेडी-मेड प्लगइन्स, मैक्रोज़ और एक शक्तिशाली API प्रदान करता है। यह माइक्रोस्कोपी, सैटेलाइट इमेज और किसी भी कार्य के विश्लेषण के लिए उपयुक्त है जहाँ पिक्सेल सांख्यिकी की आवश्यकता होती है।
कनेक्शन (Maven):
<dependency> <groupId>net.imagej</groupId> <artifactId>ij</artifactId> <version>1.53t</version></dependency>उदाहरण: हिस्टोग्राम विश्लेषण और थ्रेशोल्ड प्रोसेसिंग
import ij.IJ;import ij.ImagePlus;import ij. पुस्तकालय में भी
Swift (iOS/macOS) में YAML के साथ कार्य — Yams और YamlSwift लाइब्रेरीज़
Multer JavaScript (Node.js): पूरी गाइड उदाहरणों के साथ
C++ के लिए Redis क्लाइंट: कनेक्शन, इंस्टॉलेशन और उदाहरण
C++ में रिएक्टिव प्रोग्रामिंग: RxCpp और Boost.Signals2 लाइब्रेरीज़
JavaScript (Node.js) में Excel के साथ काम करें: लाइब्रेरी और टूल्स