新的应用平台采用国密SM4算法进行加解密
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.1 KiB

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)
}
}