Kotlin में छवियों के साथ कार्य: लाइब्रेरी का अवलोकन और व्यावहारिक उदाहरण
Kotlin, Java के साथ पूरी तरह से संगत एक आधुनिक प्रोग्रामिंग भाषा होने के नाते, डेवलपर्स को छवियों के साथ काम करने के लिए लाइब्रेरी के पूरे पारिस्थितिकी तंत्र तक पहुंच प्रदान करता है। इस लेख में, हम Kotlin में छवियों को लोड करने, प्रोसेस करने, रूपांतरित करने और सहेजने के लिए उपलब्ध मुख्य उपकरणों की समीक्षा करेंगे। आप सीखेंगे कि सामान्य कार्यों को हल करने के लिए मानक Java क्षमताओं (AWT, Swing) और विशेष लाइब्रेरी का उपयोग कैसे करें।
मानक Java AWT और Swing उपकरण
Kotlin (Java की तरह) में छवियों के साथ काम करने के लिए बुनियादी कार्यक्षमता पैकेज java.awt और javax.imageio द्वारा प्रदान की जाती है। मुख्य वर्ग:
java.awt.image.BufferedImage— पिक्सेल तक पहुंच के साथ रास्टर छवि का प्रतिनिधित्व करता है।java.awt.Graphics2D— छवि पर ड्राइंग (रेखाएं, आकृतियाँ, टेक्स्ट) के लिए विधियाँ प्रदान करता है।javax.imageio.ImageIO— विभिन्न प्रारूपों (PNG, JPEG, BMP, GIF) में छवियों को पढ़ने और लिखने के लिए स्थैतिक विधियाँ।java.awt.Color— रंगों के साथ कार्य।java.awt.image.RescaleOp,java.awt.image.ConvolveOp— चमक, कंट्रास्ट, धुंधलापन बदलने के लिए फ़िल्टर।
उदाहरण 1: छवि लोड करना, आकार बदलना और सहेजना
import java.awt.image.BufferedImageimport java.awt.Graphics2Dimport java.awt.RenderingHintsimport java.io.Fileimport javax.imageio.ImageIO
fun resizeImage(inputPath: String, outputPath: String, targetWidth: Int, targetHeight: Int) { // मूल छवि लोड करना val originalImage: BufferedImage = ImageIO.read(File(inputPath))
// निर्दिष्ट आकार की नई छवि बनाना val resizedImage = BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB) val graphics: Graphics2D = resizedImage.createGraphics()
// रीसैंपलिंग गुणवत्ता सेट करना graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR) graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY) graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)
// स्केल की गई छवि बनाना graphics.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null) graphics.dispose()
// परिणाम सहेजना ImageIO.write(resizedImage, "jpg", File(outputPath)) println("छवि सहेजी गई: $outputPath")}
// कॉल का उदाहरणfun main() { resizeImage("input.jpg", "output_resized.jpg", 800, 600)}Thumbnailator लाइब्रेरी
Thumbnailator Java/Kotlin के लिए एक लोकप्रिय लाइब्रेरी है जो थंबनेल बनाने और छवियों का आकार बदलने को काफी सरल बनाती है। इसका मुख्य लाभ सरल fluent API है।
कनेक्शन (Gradle):
implementation("net.coobird:thumbnailator:0.4.20")उदाहरण 2: Thumbnailator का उपयोग करके थंबनेल बनाना
import net.coobird.thumbnailator.Thumbnailsimport java.io.File
fun createThumbnail(inputPath: String, outputPath: String, size: Int) { Thumbnails.of(File(inputPath)) .size(size, size) // वर्गाकार थंबनेल .keepAspectRatio(true) // अनुपात बनाए रखना .outputFormat("png") .toFile(File(outputPath)) println("थंबनेल बनाया गया: $outputPath")}
fun main() { createThumbnail("photo.jpg", "thumb.png", 150)}लाइब्रेरी क्रॉपिंग, रोटेशन, वॉटरमार्क जोड़ने और स्ट्रीम के साथ काम करने का भी समर्थन करती है।
Kotlin के लिए OpenCV लाइब्रेरी
गंभीर कंप्यूटर छवि प्रसंस्करण (चेहरा पहचान, फ़िल्टरिंग, कंटूर विश्लेषण) के लिए उपयोग किया जाता है