Need käepärased käsurea tööriistad näitavad Golangi mitmekülgsust.

Pildivormingu teisendamine on tarkvaraarenduses ülioluline, et võimaldada ühilduvust ja tõhusat pildikäsitlust erinevates süsteemides. Saate optimeerida piltide salvestamist, edastamist, renderdamist ja manipuleerimist, teisendades pilte vormingute vahel.

Go ökosüsteemis on pildivormingu teisendamiseks palju pakette ning Golang pakub pildipaketti pildi vormindamiseks ja teisendamiseks. Pildipakett pakub 2D-kujutise põhifunktsioone, sealhulgas funktsioone piltide dekodeerimiseks, kodeerimiseks, suuruse muutmiseks ja pööramiseks.

Pildipaketiga alustamine

Go sisseehitatud pilditeek pakub laiaulatuslikke funktsioone erinevates vormingutes piltidega töötamiseks. The pilt pakett pakub tuge piltide lugemiseks, kirjutamiseks ja manipuleerimiseks.

The pilt pakett toetab mitut pildifailide tüübid ja vormingud, sealhulgas JPEG, PNG, GIF ja BMP. See võimaldab teil lugeda ja dekodeerida pilte failidest või voogudest ning kodeerida ja kirjutada pilte failidesse või voogudesse. See muudab Go's erinevat tüüpi piltidega töötamise lihtsaks, olenemata nende vormingust.

instagram viewer

Teek pakub ka laialdasi funktsioone piltide töötlemiseks ja töötlemiseks. The pilt pakett pakub meetodeid üksikutele pikslitele juurdepääsuks, võimaldades madala tasemega manipuleerimist selliste ülesannete jaoks nagu piksliväärtuste muutmine või kohandatud filtrite rakendamine.

Lisaks toetab pakett värvimudeleid ja pakub tööriistu erinevate värviesituste teisendamiseks. See on mugav erinevates värviruumides piltidega töötamiseks.

Piltide teisendamine PNG-vormingust JPEG-vormingusse

PNG ja JPEG on tavaliselt kasutatavad pildivormingud, millest igaühel on erinevad omadused. PNG on kadudeta vorming, mis asendab GIF-i, toetades kvaliteetseid pilte koos säilinud pildiandmete ja läbipaistvusega. PNG sobib hästi teravate servadega piltidele, tekstile või ühtlase värviga aladele.

The pilt pakett sisaldab jpeg ja png paketid, mida saate kasutada pildivormingu teisendamiseks kahe vormingu vahel.

PNG-piltide JPEG-vormingusse teisendamiseks saate kirjutada funktsiooni. Siin on näide, mis aktsepteerib sisendiks pildibaidi andmevoogu:

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 funktsioon tuvastab sisu tüübi nupuga http. DetectContentType funktsiooni. See funktsioon võtab sisendiks pildibaidilõike ja tagastab sisutüübi stringina.

The vaheta tingimuslause on üks juhtum, mis kontrollib, kas pildivorming on PNG. Funktsioon dekodeerib pildibaidilõike, kui see on PNG-kujutis, millel on pilt. Dekodeerida funktsiooni.

Lõpuks, ToJpeg funktsioon loob uue puhvri ja kodeerib pildi JPEG-vormingus jpeg. Kodeerida funktsiooni.

Enne ToJpegi helistamist saate PNG-pildi laadida os. Loe faili funktsioon:

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 peamine funktsioon loeb PNG-kujutise määratud kataloogist enne selle helistamist ToJpeg funktsiooni. The ToJpeg funktsioon tagastab JPEG-vormingus pildi baidilõike.

The peamine funktsioon kirjutab JPEG-faili määratud teele os. Kirjuta faili funktsiooni. Pärast edukat teisendusprotsessi peamine funktsioon prindib konsooli teate.

Piltide teisendamine JPEG-vormingust PNG-vormingusse

JPEG on kadudega vorming, mis on optimeeritud keerukate fotode jaoks. JPEG saavutab suurema tihendusastme, mille tulemuseks on väiksemad failisuurused, kuigi kvaliteedi vähenemine.

Erinevalt PNG-st ei toeta JPEG läbipaistvust. See paistab silma erinevate värvide ja gradientidega fotopiltide kuvamisel.

Siin on, kuidas saate teisendada väljund.jpg faili nimega PNG-failiks 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 funktsioon dekodeerib pildibaidilõigu nupuga jpeg. Dekodeerida funktsiooni. Funktsioon loob uue puhvri pildi PNG-vormingus kodeerimiseks png. Kodeerida funktsiooni.

Siin on peamine funktsioon, mis kutsub JpegToPng funktsioon:

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 peamine funktsioon loeb JPEG-kujutise määratud kataloogist ja kutsub esile JpegToPng funktsiooni. See funktsioon tagastab pildi baidilõike PNG-vormingus.

Go pakub oma standardteegis enamikku funktsioone, mida vajate oma rakenduste koostamiseks

Pildipakett on üks paljudest Go ökosüsteemi mitmekülgsetest raamatukogudest. Tänu pildipaketile saate pildiülesandeid täita ilma välistele teekidele tuginemata.

Go pakub ka muid mitmekülgseid pakette, sealhulgas http-paketti veebipõhiste rakenduste loomiseks. http-pakett sisaldab enamikku funktsioone, mida vajate veebirakenduse serveri poole loomiseks.