canvas - 如何创建 svg 并将其导出为 png/jpeg

标签 canvas go imagemagick

例如,我有以下代码片段

package main

import (
    "github.com/ajstarks/svgo"
    "os"
    _ "image"
    _ "fmt"
)

func main(){
    width := 512
    height := 512

    canvas := svg.New(os.Stdout)
    canvas.Start(width,height)
    canvas.Image(0,0,512,512,"src.jpg","0.50")
    canvas.End()
}

我想将此代码创建的 svg 导出为 jpeg 或 png 或 svg 让我们说。我不知道该怎么做。我可以使用 imagemagick 或其他东西,但为此我需要 SVG 东西。请有人帮我解决这个问题。

最佳答案

如果你更喜欢使用 pure go

package main

import (
  "image"
  "image/png"
  "os"

  "github.com/srwiley/oksvg"
  "github.com/srwiley/rasterx"
)

func main() {
  w, h := 512, 512

  in, err := os.Open("in.svg")
  if err != nil {
    panic(err)
  }
  defer in.Close()

  icon, _ := oksvg.ReadIconStream(in)
  icon.SetTarget(0, 0, float64(w), float64(h))
  rgba := image.NewRGBA(image.Rect(0, 0, w, h))
  icon.Draw(rasterx.NewDasher(w, h, rasterx.NewScannerGV(w, h, rgba, rgba.Bounds())), 1)

  out, err := os.Create("out.png")
  if err != nil {
    panic(err)
  }
  defer out.Close()

  err = png.Encode(out, rgba)
  if err != nil {
    panic(err)
  }
}

关于canvas - 如何创建 svg 并将其导出为 png/jpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993407/

相关文章:

php - PHP 图像中已更改像素的百分比

png - ImageMagick PNG 调整大小会增加文件大小

javascript - HTML5 Canvas 高宽100%扭曲游戏动画

wpf - 如何扩展 Path 对象的 WPF HitTest 区域

javascript - json数据未解析成

javascript - 在 HTML5 <canvas> 上绘制不同视角的模型

json - 在 Python 中将任何 JSON 转换为标准字典的 golang 等价物是什么?

validation - 在 Golang 中使用 OR 条件验证结构的两个字段

golang DeepEqual 和 Reflect.Zero

animation - 使用 imagemagick 制作动画 gif,它放大我的图像并将每一帧放在角落