כלי שורת פקודה שימושיים אלה מציגים את הרבגוניות של גולנג.

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

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

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

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

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

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

instagram viewer

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

המרת תמונות מ-PNG ל-JPEG

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

ה תמונה החבילה מכילה jpeg ו png חבילות שבהן תוכל להשתמש להמרת פורמט תמונה בין שני הפורמטים.

אתה יכול לכתוב פונקציה להמרת תמונות PNG לפורמט JPEG. הנה דוגמה שמקבלת את זרם הנתונים של בתים של תמונה כקלט:

package main

import (
"bytes"
"fmt"
"image/jpeg"
"image/png"
"log"
"net/http"
"os"
)

// ToJpeg converts a PNG image to JPEG format
funcToJpeg(imageBytes []byte)([]byte, error) {

// DetectContentType detects the content type
contentType := http.DetectContentType(imageBytes)

switch contentType {
case"image/png":
// Decode the PNG image bytes
img, err := png.Decode(bytes.NewReader(imageBytes))

if err != nil {
returnnil, err
}

buf := new(bytes.Buffer)

// encode the image as a JPEG file
if err := jpeg.Encode(buf, img, nil); err != nil {
returnnil, err
}

return buf.Bytes(), nil
}

returnnil, fmt.Errorf("unable to convert %#v to jpeg", contentType)
}

ה ToJpeg הפונקציה מזהה את סוג התוכן עם http. DetectContentType פוּנקצִיָה. פונקציה זו לוקחת את פרוסת בתים של התמונה כקלט ומחזירה את סוג התוכן כמחרוזת.

ה להחליף משפט מותנה יש מקרה אחד שבודק אם פורמט התמונה הוא PNG. הפונקציה מפענחת את פרוסת בתים של התמונה אם זו תמונת PNG עם תמונה. לְפַעֲנֵחַ פוּנקצִיָה.

סוף - סוף, ה ToJpeg הפונקציה יוצרת מאגר חדש ומקודדת את התמונה בפורמט JPEG עם jpeg. לְהַצְפִּין פוּנקצִיָה.

אתה יכול לטעון את תמונת ה-PNG לפני שתקרא ל-ToJpeg עם ה- OS. ReadFile פוּנקצִיָה:

funcmain() {
// Read the PNG image file

// Replace with the actual path to your PNG image
imagePath := "image.png"
imageBytes, err := os.ReadFile(imagePath)

if err != nil {
log.Fatalf("Failed to read image file: %s", err)
}

// Convert the PNG image to JPEG
jpegBytes, err := ToJpeg(imageBytes)

if err != nil {
log.Fatalf("Failed to convert image: %s", err)
}

// Write the JPEG bytes to a file

// Replace with the desired path for the output JPEG file
jpegPath := " output.jpg"
err = os.WriteFile(jpegPath, jpegBytes, os.ModePerm)

if err != nil {
log.Fatalf("Failed to write JPEG file: %s", err)
}

fmt.Println("Image conversion successful!")
}

ה רָאשִׁי הפונקציה קוראת את תמונת ה-PNG מהספרייה שצוינה לפני קריאה ל- ToJpeg פוּנקצִיָה. ה ToJpeg הפונקציה מחזירה פרוסת בתים של התמונה בפורמט JPEG.

ה רָאשִׁי הפונקציה כותבת את קובץ ה-JPEG לנתיב שצוין עם ה- OS. WriteFile פוּנקצִיָה. לאחר תהליך המרה מוצלח, ה רָאשִׁי הפונקציה מדפיסה הודעה לקונסולה.

המרת תמונות מ-JPEG ל-PNG

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

בניגוד ל-PNG, JPEG אינו תומך בשקיפות. הוא מצטיין בהצגת תמונות צילום עם צבעים והדרגות שונות.

כך תוכל להמיר את output.jpg קובץ לקובץ PNG בשם input.png:

import (
"bytes"
"fmt"
"image/jpeg"
"image/png"
"log"
"os"
)

// JpegToPng converts a JPEG image to PNG format
funcJpegToPng(imageBytes []byte)([]byte, error) {
img, err := jpeg.Decode(bytes.NewReader(imageBytes))

if err != nil {
returnnil, err
}

buf := new(bytes.Buffer)

if err := png.Encode(buf, img); err != nil {
returnnil, err
}

return buf.Bytes(), nil
}

ה JpegToPng הפונקציה מפענחת את פרוסת בתים של התמונה עם ה- jpeg. לְפַעֲנֵחַ פוּנקצִיָה. הפונקציה יוצרת מאגר חדש לקידוד התמונה בפורמט PNG עם png. לְהַצְפִּין פוּנקצִיָה.

הנה ה רָאשִׁי פונקציה שקוראת ל- JpegToPng פוּנקצִיָה:

funcmain() {
// Read the JPEG image file

// Replace with the actual path to your JPG image
imagePath := "output.jpg"
imageBytes, err := os.ReadFile(imagePath)

if err != nil {
log.Fatalf("Failed to read image file: %s", err)
}

// Convert the JPEG image to PNG
pngBytes, err := JpegToPng(imageBytes)

if err != nil {
log.Fatalf("Failed to convert image: %s", err)
}

// Write the PNG bytes to a file

// Replace with the desired path for the output JPEG file
pngPath := " input.png"
err = os.WriteFile(pngPath, pngBytes, os.ModePerm)

if err != nil {
log.Fatalf("Failed to write PNG file: %s", err)
}

fmt.Println("Image conversion successful!")
}

ה רָאשִׁי הפונקציה קוראת את תמונת ה-JPEG מהספרייה שצוינה וקוראת ל- JpegToPng פוּנקצִיָה. פונקציה זו מחזירה פרוסת בתים של התמונה בפורמט PNG.

Go מספקת את רוב התכונות שאתה צריך כדי לבנות את האפליקציות שלך בספרייה הסטנדרטית שלה

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

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