2023年1月11日 星期三

紀錄:Go 如何將 SVG 轉成 image.Image

因為在 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

沒有留言:

張貼留言