Nämä kätevät komentorivityökalut osoittavat Golangin monipuolisuuden.

Kuvaformaatin muuntaminen on elintärkeää ohjelmistokehityksessä mahdollistaen yhteensopivuuden ja tehokkaan kuvankäsittelyn eri järjestelmissä. Voit optimoida kuvien tallennusta, siirtoa, renderöintiä ja käsittelyä muuntamalla kuvia muotojen välillä.

Go-ekosysteemissä on monia paketteja kuvamuotojen muuntamiseen, ja Golang tarjoaa kuvapaketin kuvan muotoiluun ja muuntamiseen. Kuvapaketti tarjoaa 2D-kuvan perustoiminnot, mukaan lukien ominaisuudet kuvien purkamiseen, koodaukseen, koon muuttamiseen ja pyörittämiseen.

Kuvapaketin käytön aloittaminen

Go: n sisäänrakennettu kuvakirjasto tarjoaa kattavat toiminnot eri muodoissa olevien kuvien käsittelyyn. The kuva paketti tukee kuvien lukemista, kirjoittamista ja käsittelyä.

The kuva paketti tukee useita kuvatiedostotyypit ja formaatit, mukaan lukien JPEG, PNG, GIF ja BMP. Sen avulla voit lukea ja purkaa kuvia tiedostoista tai virroista sekä koodata ja kirjoittaa kuvia tiedostoihin tai virtoihin. Tämä helpottaa erityyppisten kuvien käsittelyä Gossa niiden muodosta riippumatta.

instagram viewer

Kirjasto tarjoaa myös laajat toiminnot kuvien käsittelyyn ja käsittelyyn. The kuva paketti tarjoaa menetelmiä yksittäisten pikselien käyttämiseen, mahdollistaen matalan tason manipuloinnin tehtävissä, kuten pikseliarvojen muokkaamisessa tai mukautettujen suodattimien käyttämisessä.

Lisäksi paketti tukee värimalleja ja tarjoaa työkaluja eri väriesitysten muuntamiseen. Tämä on kätevää työskennellessäsi kuvien kanssa eri väritiloissa.

Kuvien muuntaminen PNG: stä JPEG: ksi

PNG ja JPEG ovat yleisesti käytettyjä kuvamuotoja, joista jokaisella on omat ominaisuudet. PNG on häviötön muoto, joka korvaa GIF: n ja tukee korkealaatuisia kuvia säilytetyillä kuvatiedoilla ja läpinäkyvyydellä. PNG sopii hyvin kuville, joissa on teräviä reunoja, tekstiä tai tasavärisiä alueita.

The kuva paketti sisältää jpeg ja png paketteja, joita voit käyttää kuvamuotojen muuntamiseen kahden formaatin välillä.

Voit kirjoittaa funktion, joka muuntaa PNG-kuvat JPEG-muotoon. Tässä on esimerkki, joka hyväksyy kuvatavun datavirran syötteenä:

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 toiminto tunnistaa sisältötyypin http. DetectContentType toiminto. Tämä toiminto ottaa syötteeksi kuvan tavuviipaleen ja palauttaa sisältötyypin merkkijonona.

The vaihtaa ehdollista lausetta on yksi tapaus, joka tarkistaa, onko kuvamuoto PNG. Funktio purkaa kuvan tavuviipaleen, jos se on PNG-kuva, jossa on kuva. Dekoodaa toiminto.

Lopuksi, ToJpeg toiminto luo uuden puskurin ja koodaa kuvan JPEG-muodossa jpeg. Koodata toiminto.

Voit ladata PNG-kuvan ennen kuin soitat ToJpegiin näppäimellä os. Lue tiedosto toiminto:

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 pää toiminto lukee PNG-kuvan määritetystä hakemistosta ennen kutsumista ToJpeg toiminto. The ToJpeg funktio palauttaa tavuosan kuvasta JPEG-muodossa.

The pää -toiminto kirjoittaa JPEG-tiedoston määritettyyn polkuun os. Kirjoita tiedosto toiminto. Onnistuneen muunnosprosessin jälkeen pää toiminto tulostaa viestin konsoliin.

Kuvien muuntaminen JPEG: stä PNG: ksi

JPEG on häviöllinen muoto, joka on optimoitu monimutkaisille valokuville. JPEG saavuttaa korkeammat pakkaussuhteet, mikä johtaa pienempiin tiedostokokoihin, vaikkakin pienellä laadun heikkenemisellä.

Toisin kuin PNG, JPEG ei tue läpinäkyvyyttä. Se näyttää erinomaisesti valokuvakuvien näyttämisessä eri väreillä ja gradienteilla.

Näin voit muuntaa output.jpg tiedosto PNG-tiedostoksi nimeltä 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 toiminto purkaa kuvan tavuviipaleen jpeg. Dekoodaa toiminto. Toiminto luo uuden puskurin kuvan koodaamiseksi PNG-muotoon png. Koodata toiminto.

Tässä on pää toiminto, joka kutsuu JpegToPng toiminto:

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 pää toiminto lukee JPEG-kuvan määritetystä hakemistosta ja kutsuu JpegToPng toiminto. Tämä funktio palauttaa kuvan tavuosan PNG-muodossa.

Go tarjoaa useimmat ominaisuudet, joita tarvitset sovellustesi rakentamiseen sen vakiokirjastossa

Kuvapaketti on yksi monista Go: n ekosysteemin monipuolisista kirjastoista. Kuvapaketin ansiosta voit suorittaa kuvatehtäviä ilman ulkoisia kirjastoja.

Go tarjoaa myös muita monipuolisia paketteja, mukaan lukien http-paketti verkkopohjaisten sovellusten rakentamiseen. http-paketti sisältää suurimman osan ominaisuuksista, joita tarvitset verkkosovelluksen palvelinpuolen rakentamiseen.