Questi pratici strumenti da riga di comando mostrano la versatilità di Golang.

La conversione del formato immagine è fondamentale nello sviluppo del software per consentire la compatibilità e la gestione efficiente delle immagini tra sistemi diversi. È possibile ottimizzare l'archiviazione, la trasmissione, il rendering e la manipolazione delle immagini convertendo le immagini tra i formati.

Esistono molti pacchetti per la conversione del formato immagine nell'ecosistema Go e Golang fornisce un pacchetto immagine per la formattazione e la conversione delle immagini. Il pacchetto di immagini fornisce le funzionalità di base delle immagini 2D, comprese le funzioni per la decodifica, la codifica, il ridimensionamento e la rotazione delle immagini.

Iniziare con il pacchetto di immagini

La libreria di immagini integrata di Go fornisce funzionalità complete per lavorare con immagini in vari formati. IL Immagine pacchetto fornisce il supporto per la lettura, la scrittura e la manipolazione delle immagini.

instagram viewer

IL Immagine il pacchetto supporta più tipi di file immagine e formati, inclusi JPEG, PNG, GIF e BMP. Ti consente di leggere e decodificare immagini da file o flussi e codificare e scrivere immagini su file o flussi. Ciò semplifica il lavoro con diversi tipi di immagini in Go, indipendentemente dal loro formato.

La libreria offre anche funzionalità estese per la manipolazione e l'elaborazione delle immagini. IL Immagine Il pacchetto fornisce metodi per accedere ai singoli pixel, consentendo la manipolazione di basso livello per attività come la modifica dei valori dei pixel o l'applicazione di filtri personalizzati.

Inoltre, il pacchetto supporta i modelli di colore e fornisce strumenti per la conversione tra diverse rappresentazioni di colore. Questo è utile per lavorare con immagini in vari spazi colore.

Conversione di immagini da PNG a JPEG

PNG e JPEG sono formati immagine comunemente usati, ciascuno con caratteristiche distinte. PNG è un formato senza perdita di dati che sostituisce il GIF e supporta immagini di alta qualità con dati di immagine preservati e trasparenza. PNG è particolarmente adatto per immagini con spigoli vivi, testo o aree di colore uniforme.

IL Immagine pacchetto contiene jpeg E png pacchetti che è possibile utilizzare per la conversione del formato immagine tra i due formati.

Puoi scrivere una funzione per convertire le immagini PNG nel formato JPEG. Ecco un esempio che accetta il flusso di dati del byte dell'immagine come input:

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)
}

IL Jpeg funzione rileva il tipo di contenuto con il http. Rileva tipo di contenuto funzione. Questa funzione accetta la porzione di byte dell'immagine come input e restituisce il tipo di contenuto come stringa.

IL cambiare l'istruzione condizionale ha un caso che controlla se il formato dell'immagine è PNG. La funzione decodifica la porzione di byte dell'immagine se si tratta di un'immagine PNG con l'estensione Immagine. Decodificare funzione.

Infine il Jpeg La funzione crea un nuovo buffer e codifica l'immagine in formato JPEG con l'estensione jpeg. Codificare funzione.

Puoi caricare l'immagine PNG prima di chiamare ToJpeg con il file os. LeggiFile funzione:

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!")
}

IL principale La funzione legge l'immagine PNG dalla directory specificata prima di chiamare il metodo Jpeg funzione. IL Jpeg La funzione restituisce una porzione di byte dell'immagine in formato JPEG.

IL principale La funzione scrive il file JPEG nel percorso specificato con l'estensione os. ScriviFile funzione. Dopo un processo di conversione riuscito, il file principale la funzione stampa un messaggio alla console.

Conversione di immagini da JPEG a PNG

JPEG è un formato con perdita ottimizzato per fotografie complesse. JPEG raggiunge rapporti di compressione più elevati, risultando in file di dimensioni inferiori, anche se con una leggera perdita di qualità.

A differenza di PNG, JPEG non supporta la trasparenza. Eccelle nella visualizzazione di immagini fotografiche con vari colori e sfumature.

Ecco come puoi convertire il file uscita.jpg file in un file PNG denominato ingresso.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
}

IL JpegToPng La funzione decodifica la porzione di byte dell'immagine con l'estensione jpeg. Decodificare funzione. La funzione crea un nuovo buffer per la codifica dell'immagine in formato PNG con l'estensione png. Codificare funzione.

Ecco il principale funzione che chiama il JpegToPng funzione:

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!")
}

IL principale La funzione legge l'immagine JPEG dalla directory specificata e chiama il file JpegToPng funzione. Questa funzione restituisce una porzione di byte dell'immagine in formato PNG.

Go fornisce la maggior parte delle funzionalità necessarie per creare le tue app nella sua libreria standard

Il pacchetto di immagini è una delle tante librerie versatili nell'ecosistema di Go. Grazie al pacchetto immagine, puoi eseguire attività relative alle immagini senza fare affidamento su librerie esterne.

Go fornisce anche altri pacchetti versatili, incluso il pacchetto http per la creazione di applicazioni basate sul web. Il pacchetto http contiene la maggior parte delle funzionalità necessarie per creare il lato server di un'app Web.