Šie ērtie komandrindas rīki parāda Golang daudzpusību.
Attēla formāta konvertēšana ir ļoti svarīga programmatūras izstrādē, lai nodrošinātu saderību un efektīvu attēlu apstrādi dažādās sistēmās. Varat optimizēt attēlu uzglabāšanu, pārraidi, renderēšanu un manipulācijas, konvertējot attēlus starp formātiem.
Attēlu formātu konvertēšanai Go ekosistēmā ir daudz pakotņu, un Golang nodrošina attēlu pakotni attēlu formatēšanai un konvertēšanai. Attēlu pakotne nodrošina pamata 2D attēlu funkcionalitāti, tostarp funkcijas attēlu dekodēšanai, kodēšanai, izmēru maiņai un pagriešanai.
Darba sākšana ar attēlu paketi
Go iebūvētā attēlu bibliotēka nodrošina visaptverošu funkcionalitāti darbam ar dažādu formātu attēliem. The attēlu pakotne nodrošina atbalstu lasīšanai, rakstīšanai un attēlu apstrādei.
The attēlu pakotne atbalsta vairākus attēlu failu tipi un formātos, tostarp JPEG, PNG, GIF un BMP. Tas ļauj lasīt un atšifrēt attēlus no failiem vai straumēm, kā arī kodēt un rakstīt attēlus failos vai straumēs. Tas atvieglo darbu ar dažāda veida attēliem programmā Go neatkarīgi no to formāta.
Bibliotēka piedāvā arī plašu funkcionalitāti attēlu manipulēšanai un apstrādei. The attēlu pakotne nodrošina metodes, kā piekļūt atsevišķiem pikseļiem, ļaujot veikt zema līmeņa manipulācijas tādiem uzdevumiem kā pikseļu vērtību modificēšana vai pielāgotu filtru lietošana.
Turklāt pakotne atbalsta krāsu modeļus un nodrošina rīkus dažādu krāsu attēlojumu pārveidošanai. Tas ir ērti, strādājot ar attēliem dažādās krāsu telpās.
Attēlu konvertēšana no PNG uz JPEG
PNG un JPEG parasti tiek izmantoti attēlu formāti, katrai no tām ir atšķirīgas īpašības. PNG ir bezzudumu formāts, kas aizstāj GIF, atbalstot augstas kvalitātes attēlus ar saglabātiem attēla datiem un caurspīdīgumu. PNG ir labi piemērots attēliem ar asām malām, tekstu vai vienādas krāsas apgabaliem.
The attēlu iepakojums satur jpeg un png pakotnes, kuras varat izmantot attēla formāta konvertēšanai starp diviem formātiem.
Varat uzrakstīt funkciju PNG attēlu konvertēšanai JPEG formātā. Šeit ir piemērs, kas kā ievadi pieņem attēla baitu datu straumi:
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 nosaka satura tipu ar http. DetectContentType funkciju. Šī funkcija kā ievadi izmanto attēla baita daļu un atgriež satura tipu kā virkni.
The pārslēgt nosacījumu paziņojumu ir viens gadījums, kas pārbauda, vai attēla formāts ir PNG. Funkcija atšifrē attēla baita daļu, ja tas ir PNG attēls ar attēlu. Atšifrēt funkciju.
Visbeidzot, ToJpeg funkcija izveido jaunu buferi un kodē attēlu JPEG formātā ar jpeg. Kodēt funkciju.
Varat ielādēt PNG attēlu, pirms izsaucat ToJpeg, izmantojot os. Lasīt failu 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 galvenais funkcija nolasa PNG attēlu no norādītā direktorija, pirms izsauc ToJpeg funkciju. The ToJpeg funkcija atgriež attēla baitu daļu JPEG formātā.
The galvenais funkcija ieraksta JPEG failu norādītajā ceļā ar os. Rakstīt failu funkciju. Pēc veiksmīga konversijas procesa, galvenais funkcija izdrukā ziņojumu konsolei.
Attēlu konvertēšana no JPEG uz PNG
JPEG ir zaudējumu formāts, kas optimizēts sarežģītām fotogrāfijām. JPEG nodrošina augstāku saspiešanas pakāpi, kā rezultātā faila izmēri ir mazāki, lai gan ar nelielu kvalitātes zudumu.
Atšķirībā no PNG, JPEG neatbalsta caurspīdīgumu. Tas ir izcils, parādot fotogrāfiskus attēlus ar dažādām krāsām un gradientiem.
Lūk, kā jūs varat konvertēt izvade.jpg failu uz PNG failu ar nosaukumu ievade.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 dekodē attēla baitu šķēli ar jpeg. Atšifrēt funkciju. Funkcija izveido jaunu buferi attēla kodēšanai PNG formātā ar png. Kodēt funkciju.
Lūk, galvenais funkcija, kas izsauc 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 galvenais funkcija nolasa JPEG attēlu no norādītā direktorija un izsauc JpegToPng funkciju. Šī funkcija atgriež attēla baitu daļu PNG formātā.
Go nodrošina lielāko daļu funkciju, kas nepieciešamas, lai izveidotu savas lietotnes tās standarta bibliotēkā
Attēlu pakotne ir viena no daudzajām daudzpusīgajām bibliotēkām Go ekosistēmā. Pateicoties attēlu pakotnei, jūs varat veikt attēlu uzdevumus, nepaļaujoties uz ārējām bibliotēkām.
Go nodrošina arī citas daudzpusīgas pakotnes, tostarp http pakotni tīmekļa lietojumprogrammu izveidei. http pakotne satur lielāko daļu funkciju, kas nepieciešamas, lai izveidotu tīmekļa lietotnes servera pusi.