因為在 Go 中,圖片是靠 image package 來處理的。
而在原生 library 中,並沒有針對 svg 的處理。
我在網路上有找到相關 library ,特此紀錄。
相關 library 有以下 3 個:
最後一個是用來畫 SVG 檔用的 library。和本文主題無關,但因為牽扯到 SVG,順便記錄一下。
而前兩者則是真的可以將 SVG 轉成 image.Image。
Code 如下:
func (/* output Image 的寬高 */imageWidth, imageHeight int, svgStream io.Reader) image.Image{
svg, _ := oksvg.ReadIconStream(b)
img := image.NewRGBA(image.Rect(0, 0, imageWidth, imageHeight))
svg.Draw(
rasterx.NewDasher(imageWidth, imageHeight, rasterx.NewScannerGV(imageWidth, imageHeight, img, img.Bounds())),
1, // 如果沒有半透明需求,直接設為 1 就好
)
return img
}
參考資料
How to create and export svg to png/jpeg. StackOverflow. https://stackoverflow.com/q/42993407
沒有留言:
張貼留言