1. מוצרים
  2.   תמונה
  3.   GO
  4.   Imaging
 
  

ספריית Go בקוד פתוח ליצירה ומניפולציה של תמונות

Go API עוצמתי שתומך בשינוי גודל, חיתוך וסיבוב תמונות JPEG, PNG, GIF, TIFF ו-BMP. אתה יכול גם להתאים את בהירות התמונה, ניגודיות, תיקון גמא של התמונות.

הקוד הפתוח Go Imaging API הוא חבילה חזקה מאוד המספקת פונקציונליות מלאה הקשורה ליצירת תמונות ומניפולציה. הספרייה גמישה מאוד ומאפשרת למפתחים ליצור בקלות תמונות חדשות ולשנות תמונות קיימות באמצעות כמה שורות קוד בלבד.

ההדמיה היא ספריית Go טהורה שגודלה קטן ויעילה בפונקציונליות. זה כלל תמיכה במספר פורמטים חשובים של קבצי תמונה כמו JPEG, PNG, GIF, TIFF, BMP ועוד רבים. הספרייה כללה גם מספר מסנני דגימה מחדש לשינוי גודל התמונה. כמה מסננים חשובים הם NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box וכן הלאה. הספרייה גם אפשרה למפתחים ליצור מסננים מותאמים אישית.

ספריית ההדמיה החינמית כללה מספר תכונות חשובות הקשורות לעיבוד תמונה, כגון שינוי גודל תמונות, סיבוב תמונה, חיתוך תמונה, התאמת בהירות תמונה, התאמות ניגודיות תמונה, תיקון גמא של התמונות, שינוי הרוויה של התמונה, תמונות שיבוט, תמונה לטשטש, לקודד ולפענח תמונות, שכבת-על תמונה, להוסיף חדות, ליצור תמונות ממוזערות ותכונות רבות אחרות.

Previous Next

תחילת העבודה עם הדמיה

הדרך הקלה והמומלצת ביותר להתקין את Imagingis באמצעות GitHub.

התקן הדמיה באמצעות GitHub

go get -u github.com/disintegration/imaging

צור תמונה חדשה באמצעות Go API

ספריית ההדמיה בקוד פתוח כללה תמיכה ביצירת תמונות חדשות בתוך האפליקציה שלהם באמצעות פקודות Go. יצירת התמונה החדשה דורשת רוחב תמונה, גובה, צבע רקע של התמונה ופורמט פלט של התמונה. אתה יכול גם לשנות בקלות את התמונה שנוצרה ולבצע פעולות שונות כמו היפוך, הגדרת אטימות, מיזוג, טשטוש ועוד הרבה יותר.

צור תמונה חדשה באמצעות Go API

func New(width, height int, fillColor color.Color) *image.NRGBA {
	if width <= 0 || height <= 0 {
		return &image.NRGBA{}
	}
	c := color.NRGBAModel.Convert(fillColor).(color.NRGBA)
	if (c == color.NRGBA{0, 0, 0, 0}) {
		return image.NewNRGBA(image.Rect(0, 0, width, height))
	}
	return &image.NRGBA{
		Pix:    bytes.Repeat([]byte{c.R, c.G, c.B, c.A}, width*height),
		Stride: 4 * width,
		Rect:   image.Rect(0, 0, width, height),
	}
}

המרת תמונה לפורמטים אחרים באמצעות Go

מפתחי תוכנה יכולים להמיר בקלות את התמונות שלהם לפורמטי קבצים נתמכים אחרים בתוך GO Apps שלהם באמצעות ספריית הדמיה חינמית. אתה רק צריך לספק את שם התמונה ואת פורמט תמונת הפלט. באמצעות פונקציית השמירה תוכלו לייצא בקלות את התמונות למספר פורמטים אחרים של קבצי תמונה נתמכים כגון PNG, BMP, GIF, JPEG, TIFF ועוד.

שנה גודל וחיתוך תמונות

ממשק ה-API של הדמיה בחינם כלל פונקציונליות לשינוי גודל תמונות בהתאם לצרכים שלך באמצעות פקודות Go. ראשית, עליך לפתוח תמונה ולספק את הגובה כמו גם את רוחב התמונה כדי לשנות את גודלה. אפשרות נוספת היא שתוכל לשנות את גודל התמונה רק על ידי מתן רוחב על ידי שימור יחס הגובה-רוחב. הספרייה מאפשרת גם חיתוך של התמונה המקורית על ידי מתן רוחב, גובה מותאמים אישית ושימוש בעוגן המרכזי.

צילום תמונות דרך GO API

func cropAndResize(img image.Image, width, height int, anchor Anchor, filter ResampleFilter) *image.NRGBA {
	dstW, dstH := width, height
	srcBounds := img.Bounds()
	srcW := srcBounds.Dx()
	srcH := srcBounds.Dy()
	srcAspectRatio := float64(srcW) / float64(srcH)
	dstAspectRatio := float64(dstW) / float64(dstH)
	var tmp *image.NRGBA
	if srcAspectRatio < dstAspectRatio {
		cropH := float64(srcW) * float64(dstH) / float64(dstW)
		tmp = CropAnchor(img, srcW, int(math.Max(1, cropH)+0.5), anchor)
	} else {
		cropW := float64(srcH) * float64(dstW) / float64(dstH)
		tmp = CropAnchor(img, int(math.Max(1, cropW)+0.5), srcH, anchor)
	}
	return Resize(tmp, dstW, dstH, filter)
}

הפוך, סובב, טשטוש ושיבוט תמונות

ספריית ההדמיה כללה מספר תכונות חשובות למניפולציה של תמונה כגון היפוך תמונה, סיבוב תמונה, טשטוש ושיבוט. כדי ליצור עותק של תמונה קיימת אתה רק צריך לקרוא לפונקציית Clone ולספק את התמונה הקיימת. הספרייה תומכת גם בסיבוב והיפוך התמונה שלך עם כמה שורות קוד בלבד. אתה יכול בקלות לסובב תמונה לפי הזווית הנתונה נגד כיוון השעון. פרמטר הזווית הוא זווית הסיבוב במעלות.

צילום וידאו דרך GO API

func Clone(img image.Image) *image.NRGBA {
	src := newScanner(img)
	dst := image.NewNRGBA(image.Rect(0, 0, src.w, src.h))
	size := src.w * 4
	parallel(0, src.h, func(ys <-chan int) {
		for y := range ys {
			i := y * dst.Stride
			src.scan(0, y, src.w, y+1, dst.Pix[i:i+size])
		}
	})
	return dst
}
 עִברִית