mirror of
				https://github.com/mickael-kerjean/filestash.git
				synced 2025-11-01 02:43:35 +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
 | |
| }
 | 
