Go में इमेज प्रोसेसिंग: resize और crop (आकार बदलना और क्रॉप करना)

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

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

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

Go में इमेज प्रोसेसिंग: आकार बदलना (resize) और क्रॉप करना (crop)

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

इमेज प्रोसेसिंग के लिए Go क्यों?

Go नेटिव कोड में कंपाइल होता है, इसमें उच्च प्रदर्शन और बिल्ट-इन मल्टीथ्रेडिंग सपोर्ट है। यह इसे हाई-लोड इमेज प्रोसेसिंग सर्विसेज के लिए एक बेहतरीन विकल्प बनाता है। Python के विपरीत, जहां अक्सर Pillow (C-एक्सटेंशन) का उपयोग होता है, Go शुद्ध Go-इम्प्लीमेंटेशन प्रदान करता है जो माइक्रोसर्विस आर्किटेक्चर में आसानी से इंटीग्रेट हो जाते हैं।

मुख्य लाइब्रेरी

  • github.com/disintegration/imaging — सबसे लोकप्रिय लाइब्रेरी। resize, crop, rotate, blur और अन्य ऑपरेशनों के लिए आसान API प्रदान करती है। यह स्टैंडर्ड image पैकेज के ऊपर काम करती है।
  • github.com/nfnt/resize — शुरुआती लाइब्रेरी में से एक। तेज़ गति और विभिन्न इंटरपोलेशन एल्गोरिदम (NearestNeighbor, Bilinear, Lanczos2, Lanczos3) के सपोर्ट के लिए जानी जाती है।
  • github.com/anthonynsimon/bild — एक नया प्रोजेक्ट जो प्रदर्शन और कोड की सफाई पर ध्यान केंद्रित करता है। resize, crop, और इफेक्ट्स को सपोर्ट करता है।

इस लेख में हम imaging लाइब्रेरी पर ध्यान केंद्रित करेंगे, जो फीचर्स और उपयोग में आसानी के मामले में सबसे संतुलित है।

इंस्टॉलेशन

शुरू करने के लिए, go get कमांड से लाइब्रेरी इंस्टॉल करें:

go get github.com/disintegration/imaging

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

Resize ऑपरेशन इमेज को नए आकार में स्केल करता है। imaging लाइब्रेरी कई मोड सपोर्ट करती है:

  • Fit — इमेज को दिए गए आयत में फिट करता है, अनुपात बनाए रखता है।
  • Fill — आयत को भरता है, ज़रूरत पड़ने पर किनारों को क्रॉप करता है।
  • Resize — सटीक चौड़ाई और ऊंचाई में बदलता है (अनुपात बनाए रखना ज़रूरी नहीं)।

अनुपात बनाए रखते हुए बेसिक आकार बदलने का उदाहरण (Fit):

package main

import (
    "github.com/disintegration/imaging"
    "log"
)

func main() {
    // स्रोत इमेज खोलें
    src, err := imaging.Open("input.jpg")
    if err != nil {
        log.Fatalf("खोलने में त्रुटि: %v", err)
    }

    // चौड़ाई 800px करें, ऊंचाई अपने आप कैलकुलेट होगी
    dst := imaging.Fit(src, 800, 600, imaging.Lanczos)

    // परिणाम सेव करें
    err = imaging.Save(dst, "output_fit.jpg")
    if err != nil {
        log.Fatalf("सेव करने में त्रुटि: %v", err)
    }
    log.Println("इमेज सफलतापूर्वक प्रोसेस हुई!")
}

अगर आपको सटीक आकार बदलना है (जैसे, 150x150 का प्रीव्यू बनाना):

// सटीक आकार बदलना (अनुपात बिगड़ सकता है)
dst := imaging.Resize(src, 150, 150, imaging.Lanczos)

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

क्रॉप करने से इमेज का कुछ हिस्सा हटाया जाता है। imaging में दो मुख्य तरीके हैं:

  • Crop — दिए गए कोऑर्डिनेट्स के अनुसार आयताकार क्षेत्र काटता है।
  • CropCenter — दिए गए आकार का केंद्रीय क्षेत्र काटता है।

केंद्रीय भाग क्रॉप करने का उदाहरण (स्क्वायर अवतार बनाने के लिए उपयोगी):

package main

import (
    "github.com/disintegration/imaging"
    "log"
)

func main() {
    src, err := imaging.Open("input.jpg")
    if err != nil {
        log.Fatalf("त्रुटि                    

अनुशंसाएँ