mirror of
				https://github.com/mickael-kerjean/filestash.git
				synced 2025-11-04 05:27:04 +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
 | 
						|
}
 |