Ta priročna orodja ukazne vrstice prikazujejo Golangovo vsestranskost.

Pretvorba formata slike je ključnega pomena pri razvoju programske opreme za omogočanje združljivosti in učinkovitega ravnanja s slikami v različnih sistemih. S pretvorbo slik med formati lahko optimizirate shranjevanje, prenos, upodabljanje in manipulacijo slik.

V ekosistemu Go je na voljo veliko paketov za pretvorbo formatov slik, Golang pa ponuja slikovni paket za oblikovanje in pretvorbo slik. Paket slik zagotavlja osnovno funkcionalnost 2D slik, vključno s funkcijami za dekodiranje, kodiranje, spreminjanje velikosti in vrtenje slik.

Začetek uporabe slikovnega paketa

Vgrajena knjižnica slik Go ponuja celovito funkcionalnost za delo s slikami v različnih formatih. The slika paket nudi podporo za branje, pisanje in obdelavo slik.

The slika paket podpira več vrste slikovnih datotek in formati, vključno z JPEG, PNG, GIF in BMP. Omogoča branje in dekodiranje slik iz datotek ali tokov ter kodiranje in pisanje slik v datoteke ali tokove. To olajša delo z različnimi vrstami slik v Go, ne glede na njihov format.

instagram viewer

Knjižnica ponuja tudi obsežno funkcionalnost za manipulacijo in obdelavo slik. The slika ponuja metode za dostop do posameznih slikovnih pik, kar omogoča nizkonivojsko manipulacijo za naloge, kot je spreminjanje vrednosti slikovnih pik ali uporaba filtrov po meri.

Poleg tega paket podpira barvne modele in ponuja orodja za pretvorbo med različnimi barvnimi predstavitvami. To je priročno za delo s slikami v različnih barvnih prostorih.

Pretvorba slik iz PNG v JPEG

PNG in JPEG sta pogosto uporabljena formata slik, vsaka z različnimi lastnostmi. PNG je format brez izgub, ki nadomešča GIF in podpira visokokakovostne slike z ohranjenimi slikovnimi podatki in preglednostjo. PNG je zelo primeren za slike z ostrimi robovi, besedilom ali območji enotne barve.

The slika paket vsebuje jpeg in png pakete, ki jih lahko uporabite za pretvorbo slikovnih formatov med obema formatoma.

Napišete lahko funkcijo za pretvorbo slik PNG v format JPEG. Tukaj je primer, ki kot vhod sprejme slikovni bajtni podatkovni tok:

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 zazna vrsto vsebine z http. DetectContentType funkcijo. Ta funkcija vzame rezino bajta slike kot vhod in vrne vrsto vsebine kot niz.

The preklopite pogojni stavek ima en primer, ki preveri, ali je format slike PNG. Funkcija dekodira bajtno rezino slike, če gre za sliko PNG z slika. Dekodiraj funkcijo.

Končno, ToJpeg funkcija ustvari nov medpomnilnik in kodira sliko v formatu JPEG z jpeg. Kodiraj funkcijo.

Sliko PNG lahko naložite, preden pokličete ToJpeg z 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 prebere sliko PNG iz navedenega imenika, preden pokliče ToJpeg funkcijo. The ToJpeg funkcija vrne bajtno rezino slike v formatu JPEG.

The glavni funkcija zapiše datoteko JPEG na podano pot z os. WriteFile funkcijo. Po uspešnem procesu pretvorbe je glavni funkcija natisne sporočilo na konzolo.

Pretvarjanje slik iz JPEG v PNG

JPEG je format z izgubo, optimiziran za kompleksne fotografije. JPEG dosega višja razmerja stiskanja, kar ima za posledico manjše velikosti datotek, čeprav z rahlo izgubo kakovosti.

Za razliko od PNG, JPEG ne podpira prosojnosti. Odličen je pri prikazovanju fotografskih slik z različnimi barvami in prelivi.

Evo, kako lahko pretvorite izhod.jpg datoteke v datoteko PNG z imenom vnos.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 bajtno rezino slike z jpeg. Dekodiraj funkcijo. Funkcija ustvari nov medpomnilnik za kodiranje slike v formatu PNG z png. Kodiraj funkcijo.

Tukaj je glavni funkcija, ki pokliče 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 prebere sliko JPEG iz podanega imenika in pokliče JpegToPng funkcijo. Ta funkcija vrne bajtno rezino slike v formatu PNG.

Go ponuja večino funkcij, ki jih potrebujete za gradnjo svojih aplikacij v svoji standardni knjižnici

Paket slik je ena od številnih vsestranskih knjižnic v Gojevem ekosistemu. Zahvaljujoč slikovnemu paketu lahko izvajate slikovna opravila, ne da bi se zanašali na zunanje knjižnice.

Go ponuja tudi druge vsestranske pakete, vključno s paketom http za gradnjo spletnih aplikacij. Paket http vsebuje večino funkcij, ki jih potrebujete za izdelavo strežniške strani spletne aplikacije.