package common import ( "bytes" "fmt" "image/jpeg" "log" "os" svg "github.com/ajstarks/svgo" ) func JpgPngToSvgw(inputPAgth, outputPath string) { // 加载JPG图片 // 加载JPEG图片 jpgFile, err := os.Open(inputPAgth) if err != nil { log.Fatalf("Error opening JPEG file: %v", err) } defer jpgFile.Close() img, err := jpeg.Decode(jpgFile) if err != nil { log.Fatalf("Error decoding JPEG image: %v", err) } // 创建SVG画布 width, height := img.Bounds().Dx(), img.Bounds().Dy() canvas := svg.New(bytes.NewBuffer(nil)) canvas.Start(width, height) // 将JPEG图片转换为SVG路径指令 for y := 0; y < height; y++ { for x := 0; x < width; x++ { // 获取每个像素的颜色 r, g, b, _ := img.At(x, y).RGBA() canvas.Circle(x, y, 1, fmt.Sprintf("fill=\"rgb(%d,%d,%d)\"", r, g, b)) } } // 结束SVG文档 canvas.End() // 输出SVG文件 // svgData := canvas.Bytes() svgFile, err := os.Create(outputPath) if err != nil { log.Fatalf("Error creating SVG file: %v", err) } defer svgFile.Close() // _, err = svgFile.Write(canvas) if err != nil { log.Fatalf("Error writing SVG data: %v", err) } }