ספריית Go בקוד פתוח ליצירה ומניפולציה של תמונות
Go API עוצמתי שתומך בשינוי גודל, חיתוך וסיבוב תמונות JPEG, PNG, GIF, TIFF ו-BMP. אתה יכול גם להתאים את בהירות התמונה, ניגודיות, תיקון גמא של התמונות.
הקוד הפתוח Go Imaging API הוא חבילה חזקה מאוד המספקת פונקציונליות מלאה הקשורה ליצירת תמונות ומניפולציה. הספרייה גמישה מאוד ומאפשרת למפתחים ליצור בקלות תמונות חדשות ולשנות תמונות קיימות באמצעות כמה שורות קוד בלבד.
ההדמיה היא ספריית Go טהורה שגודלה קטן ויעילה בפונקציונליות. זה כלל תמיכה במספר פורמטים חשובים של קבצי תמונה כמו JPEG, PNG, GIF, TIFF, BMP ועוד רבים. הספרייה כללה גם מספר מסנני דגימה מחדש לשינוי גודל התמונה. כמה מסננים חשובים הם NearestNeighbor, Lanczos, CatmullRom, MitchellNetravali, Linear, Box וכן הלאה. הספרייה גם אפשרה למפתחים ליצור מסננים מותאמים אישית.
ספריית ההדמיה החינמית כללה מספר תכונות חשובות הקשורות לעיבוד תמונה, כגון שינוי גודל תמונות, סיבוב תמונה, חיתוך תמונה, התאמת בהירות תמונה, התאמות ניגודיות תמונה, תיקון גמא של התמונות, שינוי הרוויה של התמונה, תמונות שיבוט, תמונה לטשטש, לקודד ולפענח תמונות, שכבת-על תמונה, להוסיף חדות, ליצור תמונות ממוזערות ותכונות רבות אחרות.
תחילת העבודה עם הדמיה
הדרך הקלה והמומלצת ביותר להתקין את 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
}