Te przydatne narzędzia wiersza poleceń pokazują wszechstronność Golanga.

Konwersja formatu obrazu ma kluczowe znaczenie w opracowywaniu oprogramowania, ponieważ umożliwia kompatybilność i wydajną obsługę obrazów w różnych systemach. Możesz zoptymalizować przechowywanie, przesyłanie, renderowanie i manipulację obrazami, konwertując obrazy między formatami.

Istnieje wiele pakietów do konwersji formatu obrazu w ekosystemie Go, a Golang zapewnia pakiet obrazu do formatowania i konwersji obrazu. Pakiet obrazów zapewnia podstawowe funkcje obrazów 2D, w tym funkcje dekodowania, kodowania, zmiany rozmiaru i obracania obrazów.

Pierwsze kroki z pakietem obrazów

Wbudowana biblioteka obrazów Go zapewnia wszechstronną funkcjonalność do pracy z obrazami w różnych formatach. The obraz pakiet zapewnia obsługę czytania, pisania i manipulowania obrazami.

The obraz pakiet obsługuje wiele typy plików graficznych i formaty, w tym JPEG, PNG, GIF i BMP. Umożliwia odczytywanie i dekodowanie obrazów z plików lub strumieni oraz kodowanie i zapisywanie obrazów w plikach lub strumieniach. Ułatwia to pracę z różnymi typami obrazów w Go, niezależnie od ich formatu.

instagram viewer

Biblioteka oferuje również rozbudowaną funkcjonalność do manipulacji i przetwarzania obrazu. The obraz pakiet zapewnia metody dostępu do poszczególnych pikseli, umożliwiając manipulację na niskim poziomie w zadaniach, takich jak modyfikowanie wartości pikseli lub stosowanie niestandardowych filtrów.

Dodatkowo pakiet obsługuje modele kolorów i udostępnia narzędzia do konwersji między różnymi reprezentacjami kolorów. Jest to przydatne podczas pracy z obrazami w różnych przestrzeniach kolorów.

Konwersja obrazów z PNG na JPEG

PNG i JPEG to powszechnie używane formaty obrazów, każdy o odrębnych cechach. PNG to bezstratny format, który zastępuje GIF, obsługując obrazy wysokiej jakości z zachowaniem danych obrazu i przezroczystością. PNG dobrze nadaje się do obrazów z ostrymi krawędziami, tekstem lub obszarami o jednolitym kolorze.

The obraz pakiet zawiera jpg I png pakiety, których można użyć do konwersji formatu obrazu między dwoma formatami.

Możesz napisać funkcję konwertującą obrazy PNG do formatu JPEG. Oto przykład, który akceptuje bajtowy strumień danych obrazu jako dane wejściowe:

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 funkcja wykrywa typ zawartości za pomocą http. WykryjTypZawartości funkcjonować. Ta funkcja pobiera wycinek bajtu obrazu jako dane wejściowe i zwraca typ zawartości jako ciąg znaków.

The przełącz instrukcję warunkową ma jeden przypadek, który sprawdza, czy format obrazu to PNG. Funkcja dekoduje wycinek bajtu obrazu, jeśli jest to obraz PNG z rozszerzeniem obraz. Rozszyfrować funkcjonować.

Wreszcie, ToJpeg tworzy nowy bufor i koduje obraz w formacie JPEG z rozszerzeniem jpg. Kodować funkcjonować.

Możesz załadować obraz PNG przed wywołaniem ToJpeg z os. Odczyt pliku funkcjonować:

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 główny funkcja odczytuje obraz PNG z określonego katalogu przed wywołaniem funkcji ToJpeg funkcjonować. The ToJpeg funkcja zwraca fragment bajtu obrazu w formacie JPEG.

The główny funkcja zapisuje plik JPEG w określonej ścieżce z rozszerzeniem os. Zapisz plik funkcjonować. Po pomyślnym procesie konwersji plik główny funkcja drukuje komunikat do konsoli.

Konwersja obrazów z JPEG do PNG

JPEG to stratny format zoptymalizowany pod kątem złożonych fotografii. JPEG osiąga wyższe współczynniki kompresji, co skutkuje mniejszymi rozmiarami plików, aczkolwiek z niewielką utratą jakości.

W przeciwieństwie do PNG, JPEG nie obsługuje przezroczystości. Doskonale sprawdza się w wyświetlaniu obrazów fotograficznych z różnymi kolorami i gradientami.

Oto jak możesz przekonwertować plik wyjście.jpg plik do pliku PNG o nazwie wejście.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 funkcja dekoduje wycinek bajtu obrazu za pomocą jpg. Rozszyfrować funkcjonować. Funkcja tworzy nowy bufor do kodowania obrazka w formacie PNG z rozszerzeniem png. Kodować funkcjonować.

Tutaj jest główny funkcja wywołująca tzw JpegToPng funkcjonować:

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 główny odczytuje obraz JPEG z określonego katalogu i wywołuje funkcję JpegToPng funkcjonować. Ta funkcja zwraca fragment bajtu obrazu w formacie PNG.

Go zapewnia większość funkcji potrzebnych do tworzenia aplikacji w swojej standardowej bibliotece

Pakiet obrazów jest jedną z wielu wszechstronnych bibliotek w ekosystemie Go. Dzięki pakietowi obrazów możesz wykonywać zadania związane z obrazami bez polegania na zewnętrznych bibliotekach.

Go udostępnia również inne wszechstronne pakiety, w tym pakiet http do tworzenia aplikacji internetowych. Pakiet http zawiera większość funkcji potrzebnych do zbudowania aplikacji internetowej po stronie serwera.