Ови практични алати командне линије показују Голангову свестраност.
Конверзија формата слике је од виталног значаја у развоју софтвера за омогућавање компатибилности и ефикасног руковања сликама у различитим системима. Можете оптимизовати складиштење, пренос, приказивање и манипулацију слика тако што ћете претворити слике између формата.
Постоји много пакета за конверзију формата слике у Го екосистему, а Голанг обезбеђује пакет слика за форматирање и конверзију слика. Пакет слика пружа основну функционалност 2Д слике, укључујући функције за декодирање, кодирање, промену величине и ротирање слика.
Почетак рада са пакетом слика
Го-ова уграђена библиотека слика пружа свеобухватну функционалност за рад са сликама у различитим форматима. Тхе слика пакет пружа подршку за читање, писање и манипулисање сликама.
Тхе слика пакет подржава вишеструко типови сликовних датотека и формате, укључујући ЈПЕГ, ПНГ, ГИФ и БМП. Омогућава вам читање и декодирање слика из датотека или стримова и кодирање и писање слика у датотеке или стримове. Ово олакшава рад са различитим типовима слика у Го-у, без обзира на њихов формат.
Библиотека такође нуди широку функционалност за манипулацију и обраду слика. Тхе слика пакет пружа методе за приступ појединачним пикселима, омогућавајући манипулацију ниског нивоа за задатке као што су модификовање вредности пиксела или примена прилагођених филтера.
Поред тога, пакет подржава моделе боја и пружа алате за конверзију између различитих приказа боја. Ово је згодно за рад са сликама у различитим просторима боја.
Претварање слика из ПНГ у ЈПЕГ
ПНГ и ЈПЕГ су најчешће коришћени формати слика, од којих свака има различите карактеристике. ПНГ је формат без губитака који замењује ГИФ, подржавајући слике високог квалитета са очуваним подацима о слици и транспарентношћу. ПНГ је погодан за слике са оштрим ивицама, текстом или областима уједначене боје.
Тхе слика пакет садржи јпег и пнг пакете које можете користити за конверзију формата слике између два формата.
Можете написати функцију за претварање ПНГ слика у ЈПЕГ формат. Ево примера који прихвата ток података бајтова слике као улаз:
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)
}
Тхе ТоЈпег функција детектује тип садржаја са хттп. ДетецтЦонтентТипе функција. Ова функција узима исечак бајтова слике као улаз и враћа тип садржаја као стринг.
Тхе свитцх условни исказ има један случај који проверава да ли је формат слике ПНГ. Функција декодира исечак бајтова слике ако је то ПНГ слика са слика. Децоде функција.
Коначно, ТоЈпег функција креира нови бафер и кодира слику у ЈПЕГ формату са јпег. Енцоде функција.
Можете учитати ПНГ слику пре него што позовете ТоЈпег помоћу ос. РеадФиле функција:
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!")
}
Тхе главни функција чита ПНГ слику из наведеног директоријума пре него што позове ТоЈпег функција. Тхе ТоЈпег функција враћа део слике у бајту у ЈПЕГ формату.
Тхе главни функција уписује ЈПЕГ датотеку на наведену путању са ос. ВритеФиле функција. Након успешног процеса конверзије, главни функција штампа поруку на конзоли.
Претварање слика из ЈПЕГ у ПНГ
ЈПЕГ је формат са губицима оптимизован за сложене фотографије. ЈПЕГ постиже веће омјере компресије, што резултира мањим величинама датотека, иако уз благи губитак квалитета.
За разлику од ПНГ-а, ЈПЕГ не подржава транспарентност. Одликује се у приказивању фотографских слика са различитим бојама и градијентима.
Ево како можете да конвертујете оутпут.јпг датотеку у ПНГ датотеку под називом инпут.пнг:
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
}
Тхе ЈпегТоПнг функција декодира исечак бајтова слике помоћу јпег. Децоде функција. Функција креира нови бафер за кодирање слике у ПНГ формату са пнг. Енцоде функција.
Ево главни функција која позива ЈпегТоПнг функција:
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!")
}
Тхе главни функција чита ЈПЕГ слику из наведеног директоријума и позива ЈпегТоПнг функција. Ова функција враћа део слике у бајтовима у ПНГ формату.
Го пружа већину функција које су вам потребне за прављење апликација у својој стандардној библиотеци
Пакет слика је једна од многих разноврсних библиотека у Го-овом екосистему. Захваљујући пакету слика, можете обављати задатке слика без ослањања на спољне библиотеке.
Го такође пружа друге разноврсне пакете, укључујући хттп пакет за прављење веб апликација. хттп пакет садржи већину функција које су вам потребне да бисте направили серверску страну веб апликације.