Go में छवियों के साथ काम करना: imaging लाइब्रेरी के साथ resize और crop

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

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

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

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 थंबनेल बनाना

अनुशंसाएँ