zoukankan      html  css  js  c++  java
  • Gmagick convert SVG to PNG with transparent/opacity background

    1 前言

    在Ubuntu18.04环境下,用gographics/gmagick API使用了以下代码未有效果

    pw := gmagick.NewPixelWand()
    pw.SetOpacity(1)
    //below all no work
    mw1.SetImageBackgroundColor(pw)
    mw1.SetImageColorspace(gmagick.COLORSPACE_TRANSPARENT)
    mw1.TransparentImage(pw,255,1)  

    在windows,使用其API,svg无法读起,提示未找到svg.la库,实际上有。

    2 解决方案

    使用cmd命令来执行得到svg转png,代码如下:

    //main.go
    func ConvertSvg2PngByCmd(mw *gmagick.MagickWand) (mw2 *gmagick.MagickWand, err error) {
    	svgFileName := mw.GetImageFilename()
    	svgFileNameDest := svgFileName[:len(svgFileName)-3] + "png"
    	fmt.Println("svgFileNameDest=", svgFileNameDest)
    	err = CmdUtils.CmdSvg2Png(svgFileName, svgFileNameDest)
    	if err != nil {
    		log.Println("err CmdSvg2Png", err)
    	}
    
    	mw2 = gmagick.NewMagickWand()
    	err = mw2.ReadImage(svgFileNameDest)
    	if err != nil {
    		log.Println("err ReadImage", err)
    	}
    	//mw2 = mw
    	return
    }
    
    //CmdUtils.go 
    package CmdUtils
    
    import (
    	"strings"
    	"os/exec"
    	"regexp"
    )
    
    
    func CmdExec(cmd_str string) (err error) {
    
    	//过滤多余空格,然后分割
    	cmd_str = compressStr(cmd_str)
    	args := strings.Split(cmd_str, " ")
    	d := exec.Command(args[0], args[1:]...)
    	err = d.Start()
            err = d.Wait()
    	return err
    
    }
    
    func CmdSvg2Png(src_svg string, src_dest string) (err error) {
    
    	cmd_str := `gm convert -background none ` + src_svg + " " + src_dest
    	err = CmdExec(cmd_str)
    	return err
    
    }
    
    func compressStr(str string) string {
    	if str == "" {
    		return ""
    	}
    	//匹配一个或多个空白符的正则表达式
    	reg := regexp.MustCompile("\s+")
    	return reg.ReplaceAllString(str, " ")
    }
    

    3 参考资料

    1.https://graphicsmagick-help.narkive.com/qb0m319Z/gm-help-converting-from-svg-to-png-keeping-opacity(只有提问)

    2.https://stackoverflow.com/questions/42293056/gmagick-convert-svg-to-png-with-transparent-background(只有提问)

    3.https://phabricator.wikimedia.org/T76475(只有提问)

    4.http://www.graphicsmagick.org/convert.html(有效)  

  • 相关阅读:
    php环境搭建
    Tomcat配置
    Android短信监听软件
    SASS官方文档
    HTML5 Shiv – 让该死的IE系列支持HTML5吧
    15+ 易响应的CSS框架快速开启你的敏捷网站项目
    遍历~树遍历~find()-next()-nextAll()-nextUntil()-parent()-parents()-parentsUntil()-prev()-prevAll()-prevUntil()-siblings()
    让IE支持@media 响应式布局
    遍历~树遍历~addBack();children();closest()
    遍历~筛选~eq();filter();first();last();has();is();map();slice()
  • 原文地址:https://www.cnblogs.com/fanbi/p/10487515.html
Copyright © 2011-2022 走看看