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(有效)  

Gmagick convert SVG to PNG with transparent/opacity background的更多相关文章

  1. Convert SVG to PNG in Python - Stack Overflow

    Convert SVG to PNG in Python - Stack Overflow Convert SVG to PNG in Python

  2. CairoSVG - Convert SVG to PNG or PDF - Contents

    CairoSVG - Convert SVG to PNG or PDF - Contents User Documentation Author Guillaume Ayoub Date 2011- ...

  3. how to convert SVG shapes to polygon

    how to convert SVG shapes to polygon 如何将 svg 的 rect 转换成 polygon rect.circle.ellipse.line.polyline.po ...

  4. [Tools] Convert SVG to a PDF in Node with PDFKit and SVG.js

    Given a epxress application and an svg template, we want to draw some text, date onto it and convert ...

  5. 100% opacity UILabel over a 50% opacity background (UIView?) UIView是百分之50透明而上面的UILable是100%不透明

    So right now I have a UIView with a UILabel in it. I want the background to have an opacity < 1.0 ...

  6. 用GraphicsMagick处理svg转png遇到的坑

    1前言 用GraphicsMagick处理svg转png,且背景是透明且没有黑边,由于使用虚拟机的gm版本是1.3.28导致有黑边问题且svg中path中有opacity属性时,加上+antialia ...

  7. 微信公众号 SVG长按互动

    <section class="" style="display: block;width: 100%;height:667px;overflow:hidden;m ...

  8. svg矢量图绘制以及转换为Android可用的VectorDrawable资源

    项目需要 要在快速设置面板里显示一个VoWiFi图标(为了能够区分出来图形,我把透明的背景填充为黑色了) 由于普通图片放大后容易失真,这里我们最好用矢量图(SVG(Scalable Vector Gr ...

  9. Ubuntu 下将 svg 图片转换为其他格式 (如 png)

    参考 How to Convert SVG Files to other Image Formats on Ubuntu 12.04/11.10 Ubuntu 下将 svg 图片转换为其他格式 (如 ...

随机推荐

  1. 基于微服务的DevOps落地指南 交付效率提升40%

    基于微服务的DevOps落地指南 交付效率提升40% 2015-2016年,珍爱线下门店已新增覆盖城市9个,与此同时,CRM系统大小故障却发生了数十起... ... 珍爱网是以“网络征选+人工红娘”模 ...

  2. 几种c++字符串split 函数实现的比较

    文中的字符串split函数功能是 从字符串中按照特定的分隔符进行分割,分割的结果保存到std::vector中. 1. strtok实现 std::vector<std::string> ...

  3. centOS中mysql一些常用操作

      安装mysqlyum -y install mysql-server 修改mysql配置vi /etc/my.cnf 这里会有很多需要注意的配置项,后面会有专门的笔记暂时修改一下编码(添加在密码下 ...

  4. [Alpha阶段]第五次Scrum Meeting

    Scrum Meeting博客目录 [Alpha阶段]第五次Scrum Meeting 基本信息 名称 时间 地点 时长 第五次Scrum Meeting 19/04/09 教1_2楼教室 65min ...

  5. Linux(Ubuntu 16) 下Java开发环境的配置(一)------JDK的配置

    前言: 本文介绍的是通用的安装方法,一般linux系统均可使用该方法安装.本文以Java8环境为例进行配置.   1.JDK的下载 进入java下载页(http://www.oracle.com/te ...

  6. Pyspark-SQL 官方 API 的一些梳理(上)

    在 Pyspark 操纵 spark-SQL 的世界里借助 session 这个客户端来对内容进行操作和计算.里面涉及到非常多常见常用的方法,本篇文章回来梳理一下这些方法和操作. class pysp ...

  7. Spring MVC 使用介绍(十)—— 编码

    一.概述 客户端与服务器端在交互过程中,需要将字符以某种编码方式转化为字节流进行传输,因此涉及字符的编码和解码.某一方以编码方案A编码,另一方须以同样的编码方案解码,否则会出现乱码. 客户端与服务器端 ...

  8. P1137 旅行计划

    /*拓扑排序去寻找点的拓扑序 便于DP,那么怎么去找 首先邻接表存边,然后dfs搜寻每一个点 最后进行拓扑排序,找到拓扑序*/ #include<bits/stdc++.h> ; ; us ...

  9. sopUI上手教程

    1.新建项目 File-->New SOAP Project-->Project Name:填入项目名  Initial WSDL:填入项目的 web Services 2.添加WSDL ...

  10. jq常用操作

    1. 将滚动条置于底部 var srcH = $(".msg-IOC").prop("scrollHeight");$('.msg-IOC').scrollTo ...