Šie patogūs komandų eilutės įrankiai parodo Golango universalumą.
Vaizdo formato konvertavimas yra labai svarbus kuriant programinę įrangą, kad būtų užtikrintas suderinamumas ir efektyvus vaizdų tvarkymas įvairiose sistemose. Galite optimizuoti vaizdų saugojimą, perdavimą, atvaizdavimą ir manipuliavimą konvertuodami vaizdus iš vieno formato į kitą.
„Go“ ekosistemoje yra daug vaizdo formatų konvertavimo paketų, o „Golang“ pateikia vaizdo paketą vaizdo formatavimui ir konvertavimui. Vaizdo paketas suteikia pagrindines 2D vaizdo funkcijas, įskaitant vaizdų dekodavimo, kodavimo, dydžio keitimo ir pasukimo funkcijas.
Darbo su vaizdų paketu pradžia
„Go“ integruota vaizdų biblioteka suteikia visapusišką funkcionalumą dirbant su įvairių formatų vaizdais. The vaizdas paketas teikia palaikymą skaitymui, rašymui ir manipuliavimui vaizdais.
The vaizdas paketas palaiko kelis vaizdo failų tipai ir formatai, įskaitant JPEG, PNG, GIF ir BMP. Tai leidžia skaityti ir iššifruoti vaizdus iš failų ar srautų ir koduoti bei įrašyti vaizdus į failus ar srautus. Tai palengvina darbą su įvairių tipų vaizdais programoje Go, neatsižvelgiant į jų formatą.
Biblioteka taip pat siūlo daugybę vaizdų manipuliavimo ir apdorojimo funkcijų. The vaizdas pakete pateikiami būdai pasiekti atskirus pikselius, leidžiantys žemo lygio manipuliavimą atliekant tokias užduotis kaip pikselių reikšmių keitimas arba pasirinktinių filtrų taikymas.
Be to, paketas palaiko spalvų modelius ir suteikia įrankius, skirtus konvertuoti tarp skirtingų spalvų atvaizdų. Tai patogu dirbant su vaizdais įvairiose spalvų erdvėse.
Vaizdų konvertavimas iš PNG į JPEG
PNG ir JPEG yra dažniausiai naudojami vaizdo formatai, kurių kiekvienas turi skirtingas savybes. PNG yra be nuostolių formatas, pakeičiantis GIF, palaikantis aukštos kokybės vaizdus su išsaugotais vaizdo duomenimis ir skaidrumu. PNG puikiai tinka vaizdams su aštriais kraštais, tekstu ar vienodos spalvos sritimis.
The vaizdas pakuotėje yra jpeg ir png paketus, kuriuos galite naudoti vaizdo formato konvertavimui tarp dviejų formatų.
Galite parašyti funkciją konvertuoti PNG vaizdus į JPEG formatą. Štai pavyzdys, kuris priima vaizdo baitų duomenų srautą kaip įvestį:
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)
}
The ToJpeg funkcija aptinka turinio tipą su http. DetectContentType funkcija. Ši funkcija kaip įvestį paima vaizdo baito pjūvį ir grąžina turinio tipą kaip eilutę.
The perjungti sąlyginį teiginį turi vieną atvejį, kuris tikrina, ar vaizdo formatas yra PNG. Funkcija iškoduoja vaizdo baitų gabalą, jei tai PNG vaizdas su vaizdas. Dekoduoti funkcija.
Galiausiai, ToJpeg funkcija sukuria naują buferį ir užkoduoja vaizdą JPEG formatu su jpeg. Užkoduoti funkcija.
Galite įkelti PNG vaizdą prieš skambindami ToJpeg naudodami os. Skaityti failą funkcija:
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!")
}
The pagrindinis funkcija nuskaito PNG vaizdą iš nurodyto katalogo prieš iškviesdama ToJpeg funkcija. The ToJpeg funkcija grąžina JPEG formato vaizdo baitą.
The pagrindinis funkcija įrašo JPEG failą į nurodytą kelią su os. Rašyti failą funkcija. Po sėkmingo konversijos proceso, pagrindinis funkcija išspausdina pranešimą į konsolę.
Vaizdų konvertavimas iš JPEG į PNG
JPEG yra nuostolingas formatas, optimizuotas sudėtingoms nuotraukoms. JPEG formatu pasiekiamas didesnis glaudinimo koeficientas, todėl failų dydžiai yra mažesni, nors ir šiek tiek prarandama kokybė.
Skirtingai nuo PNG, JPEG nepalaiko skaidrumo. Jis puikiai rodo įvairių spalvų ir gradientų fotografinius vaizdus.
Štai kaip galite konvertuoti output.jpg failą į PNG failą pavadinimu 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
}
The JpegToPng funkcija iššifruoja vaizdo baitų pjūvį su jpeg. Dekoduoti funkcija. Funkcija sukuria naują buferį, skirtą užkoduoti vaizdą PNG formatu su png. Užkoduoti funkcija.
Štai pagrindinis funkcija, kuri iškviečia JpegToPng funkcija:
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!")
}
The pagrindinis funkcija nuskaito JPEG vaizdą iš nurodyto katalogo ir iškviečia JpegToPng funkcija. Ši funkcija grąžina vaizdo baitinį pjūvį PNG formatu.
„Go“ standartinėje bibliotekoje teikia daugumą funkcijų, reikalingų programoms kurti
Vaizdų paketas yra viena iš daugelio universalių Go ekosistemos bibliotekų. Vaizdo paketo dėka galite atlikti vaizdo užduotis nepasitikėdami išorinėmis bibliotekomis.
„Go“ taip pat teikia kitus universalius paketus, įskaitant http paketą, skirtą žiniatinklio programoms kurti. http pakete yra dauguma funkcijų, kurių reikia norint sukurti žiniatinklio programos serverio pusę.