Kotlin में इमेज प्रोसेसिंग: Kamel लाइब्रेरी से resize और crop

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

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

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

Kotlin में इमेज प्रोसेसिंग: Kamel लाइब्रेरी से resize और crop

आज के समय में Android और Kotlin मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स में इमेज का आकार बदलना (resize) और क्रॉप करना (crop) एक आम ज़रूरत बन गई है। इसका उपयोग लोडिंग ऑप्टिमाइज़ेशन, थंबनेल बनाने, अलग-अलग स्क्रीन के हिसाब से ढालने या सर्वर पर भेजने के लिए इमेज तैयार करने में किया जाता है। इस लेख में हम Kamel लाइब्रेरी के बारे में जानेंगे — जो शुद्ध Kotlin में लिखा गया एक शक्तिशाली टूल है और मल्टीप्लेटफ़ॉर्म को सपोर्ट करता है।

Kamel क्या है?

Kamel (Kotlin Asynchronous Media Loading) एक ऐसी लाइब्रेरी है जो खासतौर पर Kotlin Multiplatform के लिए बनाई गई है। यह इमेज लोड करने, कैश करने और प्रोसेस करने का काम करती है। इसमें resize और crop जैसे ऑपरेशन के लिए एक सरल API उपलब्ध है, जिसके लिए Glide या Picasso जैसे भारी फ्रेमवर्क की ज़रूरत नहीं पड़ती। Kamel Android, iOS, JVM और JavaScript को सपोर्ट करता है, जो इसे क्रॉस-प्लेटफ़ॉर्म प्रोजेक्ट्स के लिए एक बेहतरीन विकल्प बनाता है।

लाइब्रेरी को Gradle के ज़रिए इंस्टॉल करें:

// build.gradle.kts (commonMain)
implementation("media.kamel:kamel-image:1.0.0")

इमेज का आकार बदलना (resize)

Resize ऑपरेशन इमेज के मूल आकार को दी गई चौड़ाई और ऊंचाई में बदलने की अनुमति देता है। Kamel में यह resize() फंक्शन के ज़रिए किया जाता है, जो टार्गेट साइज़ और स्केल मोड (scale mode) को स्वीकार करता है।

बेसिक resize का उदाहरण:

import androidx.compose.runtime.*
import media.kamel.image.loadImage
import media.kamel.image.resizer.*

@Composable
fun ResizedImage() {
    val image = loadImage(
        data = "https://example.com/photo.jpg",
        resizer = Resizer(
            width = 300,
            height = 200,
            scaleMode = ScaleMode.Fit
        )
    )
    // Image composable में image को दिखाएं
}

इस उदाहरण में इमेज को 300x200 पिक्सल में स्केल किया जाएगा और अनुपात (aspect ratio) बना रहेगा (ScaleMode.Fit)। अगर आप इमेज को बिना अनुपात बनाए खींचना चाहते हैं, तो ScaleMode.Fill या ScaleMode.Crop का उपयोग करें (आखिरी वाला अपने आप किनारों को क्रॉप कर देता है)।

इमेज क्रॉप करना (crop)

Crop आपको मूल इमेज से एक आयताकार क्षेत्र काटने की सुविधा देता है। Kamel में क्रॉप दो तरीकों से किया जा सकता है:

  • ScaleMode.Crop के ज़रिए — स्केलिंग के दौरान ऑटोमैटिक क्रॉप;
  • मैन्युअल रीजन निर्दिष्ट करके — ImageRegion क्लास का उपयोग करके।

मैन्युअल क्रॉप का उदाहरण:

import media.kamel.image.loadImage
import media.kamel.image.cropper.*

@Composable
fun CroppedImage() {
    val image = loadImage(
        data = "https://example.com/photo.jpg",
        cropper = Cropper(
            region = ImageRegion(
                left = 50,
                top = 50,
                width = 200,
                height = 150
            )
        )
    )
    // क्रॉप की गई इमेज दिखाएं
}

यहाँ इमेज से (50, 50) कोऑर्डिनेट से शुरू होने वाला 200x150 पिक्सल का क्षेत्र काटा जाता है। यह तब उपयोगी है जब आपको फोटो का कोई खास हिस्सा, जैसे चेहरा, निकालना हो।

resize और crop को एक साथ उपयोग करना

अक्सर दोनों ऑपरेशन एक साथ करने की ज़रूरत होती है: पहले क्रॉप, फिर आकार बदलना। Kamel में इन्हें चेन कॉल के ज़रिए जोड़ा जा सकता है:

@Composable
fun CombinedProcessing() {
    val image = loadImage(
        data = "https://example.com/photo.jpg",
        resizer = Resizer(width = 400, height = 300, scaleMode = ScaleMode.Fit),
        cropper = Cropper(region = ImageRegion(100, 100, 600, 450))
    )
}

निष्पादन का क्रम: पहले Cropper लागू होता है, फिर Resizer। यह सुनिश्चित करता है कि क्रॉपिंग सही तरीके से हो और उसके बाद ही आकार बदला जाए।

अनुशंसाएँ