mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-10-27 19:53:41 +08:00
42 lines
969 B
Go
42 lines
969 B
Go
package plg_image_transcode
|
|
|
|
import (
|
|
. "github.com/mickael-kerjean/filestash/server/common"
|
|
"github.com/srwiley/oksvg"
|
|
"github.com/srwiley/rasterx"
|
|
"image"
|
|
"image/png"
|
|
"io"
|
|
)
|
|
|
|
/*
|
|
* This bit isn't used because the rendering is very poor and would
|
|
* generate too many bug reports
|
|
*/
|
|
func transcodeSvg(reader io.Reader) (io.ReadCloser, string, error) {
|
|
icon, err := oksvg.ReadIconStream(reader)
|
|
if err != nil {
|
|
return nil, "", err
|
|
}
|
|
icon.SetTarget(0, 0, icon.ViewBox.W, icon.ViewBox.H)
|
|
width := int(icon.ViewBox.W)
|
|
height := int(icon.ViewBox.H)
|
|
img := image.NewRGBA(image.Rect(0, 0, width, height))
|
|
icon.Draw(
|
|
rasterx.NewDasher(
|
|
width, height,
|
|
rasterx.NewScannerGV(width, height, img, img.Bounds()),
|
|
), 1,
|
|
)
|
|
|
|
r, w := io.Pipe()
|
|
go func() {
|
|
err := png.Encode(w, img)
|
|
w.Close()
|
|
if err != nil {
|
|
Log.Debug("plg_image_transcode::svg png encoding error '%s'", err.Error())
|
|
}
|
|
}()
|
|
return NewReadCloserFromReader(r), "image/png", nil
|
|
}
|