Go API لمعالجة الصور المستندة إلى HTTP
مكتبة Open Source Go التي تدعم الاقتصاص الذكي عبر الإنترنت ، أو قلب الصور أو تدويرها ، وإنشاء صور مصغرة ، وتكبير الصورة ، وإضافة علامة مائية إلى PNG ، و WEBP ، و TIFF ، و PDF ، و GIF ، و SVG ، إلخ.
التخيل عبارة عن واجهة برمجة تطبيقات Go API لمعالجة الصور ذات مصدر مفتوح وقوية للغاية ، والتي تمنح مطوري البرامج القدرة على إجراء عمليات متقدمة للصور عبر خدمات HTTP الخاصة أو العامة مع تبعية أقل. وهو يدعم العمليات المتقدمة مثل ترخيص رمز API ، وحماية توقيع URL ، واستراتيجية خنق حركة مرور HTTP ، ودعم CORS لعملاء الويب. يمكن للمكتبة قراءة الصور من حمولات HTTP POST أو المسارات المحلية للخادم أو خوادم HTTP البعيدة.
التخيل عبارة عن مكتبة قوية ومستقرة مبنية على معالجة صور سريعة وفعالة أعلى libvips. تضمنت المكتبة دعمًا لتنسيقات الصور مثل تنسيقات JPEG و PNG و HEIF و WEBP و TIFF و PDF و GIF و SVG بالإضافة إلى تحويل شفاف عبرها. لقد قدم دعمًا كاملاً لـ Docker & Fly.io. إن الشيء العظيم في Fly هو أنه يمكن أن يقلل وقت الاستجابة ويوفر ممارسة أفضل من خلال خدمة حركة المرور بالقرب من موقع المستخدم.
تدعم المكتبة الخيالية بشكل كامل العديد من الميزات المهمة المتعلقة بإنشاء الصور وتحويلها ومعالجتها مثل تغيير حجم الصورة ، وتكبير الصور ، واقتصاص الصور ، والمحاصيل الذكية ، وتدوير الصور ، والتدوير التلقائي مع مزيد من تحويلات الصور ، والانعكاس التلقائي بناءً على بيانات EXIF الوصفية ، والصورة التقليب ، تكبير الصور ، إنشاء صور مصغرة ، ملائمة الصور ، تضمين صورة أو توسيعها ، إضافة صورة علامة مائية ، إضافة تأثيرات ضبابية إلى صورة وغير ذلك الكثير.
الشروع في العمل التخيلي
الطريقة الأسهل والموصى بها لتثبيت خيالي هي عبر GitHub.
تثبيت وهمي عبر جيثب
go get -u github.com/h2non/imaginary
تحويل الصور إلى تنسيقات أخرى عبر Go
تضمنت المكتبة التخيلية لواجهة برمجة التطبيقات مفتوحة المصدر دعمًا لتحويل صورك إلى تنسيقات ملفات أخرى مدعومة بسهولة. يمكنك حفظ الصور ببعض التنسيقات المفيدة جدًا مثل تنسيقات JPEG و PNG و WEBP. قدمت المكتبة دعمًا للتحويل مع إعدادات جودة وضغط إضافية. تحتاج فقط إلى توفير اسم الصورة الصحيح وعنوانها وتنسيق التحويل وستقوم المكتبة بتحويلها لك بسهولة من خلال بضعة أوامر Go.
تحويل الصورة عبر مكتبة خيالية
func Convert(buf []byte, o ImageOptions) (Image, error) {
if o.Type == "" {
return Image{}, NewError("Missing required param: type", http.StatusBadRequest)
}
if ImageType(o.Type) == bimg.UNKNOWN {
return Image{}, NewError("Invalid image type: "+o.Type, http.StatusBadRequest)
}
opts := BimgOptions(o)
return Process(buf, opts)
}
اقتصاص الصور عبر الإنترنت عبر Go
تتيح المكتبة التخيلية مفتوحة المصدر لمطوري البرامج اقتصاص صورهم عبر الإنترنت ببضعة سطرين فقط من كود Go داخل تطبيقاتهم الخاصة. يمكنك قص صورتك من خلال توفير عرض أو ارتفاع مخصصين. تسهل المكتبة عملك من خلال الحفاظ على نسبة الصورة. تدعم المكتبة أيضًا اقتصاص الصورة باستخدام خوارزمية الاقتصاص الذكي المضمنة في libvips. يمكنك أيضًا تحديد مستوى ضغط الصور لصور PNG وقلب الصور وتقليبها وتدويرها بسهولة.
اقتصاص الصورة عبر Go Library
{
"operation": "crop",
"params": {
"width": 500,
"height": 300
}
تغيير حجم الصور لتناسب
تضمنت المكتبة الخيالية المجانية دعمًا لتغيير حجم الصور لتلائم استخدام أوامر Go داخل تطبيقاتها. يمكنك بسهولة تغيير حجم الصورة لتلائم العرض والارتفاع ، دون قصها. تسهل المكتبة عملك من خلال الحفاظ على نسبة العرض إلى الارتفاع للصورة. يحدد العرض والارتفاع أقصى مربع إحاطة للصورة.
تغيير حجم الصورة عبر مكتبة Free Go
func Resize(buf []byte, o ImageOptions) (Image, error) {
if o.Width == 0 && o.Height == 0 {
return Image{}, NewError("Missing required param: height or width", http.StatusBadRequest)
}
opts := BimgOptions(o)
opts.Embed = true
if o.IsDefinedField.NoCrop {
opts.Crop = !o.NoCrop
}
return Process(buf, opts)
}
قم بتدوير صورك وتدويرها تلقائيًا
توفر المكتبة الخيالية المجانية وظائف لتدوير صورك بسهولة. وقد تضمنت أيضًا وظيفة مفيدة للغاية للتدوير التلقائي للصور داخل تطبيقات Go. يقوم تلقائيًا بتدوير الصورة بدون أي تحويلات أخرى للصورة استنادًا إلى بيانات توجيه EXIF الأولية. ينتج عن طريقة AutoRotate صورة جديدة بنفس حجم وتنسيق صورة الإدخال.
تدوير الصورة تلقائيًا عبر مكتبة Free Go
func AutoRotate(buf []byte, o ImageOptions) (out Image, err error) {
defer func() {
if r := recover(); r != nil {
switch value := r.(type) {
case error:
err = value
case string:
err = errors.New(value)
default:
err = errors.New("libvips internal error")
}
out = Image{}
}
}