Alat baris perintah yang praktis ini memamerkan keserbagunaan Golang.
Konversi format gambar sangat penting dalam pengembangan perangkat lunak untuk memungkinkan kompatibilitas dan penanganan gambar yang efisien di berbagai sistem. Anda dapat mengoptimalkan penyimpanan, transmisi, rendering, dan manipulasi gambar dengan mengonversi gambar antar format.
Ada banyak paket untuk konversi format gambar di ekosistem Go, dan Golang menyediakan paket gambar untuk pemformatan dan konversi gambar. Paket gambar menyediakan fungsionalitas gambar 2D dasar, termasuk fitur untuk decoding, encoding, mengubah ukuran, dan memutar gambar.
Memulai Dengan Paket Gambar
Pustaka gambar bawaan Go menyediakan fungsionalitas komprehensif untuk bekerja dengan gambar dalam berbagai format. Itu gambar package menyediakan dukungan untuk membaca, menulis, dan memanipulasi gambar.
Itu gambar paket mendukung banyak jenis file gambar dan format, termasuk JPEG, PNG, GIF, dan BMP. Ini memungkinkan Anda untuk membaca dan mendekode gambar dari file atau aliran dan menyandikan dan menulis gambar ke file atau aliran. Hal ini memudahkan untuk bekerja dengan berbagai jenis gambar di Go, apa pun formatnya.
Perpustakaan juga menawarkan fungsionalitas ekstensif untuk manipulasi dan pemrosesan gambar. Itu gambar package menyediakan metode untuk mengakses piksel individual, memungkinkan manipulasi tingkat rendah untuk tugas seperti mengubah nilai piksel atau menerapkan filter khusus.
Selain itu, paket mendukung model warna dan menyediakan alat untuk mengonversi antara representasi warna yang berbeda. Ini berguna untuk bekerja dengan gambar di berbagai ruang warna.
Konversi Gambar Dari PNG ke JPEG
PNG dan JPEG adalah format gambar yang umum digunakan, masing-masing dengan karakteristik yang berbeda. PNG adalah format lossless yang menggantikan GIF, mendukung gambar berkualitas tinggi dengan data gambar dan transparansi yang terjaga. PNG sangat cocok untuk gambar dengan tepi tajam, teks, atau area berwarna seragam.
Itu gambar paket berisi jpeg Dan png paket yang dapat Anda gunakan untuk konversi format gambar antara dua format.
Anda dapat menulis fungsi untuk mengonversi gambar PNG ke format JPEG. Berikut adalah contoh yang menerima aliran data byte gambar sebagai 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)
}
Itu ToJpeg fungsi mendeteksi jenis konten dengan http. DetectContentType fungsi. Fungsi ini mengambil irisan byte gambar sebagai input dan mengembalikan tipe konten sebagai string.
Itu beralih pernyataan bersyarat memiliki satu kasing yang memeriksa apakah format gambarnya adalah PNG. Fungsi ini mendekode irisan byte gambar jika itu adalah gambar PNG dengan gambar. Membaca sandi fungsi.
Akhirnya, ToJpeg fungsi membuat buffer baru dan menyandikan gambar dalam format JPEG dengan jpeg. Menyandi fungsi.
Anda dapat memuat gambar PNG sebelum memanggil ToJpeg dengan os. ReadFile fungsi:
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!")
}
Itu utama fungsi membaca gambar PNG dari direktori yang ditentukan sebelum memanggil ToJpeg fungsi. Itu ToJpeg fungsi mengembalikan potongan byte dari gambar dalam format JPEG.
Itu utama fungsi menulis file JPEG ke jalur yang ditentukan dengan os. WriteFile fungsi. Setelah proses konversi berhasil, file utama fungsi mencetak pesan ke konsol.
Mengubah Gambar Dari JPEG ke PNG
JPEG adalah format lossy yang dioptimalkan untuk foto yang rumit. JPEG mencapai rasio kompresi yang lebih tinggi, menghasilkan ukuran file yang lebih kecil, meskipun dengan sedikit penurunan kualitas.
Tidak seperti PNG, JPEG tidak mendukung transparansi. Ini unggul dalam menampilkan gambar fotografi dengan berbagai warna dan gradien.
Inilah cara Anda dapat mengonversi file output.jpg file ke file PNG bernama 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
}
Itu JpegToPng fungsi menerjemahkan potongan byte gambar dengan jpeg. Membaca sandi fungsi. Fungsi membuat buffer baru untuk menyandikan gambar dalam format PNG dengan png. Menyandi fungsi.
Ini dia utama fungsi yang memanggil JpegToPng fungsi:
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!")
}
Itu utama fungsi membaca gambar JPEG dari direktori yang ditentukan dan memanggil JpegToPng fungsi. Fungsi ini mengembalikan potongan byte dari gambar dalam format PNG.
Go Menyediakan Sebagian Besar Fitur yang Anda Butuhkan untuk Membangun Aplikasi Anda di Pustaka Standarnya
Paket gambar adalah salah satu dari banyak pustaka serbaguna dalam ekosistem Go. Berkat paket gambar, Anda dapat melakukan tugas gambar tanpa bergantung pada perpustakaan eksternal.
Go juga menyediakan paket serbaguna lainnya, termasuk paket http untuk membangun aplikasi berbasis web. Paket http berisi sebagian besar fitur yang Anda perlukan untuk membangun sisi server aplikasi web.