Disse praktiske kommandolinjeværktøjer viser Golangs alsidighed.
Billedformatkonvertering er afgørende i softwareudvikling for at muliggøre kompatibilitet og effektiv billedhåndtering på tværs af forskellige systemer. Du kan optimere billedlagring, transmission, gengivelse og manipulation ved at konvertere billeder mellem formater.
Der er mange pakker til billedformatkonvertering i Go-økosystemet, og Golang leverer en billedpakke til billedformatering og konvertering. Billedpakken giver grundlæggende 2D-billedfunktionalitet, inklusive funktioner til afkodning, kodning, ændring af størrelse og rotation af billeder.
Kom godt i gang med billedpakken
Gos indbyggede billedbibliotek giver omfattende funktionalitet til at arbejde med billeder i forskellige formater. Det billede pakken giver støtte til at læse, skrive og manipulere billeder.
Det billede pakken understøtter flere billedfiltyper og formater, herunder JPEG, PNG, GIF og BMP. Det giver dig mulighed for at læse og afkode billeder fra filer eller streams og kode og skrive billeder til filer eller streams. Dette gør det nemt at arbejde med forskellige typer billeder i Go, uanset deres format.
Biblioteket tilbyder også omfattende funktionalitet til billedmanipulation og -behandling. Det billede pakken giver metoder til at få adgang til individuelle pixels, hvilket muliggør manipulation på lavt niveau til opgaver som ændring af pixelværdier eller anvendelse af brugerdefinerede filtre.
Derudover understøtter pakken farvemodeller og giver værktøjer til at konvertere mellem forskellige farvegengivelser. Dette er praktisk til at arbejde med billeder i forskellige farverum.
Konvertering af billeder fra PNG til JPEG
PNG og JPEG er almindeligt anvendte billedformater, hver med forskellige egenskaber. PNG er et tabsfrit format, der erstatter GIF, der understøtter billeder i høj kvalitet med bevarede billeddata og gennemsigtighed. PNG er velegnet til billeder med skarpe kanter, tekst eller områder med ensartet farve.
Det billede pakken indeholder jpeg og png pakker, som du kan bruge til billedformatkonvertering mellem de to formater.
Du kan skrive en funktion til at konvertere PNG-billeder til JPEG-format. Her er et eksempel, der accepterer billedbytedatastrøm som input:
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)
}
Det TilJpeg funktionen registrerer indholdstypen med http. DetectContentType fungere. Denne funktion tager billedbytesnittet som input og returnerer indholdstypen som en streng.
Det skifte betinget erklæring har en sag, der tjekker om billedformatet er PNG. Funktionen afkoder billedbytesnittet, hvis det er et PNG-billede med billede. Afkode fungere.
Endelig TilJpeg funktionen opretter en ny buffer og koder billedet i JPEG-format med jpeg. Indkode fungere.
Du kan indlæse PNG-billedet, før du kalder ToJpeg med os. Læs Fil fungere:
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!")
}
Det vigtigste funktionen læser PNG-billedet fra den angivne mappe, før den kalder TilJpeg fungere. Det TilJpeg funktion returnerer en byte udsnit af billedet i JPEG-format.
Det vigtigste funktionen skriver JPEG-filen til den angivne sti med os. Skriv fil fungere. Efter en vellykket konverteringsproces, vigtigste funktion udskriver en besked til konsollen.
Konvertering af billeder fra JPEG til PNG
JPEG er et tabsformat optimeret til komplekse fotografier. JPEG opnår højere komprimeringsforhold, hvilket resulterer i mindre filstørrelser, dog med et lille kvalitetstab.
I modsætning til PNG understøtter JPEG ikke gennemsigtighed. Det udmærker sig ved at vise fotografiske billeder med forskellige farver og gradienter.
Her er hvordan du kan konvertere output.jpg fil til en PNG-fil med navnet 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
}
Det JpegToPng funktion afkoder billedbyte-udsnittet med jpeg. Afkode fungere. Funktionen opretter en ny buffer til kodning af billedet i PNG-format med png. Indkode fungere.
Her er vigtigste funktion, der kalder JpegToPng fungere:
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!")
}
Det vigtigste funktionen læser JPEG-billedet fra den angivne mappe og kalder JpegToPng fungere. Denne funktion returnerer et byteudsnit af billedet i PNG-format.
Go giver de fleste funktioner, du skal bruge for at bygge dine apps i sit standardbibliotek
Billedpakken er et af mange alsidige biblioteker i Go’s økosystem. Takket være billedpakken kan du udføre billedopgaver uden at være afhængig af eksterne biblioteker.
Go tilbyder også andre alsidige pakker, inklusive http-pakken til at bygge webbaserede applikationer. http-pakken indeholder de fleste funktioner, du skal bruge for at bygge serversiden af en webapp.