Bu kullanışlı komut satırı araçları, Golang'ın çok yönlülüğünü gösterir.

Görüntü formatı dönüştürme, farklı sistemler arasında uyumluluğu ve verimli görüntü işlemeyi sağlamak için yazılım geliştirmede hayati önem taşır. Görüntüleri formatlar arasında dönüştürerek görüntü saklama, aktarma, oluşturma ve işlemeyi optimize edebilirsiniz.

Go ekosisteminde görüntü biçimi dönüştürme için birçok paket vardır ve Golang, görüntü biçimlendirme ve dönüştürme için bir görüntü paketi sağlar. Görüntü paketi, görüntülerin kodunu çözme, kodlama, yeniden boyutlandırma ve döndürme özellikleri dahil olmak üzere temel 2B görüntü işlevselliği sağlar.

İmaj Paketine Başlarken

Go'nun yerleşik görüntü kitaplığı, çeşitli biçimlerdeki görüntülerle çalışmak için kapsamlı işlevsellik sağlar. bu görüntü paket, görüntüleri okumak, yazmak ve değiştirmek için destek sağlar.

bu görüntü paket çoklu destekler resim dosyası türleri ve JPEG, PNG, GIF ve BMP dahil formatlar. Dosyalardan veya akışlardan görüntüleri okumanıza ve kodunu çözmenize ve görüntüleri dosyalara veya akışlara kodlamanıza ve yazmanıza olanak tanır. Bu, biçimleri ne olursa olsun Go'da farklı görüntü türleri ile çalışmayı kolaylaştırır.

instagram viewer

Kitaplık ayrıca görüntü işleme ve işleme için kapsamlı işlevsellik sunar. bu görüntü paketi, piksel değerlerini değiştirmek veya özel filtreler uygulamak gibi görevler için düşük seviyeli manipülasyona izin vererek, tek tek piksellere erişmek için yöntemler sağlar.

Ek olarak paket, renk modellerini destekler ve farklı renk temsilleri arasında dönüştürme yapmak için araçlar sağlar. Bu, çeşitli renk uzaylarındaki görüntülerle çalışmak için kullanışlıdır.

Görüntüleri PNG'den JPEG'e Dönüştürme

PNG ve JPEG yaygın olarak kullanılan görüntü formatlarıdır, her biri farklı özelliklere sahip. PNG, GIF'in yerini alan kayıpsız bir biçimdir ve korunmuş görüntü verileri ve şeffaflık ile yüksek kaliteli görüntüleri destekler. PNG, keskin kenarlara, metne veya tek tip renkli alanlara sahip görüntüler için çok uygundur.

bu görüntü paket içerir jpeg Ve png İki format arasında görüntü formatı dönüşümü için kullanabileceğiniz paketler.

PNG resimlerini JPEG formatına dönüştürmek için bir fonksiyon yazabilirsiniz. Görüntü baytı veri akışını giriş olarak kabul eden bir örneği burada bulabilirsiniz:

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

bu ToJpeg'e işlevi, içerik türünü şu şekilde algılar: http. İçerikTürünü Algıla işlev. Bu işlev, görüntü bayt dilimini girdi olarak alır ve içerik türünü bir dize olarak döndürür.

bu koşullu ifadeyi değiştir görüntü formatının PNG olup olmadığını kontrol eden bir durumu vardır. İşlev, şuna sahip bir PNG görüntüsüyse, görüntü bayt diliminin kodunu çözer: görüntü. şifresini çöz işlev.

Son olarak, ToJpeg'e işlevi yeni bir arabellek oluşturur ve görüntüyü JPEG biçiminde kodlar. jpeg kodlamak işlev.

ToJpeg'i çağırmadan önce PNG görüntüsünü yükleyebilirsiniz. işletim sistemi. Dosyayı Oku işlev:

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

bu ana işlev, çağrılmadan önce belirtilen dizinden PNG görüntüsünü okur. ToJpeg'e işlev. bu ToJpeg'e işlevi görüntünün bir bayt dilimini JPEG biçiminde döndürür.

bu ana işlevi, JPEG dosyasını belirtilen yola yazar. işletim sistemi. Dosya Yaz işlev. Başarılı bir dönüştürme işleminden sonra, ana işlevi konsola bir mesaj yazdırır.

Görüntüleri JPEG'den PNG'ye Dönüştürme

JPEG, karmaşık fotoğraflar için optimize edilmiş kayıplı bir formattır. JPEG, daha yüksek sıkıştırma oranlarına ulaşarak, hafif bir kalite kaybıyla birlikte daha küçük dosya boyutları sağlar.

PNG'den farklı olarak, JPEG saydamlığı desteklemez. Çeşitli renk ve degradelerle fotoğrafik görüntülerin görüntülenmesinde mükemmeldir.

Şu şekilde dönüştürebilirsiniz: çıktı.jpg adlı bir PNG dosyasına kaydedin. girdi.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
}

bu JPEGToPng işlevi, görüntü bayt diliminin kodunu şu şekilde çözer: jpeg şifresini çöz işlev. İşlev, görüntüyü PNG biçiminde kodlamak için yeni bir arabellek oluşturur. png. kodlamak işlev.

Burada ana çağıran fonksiyon JPEGToPng işlev:

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

bu ana işlevi, belirtilen dizinden JPEG görüntüsünü okur ve JPEGToPng işlev. Bu işlev, görüntünün bir bayt dilimini PNG biçiminde döndürür.

Go, Standart Kitaplığında Uygulamalarınızı Oluşturmak İçin İhtiyaç Duyduğunuz Çoğu Özelliği Sağlar

Görüntü paketi, Go'nun ekosistemindeki çok yönlü kitaplıklardan biridir. İmaj paketi sayesinde harici kütüphanelere güvenmeden imaj görevlerini gerçekleştirebilirsiniz.

Go ayrıca web tabanlı uygulamalar oluşturmak için http paketi de dahil olmak üzere başka çok yönlü paketler sağlar. http paketi, bir web uygulamasının sunucu tarafını oluşturmak için ihtiyaç duyduğunuz özelliklerin çoğunu içerir.