مكتبة الذهاب معالجة الصور عالية المستوى مفتوحة المصدر

Go API الذي يسمح بتدوير الصور ، وملاءمة الصور ، وإنشاء الصور المصغرة ، وتكبير الصورة ، وتضمين الصورة أو توسيعها ، وإضافة تأثيرات التمويه إلى الصورة ، وغير ذلك الكثير.

bimg عبارة عن مكتبة Go لمعالجة الصور عالية المستوى ومفتوحة المصدر توفر القدرة على قراءة الصور ومعالجتها باستخدام سطرين فقط من كود Go. المكتبة أصغر حجمًا ولكنها تنتج نتائج جيدة التنظيم وفعالة. المكتبة سريعة جدًا مقارنة بالمكتبات الأخرى المتاحة التي تتطلب ذاكرة صغيرة جدًا لإكمال المهمة.

Bimg عبارة عن مكتبة C عالية المستوى مبنية على libvips وهي مكتبة قوية جدًا لمعالجة الصور. يوفر دعمًا لقراءة بعض تنسيقات ملفات الصور الشائعة جدًا مثل JPEG و PNG و WEBP و TIFF و PDF و GIF و SVG وما إلى ذلك. يمكنك أيضًا بسهولة تصدير الصور إلى تنسيقات JPEG و PNG و WEBP بالإضافة إلى الصور الشفافة.

تضمنت مكتبة bimg دعمًا للعديد من ميزات معالجة الصور المهمة مثل تغيير حجم الصور ، وتوسيع الصورة ، واقتصاص الصورة بما في ذلك دعم الاقتصاص الذكي ، وقلب الصور أو تدويرها ، وإنشاء صور مصغرة ، ودعم تكبير الصورة ، وإضافة العلامة المائية وتأثير Gaussian blur ، واستخراج محدد منطقة من صورة ، وتقليم الصور ، وتحويل الصورة إلى تنسيقات أخرى وغيرها الكثير.

Previous Next

الشروع في العمل مع bimg

الطريقة الأسهل والموصى بها لتثبيت bimg هي عبر GitHub.

قم بتثبيت bimg عبر GitHub

 go get -u gopkg.in/h2non/bimg.v1

تحويل الصورة إلى تنسيقات أخرى عبر Go

تتيح مكتبة bimg مفتوحة المصدر لمطوري البرامج تحويل الصور برمجيًا إلى تنسيقات ملفات مدعومة أخرى باستخدام سطرين فقط من كود Go. لنفترض أن لديك تنسيق JPEG وتريد تحويله إلى PNG. تحتاج إلى تقديم معلومات الصورة مثل اسم الصورة والعنوان وتنسيق التحويل. سيتم تحويل الصورة بنجاح إلى التنسيق المقترح بسهولة.

قم بتحويل صورة JPG إلى PNG عبر Go Library

buffer, err := bimg.Read("image.jpg")
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
newImage, err := bimg.NewImage(buffer).Convert(bimg.PNG)
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
if bimg.NewImage(newImage).Type() == "png" {
  fmt.Fprintln(os.Stderr, "The image was converted into png")
}

اقتصاص الصور أو تغيير حجمها

تمنح مكتبة bimg المجانية مطوري البرامج القدرة على تغيير حجم صورهم وقصها داخل تطبيقات Go الخاصة بهم. تحتاج إلى توفير عرض وارتفاع الصورة الجديدة والموقع أيضًا. كما أنه يدعم فرض عمليات تغيير الحجم دون الحفاظ على نسبة العرض إلى الارتفاع. يمكنك أيضًا إضافة نص واستخراج المنطقة التي تختارها من الصورة. اقتصاص الصورة إلى الحجم المحدد بالضبط.

تغيير حجم الصورة عبر Go Library

buffer, err := bimg.Read("image.jpg")
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
newImage, err := bimg.NewImage(buffer).Resize(800, 600)
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
size, err := bimg.NewImage(newImage).Size()
if size.Width == 800 && size.Height == 600 {
  fmt.Println("The image size is valid")
}
bimg.Write("new.jpg", newImage)

إضافة علامات مائية إلى الصور

تضمنت واجهة bimg API وظائف لإضافة علامات مائية إلى الصور داخل تطبيقات Go بسهولة. تعد إضافة علامة مائية ميزة مفيدة للغاية لحماية صورك. العلامة المائية هي الطريقة الأسهل والأكثر فائدة لحماية صورك على الإنترنت. يمكنك بسهولة وضع شعار أو علامة مائية نصية. تساعدك المكتبة على إضافة علامة مائية برمجيًا إلى صورتك في أي موضع محدد بالإضافة إلى التعتيم.

أضف علامة مائية إلى صورة عبر Go API

buffer, err := bimg.Read("image.jpg")
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
watermark := bimg.Watermark{
  Text:       "Chuck Norris (c) 2315",
  Opacity:    0.25,
  Width:      200,
  DPI:        100,
  Margin:     150,
  Font:       "sans bold 12",
  Background: bimg.Color{255, 255, 255},
}
newImage, err := bimg.NewImage(buffer).Watermark(watermark)
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
bimg.Write("new.jpg", newImage)

قلب وتدوير الصور

تمنح مكتبة bimg مفتوحة المصدر مطوري البرامج القدرة على تدوير صورهم وفقًا لاحتياجاتهم باستخدام أوامر لغة Go. هناك طريقة للدوران التلقائي للصورة. تقوم وظيفة AutoRotate تلقائيًا بتدوير الصورة بدون أي تحويل إضافي بناءً على البيانات الأولية لاتجاه EXIF ، إذا كانت متوفرة. كما يوفر دعمًا للصور المتقلب أو التقليب ، وتفسير الصور ، وطول الصورة ، والبيانات الوصفية للصورة ، وغير ذلك الكثير.

تدوير الصورة داخل Go Apps

buffer, err := bimg.Read("image.jpg")
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
newImage, err := bimg.NewImage(buffer).Rotate(90)
if err != nil {
  fmt.Fprintln(os.Stderr, err)
}
bimg.Write("new.jpg", newImage)
 عربي