Kotlin में छवियों के साथ कार्य: लाइब्रेरीज़ और कोड उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में छवियों के साथ कार्य: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण

Kotlin एक आधुनिक मल्टीप्लेटफ़ॉर्म भाषा है, जिसका उपयोग JVM (Desktop), Android, साथ ही बैकएंड और मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स (KMP) के विकास में सक्रिय रूप से किया जाता है। छवियों के साथ कार्य करना सामान्य कार्यों में से एक है, और Kotlin इकोसिस्टम में कई दृष्टिकोण हैं: मानक Java लाइब्रेरीज़ के उपयोग से लेकर Android और Kotlin Multiplatform के लिए विशेष समाधान तक। इस लेख में हम मुख्य लाइब्रेरीज़ और टूल्स पर चर्चा करेंगे, कोड उदाहरण दिखाएंगे और व्यावहारिक सुझाव देंगे।



1. अंतर्निहित साधन: AWT (Java Desktop / JVM)

JVM पर डेस्कटॉप अनुप्रयोगों के लिए (जैसे JavaFX या Swing पर) मानक पैकेज java.awt और javax.imageio का उपयोग करना सबसे सुविधाजनक है। ये लाइब्रेरीज़ "बॉक्स से बाहर" उपलब्ध हैं और छवियों को लोड करने, आकार बदलने, प्रारूप बदलने और उन पर चित्र बनाने की अनुमति देती हैं।

उदाहरण: लोड करना, आकार बदलना और सहेजना

import java.awt.image.BufferedImageimport java.io.Fileimport javax.imageio.ImageIO

fun resizeImage(inputPath: String, outputPath: String, newWidth: Int, newHeight: Int) { val original: BufferedImage = ImageIO.read(File(inputPath)) val resized = BufferedImage(newWidth, newHeight, original.type) val g = resized.createGraphics() g.drawImage(original, 0, 0, newWidth, newHeight, null) g.dispose() ImageIO.write(resized, "jpg", File(outputPath)) println("छवि सहेजी गई: $outputPath")}

fun main() { resizeImage("input.jpg", "output.jpg", 800, 600)}

घुमाने, वॉटरमार्क लगाने या क्रॉप करने के लिए Graphics2D विधियों और एफ़िन ट्रांसफ़ॉर्मेशन का उपयोग किया जा सकता है।



2. Android: Bitmap और BitmapFactory

Kotlin में Android विकास में छवियों के साथ कार्य करने का आधार android.graphics.Bitmap क्लास और BitmapFactory उपयोगिताएँ हैं। ये संसाधनों, फ़ाइलों या नेटवर्क से छवियों को लोड करने और बुनियादी प्रसंस्करण करने की अनुमति देती हैं।

उदाहरण: संसाधनों से लोड करना और आकार बदलना (Android)

import android.graphics.Bitmapimport android.graphics.BitmapFactoryimport android.graphics.Matriximport java.io.ByteArrayOutputStream

fun scaleBitmap(bitmap: Bitmap, maxSize: Int): Bitmap { val width = bitmap.width val height = bitmap.height val scale = if (width > height) maxSize.toFloat() / width else maxSize.toFloat() / height val matrix = Matrix() matrix.postScale(scale, scale) return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true)}

fun bitmapToByteArray(bitmap: Bitmap, quality: Int = 90): ByteArray { val stream = ByteArrayOutputStream() bitmap.compress(Bitmap.CompressFormat.JPEG, quality, stream) return stream.toByteArray()}

अधिक जटिल प्रसंस्करण (फ़िल्टर, प्रभाव) के लिए android.renderscript (API 31 में पुराना) या OpenCV Android लाइब्रेरी का उपयोग किया जा सकता है।



3. Kotlin Multiplatform (KMP): KVision लाइब्रेरी या स्वयं के समाधान

मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स में छवियों के साथ कार्य करने का कोई एक मानक नहीं है। अक्सर उपयोग किया जाता है:

  • KVision — Kotlin/JS पर वेब अनुप्रयोगों के लिए फ्रेमवर्क, Canvas और ImageData के साथ कार्य करने के लिए अंतर्निहित समर्थन है।
  • Okio + ImageIO (JVM) / Bitmap (Android) — KMP के लिए अक्सर expect/actual रैपर लिखे जाते हैं, जहाँ प्रत्येक प्लेटफ़ॉर्म पर अपना कार्यान्वयन उपयोग किया जाता है।
  • Skiko — JetBrains द्वारा ग्राफ़िक्स (Skia) के लिए लाइब्रेरी, JVM, JS और Native पर उपलब्ध है। यह छवियों को लोड करने, चित्र बनाने और निर्यात करने की अनुमति देती है।

KMP के लिए expect/actual उदाहरण:

// commonMainexpect fun loadImageBytes(path: String): ByteArray

// androidMainactual fun load

अनुशंसाएँ