Ovi zgodni alati naredbenog retka pokazuju Golangovu svestranost.

Pretvorba formata slike ključna je u razvoju softvera za omogućavanje kompatibilnosti i učinkovitog rukovanja slikama u različitim sustavima. Možete optimizirati pohranu slika, prijenos, renderiranje i manipulaciju pretvaranjem slika između formata.

Postoji mnogo paketa za pretvorbu formata slike u Go ekosustavu, a Golang nudi slikovni paket za formatiranje i pretvorbu slike. Paket slika pruža osnovne funkcije 2D slike, uključujući značajke za dekodiranje, kodiranje, promjenu veličine i rotiranje slika.

Početak rada s paketom slika

Go-ova ugrađena biblioteka slika pruža sveobuhvatnu funkcionalnost za rad sa slikama u različitim formatima. The slika paket pruža podršku za čitanje, pisanje i manipuliranje slikama.

The slika paket podržava više vrste slikovnih datoteka i formate, uključujući JPEG, PNG, GIF i BMP. Omogućuje vam čitanje i dekodiranje slika iz datoteka ili tokova te kodiranje i pisanje slika u datoteke ili tokove. To olakšava rad s različitim vrstama slika u Gou, bez obzira na njihov format.

instagram viewer

Knjižnica također nudi široku funkcionalnost za manipulaciju i obradu slika. The slika paket pruža metode za pristup pojedinačnim pikselima, omogućujući manipulaciju na niskoj razini za zadatke poput izmjene vrijednosti piksela ili primjene prilagođenih filtara.

Dodatno, paket podržava modele boja i pruža alate za pretvorbu između različitih prikaza boja. Ovo je zgodno za rad sa slikama u različitim prostorima boja.

Pretvaranje slika iz PNG u JPEG

PNG i JPEG često su korišteni formati slika, svaki s različitim karakteristikama. PNG je format bez gubitaka koji zamjenjuje GIF, podržava slike visoke kvalitete s očuvanim slikovnim podacima i transparentnošću. PNG je prikladan za slike s oštrim rubovima, tekstom ili područjima jednolične boje.

The slika paket sadrži jpeg i png pakete koje možete koristiti za pretvorbu formata slike između dva formata.

Možete napisati funkciju za pretvaranje PNG slika u JPEG format. Evo primjera koji prihvaća tok podataka bajta slike kao ulaz:

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 otkriva vrstu sadržaja pomoću http. DetectContentType funkcija. Ova funkcija uzima isječak bajta slike kao ulaz i vraća vrstu sadržaja kao niz.

The prebaciti uvjetni iskaz ima jedno kućište koje provjerava je li format slike PNG. Funkcija dekodira isječak bajta slike ako se radi o PNG slici s slika. Dekodirati funkcija.

Konačno, ToJpeg stvara novi međuspremnik i kodira sliku u JPEG formatu s jpeg. Kodiraj funkcija.

Možete učitati PNG sliku prije poziva ToJpeg s os. ReadFile 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 glavni funkcija čita PNG sliku iz navedenog direktorija prije poziva ToJpeg funkcija. The ToJpeg funkcija vraća bajt isječak slike u JPEG formatu.

The glavni funkcija zapisuje JPEG datoteku na navedenu stazu s os. WriteFile funkcija. Nakon uspješnog procesa pretvorbe, glavni funkcija ispisuje poruku na konzolu.

Pretvaranje slika iz JPEG u PNG

JPEG je format s gubicima optimiziran za složene fotografije. JPEG postiže veće omjere kompresije, što rezultira manjim veličinama datoteka, iako uz blagi gubitak kvalitete.

Za razliku od PNG-a, JPEG ne podržava prozirnost. Odličan je u prikazivanju fotografskih slika s različitim bojama i prijelazima.

Evo kako možete pretvoriti izlaz.jpg datoteku u PNG datoteku pod nazivom unos.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 dekodira isječak bajta slike s jpeg. Dekodirati funkcija. Funkcija stvara novi međuspremnik za kodiranje slike u PNG formatu s png. Kodiraj funkcija.

Evo glavni funkcija koja poziva 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 glavni funkcija čita JPEG sliku iz navedenog direktorija i poziva JpegToPng funkcija. Ova funkcija vraća bajt isječak slike u PNG formatu.

Go pruža većinu značajki koje su vam potrebne za izradu vaših aplikacija u svojoj standardnoj biblioteci

Paket slika jedna je od mnogih svestranih biblioteka u Goovom ekosustavu. Zahvaljujući slikovnom paketu, možete izvršavati slikovne zadatke bez oslanjanja na vanjske biblioteke.

Go nudi i druge svestrane pakete, uključujući http paket za izradu web aplikacija. http paket sadrži većinu značajki koje su vam potrebne za izgradnju poslužiteljske strane web aplikacije.