Go के लिए imaging लाइब्रेरी: छवियों का resize और crop
आधुनिक वेब डेवलपमेंट में, छवि प्रसंस्करण प्रमुख कार्यों में से एक है: थंबनेल बनाने से लेकर विभिन्न स्क्रीन रिज़ॉल्यूशन के लिए छवियों को अनुकूलित करने तक। यदि आप Go (Golang) में लिख रहे हैं और छवियों के साथ काम करने के लिए एक सरल लेकिन शक्तिशाली उपकरण की तलाश कर रहे हैं, तो imaging लाइब्रेरी पर ध्यान दें। यह आकार बदलने (resize), क्रॉप करने (crop), घुमाने, फ़िल्टर करने और कई अन्य कार्यों के लिए एक सुविधाजनक API प्रदान करती है।
imaging क्या है?
imaging Go के लिए एक लोकप्रिय लाइब्रेरी है, जो मानक लाइब्रेरी के image पैकेज पर आधारित है, लेकिन बहुत अधिक सुविधाजनक इंटरफ़ेस के साथ। यह JPEG, PNG, GIF और BMP फॉर्मेट को सपोर्ट करती है, और न्यूनतम कोड के साथ संचालन करने की अनुमति देती है। मुख्य लाभ गति और एकीकरण में आसानी है।
स्थापना (Installation)
लाइब्रेरी स्थापित करने के लिए, टर्मिनल में निम्नलिखित चलाएँ:
go get -u github.com/disintegration/imagingइसके बाद, आप इसे अपने प्रोजेक्ट में इम्पोर्ट कर सकते हैं:
import "github.com/disintegration/imaging"मुख्य संचालन: resize और crop
1. आकार बदलना (resize)
imaging.Resize फ़ंक्शन आपको निर्दिष्ट चौड़ाई और ऊँचाई में छवि का आकार बदलने की अनुमति देता है। यदि अनुपात बनाए रखना है, तो किसी एक पक्ष के लिए 0 पास करें - लाइब्रेरी स्वचालित रूप से दूसरे की गणना करेगी।
उदाहरण: चौड़ाई के अनुसार 300 पिक्सेल तक resize
package main
import ( "github.com/disintegration/imaging")
func main() { // छवि खोलें img, err := imaging.Open("input.jpg") if err != nil { panic(err) }
// चौड़ाई 300px करें, ऊँचाई स्वचालित रूप से समायोजित हो जाती है resized := imaging.Resize(img, 300, 0, imaging.Lanczos)
// परिणाम सहेजें err = imaging.Save(resized, "output_resized.jpg") if err != nil { panic(err) }}उदाहरण में imaging.Lanczos फ़िल्टर का उपयोग किया गया है - जो resize के लिए सबसे गुणवत्तापूर्ण फ़िल्टर में से एक है। आप अन्य भी चुन सकते हैं: NearestNeighbor, Box, Linear, Gaussian आदि।
2. क्रॉप करना (crop)
imaging.Crop फ़ंक्शन छवि के एक आयताकार क्षेत्र को काटता है। इसे ऊपरी बाएँ कोने के निर्देशांक, क्षेत्र की चौड़ाई और ऊँचाई पास करने की आवश्यकता होती है।
उदाहरण: 200x200 पिक्सेल का केंद्रीय भाग क्रॉप करना
package main
import ( "github.com/disintegration/imaging")
func main() { img, err := imaging.Open("input.jpg") if err != nil { panic(err) }
// केंद्रीय क्रॉप के लिए निर्देशांक की गणना करें width := img.Bounds().Dx() height := img.Bounds().Dy() x := (width - 200) / 2 y := (height - 200) / 2
// क्रॉप करें cropped := imaging.Crop(img, imaging.Rect(x, y, x+200, y+200))
err = imaging.Save(cropped, "output_cropped.jpg") if err != nil { panic(err) }}यदि आप बस केंद्र से एक वर्ग में क्रॉप करना चाहते हैं, तो imaging.CropCenter का उपयोग करें:
croppedCenter := imaging.CropCenter(img, 200, 200)उन्नत सुविधाएँ
मूल संचालन के अलावा, imaging प्रदान करता है:
- Thumbnail — अनुपात बनाए रखते हुए और पृष्ठभूमि भरते हुए थंबनेल बनाना।
- Rotate — मनमाने कोण पर घुमाना।
- Flip — क्षैतिज या लंबवत रूप से पलटना।
- Blur — छवि को धुंधला करना।
- Sharpen — तीक्ष्णता बढ़ाना।
- Grayscale — काले और सफेद प्रारूप में रूपांतरण।
उदाहरण: 150x150 थंबनेल बनाना
पुस्तकालय में भी
Kotlin में दिनांकों के साथ कार्य: लाइब्रेरी और उपकरण (Kotlinx-datetime, Joda-Time, java.time)
Go (Golang) में ZIP/आर्काइव के साथ काम करना — पूर्ण गाइड
कोटलिन में लॉगिंग: विकास के लिए सर्वश्रेष्ठ लाइब्रेरी और उपकरण
गो (Golang) पर मशीन लर्निंग: लाइब्रेरी और फ्रेमवर्क का अवलोकन
Go (Golang) में JSON प्रोसेसिंग: उदाहरणों के साथ पूर्ण गाइड
अनुशंसाएँ