Ces outils de ligne de commande pratiques montrent la polyvalence de Golang.
La conversion du format d'image est essentielle dans le développement de logiciels pour permettre la compatibilité et une gestion efficace des images sur différents systèmes. Vous pouvez optimiser le stockage, la transmission, le rendu et la manipulation des images en convertissant les images entre les formats.
Il existe de nombreux packages pour la conversion de format d'image dans l'écosystème Go, et Golang fournit un package d'image pour le formatage et la conversion d'image. Le package d'images fournit des fonctionnalités d'image 2D de base, notamment des fonctions de décodage, d'encodage, de redimensionnement et de rotation des images.
Premiers pas avec le package d'images
La bibliothèque d'images intégrée de Go fournit des fonctionnalités complètes pour travailler avec des images dans différents formats. Le image fournit un support pour la lecture, l'écriture et la manipulation d'images.
Le image le paquet prend en charge plusieurs
types de fichiers images et formats, y compris JPEG, PNG, GIF et BMP. Il vous permet de lire et de décoder des images à partir de fichiers ou de flux et d'encoder et d'écrire des images dans des fichiers ou des flux. Cela facilite le travail avec différents types d'images dans Go, quel que soit leur format.La bibliothèque offre également des fonctionnalités étendues pour la manipulation et le traitement d'images. Le image Le package fournit des méthodes pour accéder à des pixels individuels, permettant une manipulation de bas niveau pour des tâches telles que la modification de valeurs de pixels ou l'application de filtres personnalisés.
De plus, le package prend en charge les modèles de couleurs et fournit des outils de conversion entre différentes représentations de couleurs. Ceci est pratique pour travailler avec des images dans différents espaces colorimétriques.
Conversion d'images de PNG en JPEG
PNG et JPEG sont des formats d'image couramment utilisés, chacun avec des caractéristiques distinctes. PNG est un format sans perte qui remplace GIF, prenant en charge des images de haute qualité avec des données d'image préservées et de la transparence. PNG est bien adapté aux images avec des bords nets, du texte ou des zones de couleur uniforme.
Le image le paquet contient JPEG et png packages que vous pouvez utiliser pour la conversion de format d'image entre les deux formats.
Vous pouvez écrire une fonction pour convertir les images PNG au format JPEG. Voici un exemple qui accepte le flux de données d'octets d'image comme entrée :
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)
}
Le VersJpeg fonction détecte le type de contenu avec le http. Détecter le type de contenu fonction. Cette fonction prend la tranche d'octets de l'image en entrée et renvoie le type de contenu sous forme de chaîne.
Le basculer l'instruction conditionnelle a un cas qui vérifie si le format d'image est PNG. La fonction décode la tranche d'octets de l'image s'il s'agit d'une image PNG avec le image. Décoder fonction.
Finalement, le VersJpeg La fonction crée un nouveau tampon et encode l'image au format JPEG avec la jpeg. Encoder fonction.
Vous pouvez charger l'image PNG avant d'appeler ToJpeg avec le os. LireFichier fonction:
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!")
}
Le principal fonction lit l'image PNG à partir du répertoire spécifié avant d'appeler la VersJpeg fonction. Le VersJpeg renvoie une tranche d'octet de l'image au format JPEG.
Le principal La fonction écrit le fichier JPEG dans le chemin spécifié avec la os. ÉcrireFichier fonction. Après un processus de conversion réussi, le principal fonction affiche un message sur la console.
Conversion d'images de JPEG en PNG
JPEG est un format avec perte optimisé pour les photographies complexes. JPEG atteint des taux de compression plus élevés, ce qui entraîne des fichiers de plus petite taille, mais avec une légère perte de qualité.
Contrairement au PNG, JPEG ne prend pas en charge la transparence. Il excelle dans l'affichage d'images photographiques avec différentes couleurs et dégradés.
Voici comment vous pouvez convertir le sortie.jpg fichier vers un fichier PNG nommé entrée.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
}
Le JpegVersPng décode la tranche d'octets de l'image avec la jpeg. Décoder fonction. La fonction crée un nouveau buffer pour encoder l'image au format PNG avec le png. Encoder fonction.
Ici se trouve le principal fonction qui appelle le JpegVersPng fonction:
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!")
}
Le principal lit l'image JPEG à partir du répertoire spécifié et appelle la JpegVersPng fonction. Cette fonction renvoie une tranche d'octet de l'image au format PNG.
Go fournit la plupart des fonctionnalités dont vous avez besoin pour créer vos applications dans sa bibliothèque standard
Le package d'images est l'une des nombreuses bibliothèques polyvalentes de l'écosystème de Go. Grâce au package image, vous pouvez effectuer des tâches d'image sans dépendre de bibliothèques externes.
Go fournit également d'autres packages polyvalents, notamment le package http pour la création d'applications Web. Le package http contient la plupart des fonctionnalités dont vous avez besoin pour créer le côté serveur d'une application Web.