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(有效)
Gmagick convert SVG to PNG with transparent/opacity background的更多相关文章
- Convert SVG to PNG in Python - Stack Overflow
Convert SVG to PNG in Python - Stack Overflow Convert SVG to PNG in Python
- CairoSVG - Convert SVG to PNG or PDF - Contents
CairoSVG - Convert SVG to PNG or PDF - Contents User Documentation Author Guillaume Ayoub Date 2011- ...
- how to convert SVG shapes to polygon
how to convert SVG shapes to polygon 如何将 svg 的 rect 转换成 polygon rect.circle.ellipse.line.polyline.po ...
- [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 ...
- 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 ...
- 用GraphicsMagick处理svg转png遇到的坑
1前言 用GraphicsMagick处理svg转png,且背景是透明且没有黑边,由于使用虚拟机的gm版本是1.3.28导致有黑边问题且svg中path中有opacity属性时,加上+antialia ...
- 微信公众号 SVG长按互动
<section class="" style="display: block;width: 100%;height:667px;overflow:hidden;m ...
- svg矢量图绘制以及转换为Android可用的VectorDrawable资源
项目需要 要在快速设置面板里显示一个VoWiFi图标(为了能够区分出来图形,我把透明的背景填充为黑色了) 由于普通图片放大后容易失真,这里我们最好用矢量图(SVG(Scalable Vector Gr ...
- Ubuntu 下将 svg 图片转换为其他格式 (如 png)
参考 How to Convert SVG Files to other Image Formats on Ubuntu 12.04/11.10 Ubuntu 下将 svg 图片转换为其他格式 (如 ...
随机推荐
- 基于微服务的DevOps落地指南 交付效率提升40%
基于微服务的DevOps落地指南 交付效率提升40% 2015-2016年,珍爱线下门店已新增覆盖城市9个,与此同时,CRM系统大小故障却发生了数十起... ... 珍爱网是以“网络征选+人工红娘”模 ...
- 几种c++字符串split 函数实现的比较
文中的字符串split函数功能是 从字符串中按照特定的分隔符进行分割,分割的结果保存到std::vector中. 1. strtok实现 std::vector<std::string> ...
- centOS中mysql一些常用操作
安装mysqlyum -y install mysql-server 修改mysql配置vi /etc/my.cnf 这里会有很多需要注意的配置项,后面会有专门的笔记暂时修改一下编码(添加在密码下 ...
- [Alpha阶段]第五次Scrum Meeting
Scrum Meeting博客目录 [Alpha阶段]第五次Scrum Meeting 基本信息 名称 时间 地点 时长 第五次Scrum Meeting 19/04/09 教1_2楼教室 65min ...
- Linux(Ubuntu 16) 下Java开发环境的配置(一)------JDK的配置
前言: 本文介绍的是通用的安装方法,一般linux系统均可使用该方法安装.本文以Java8环境为例进行配置. 1.JDK的下载 进入java下载页(http://www.oracle.com/te ...
- Pyspark-SQL 官方 API 的一些梳理(上)
在 Pyspark 操纵 spark-SQL 的世界里借助 session 这个客户端来对内容进行操作和计算.里面涉及到非常多常见常用的方法,本篇文章回来梳理一下这些方法和操作. class pysp ...
- Spring MVC 使用介绍(十)—— 编码
一.概述 客户端与服务器端在交互过程中,需要将字符以某种编码方式转化为字节流进行传输,因此涉及字符的编码和解码.某一方以编码方案A编码,另一方须以同样的编码方案解码,否则会出现乱码. 客户端与服务器端 ...
- P1137 旅行计划
/*拓扑排序去寻找点的拓扑序 便于DP,那么怎么去找 首先邻接表存边,然后dfs搜寻每一个点 最后进行拓扑排序,找到拓扑序*/ #include<bits/stdc++.h> ; ; us ...
- sopUI上手教程
1.新建项目 File-->New SOAP Project-->Project Name:填入项目名 Initial WSDL:填入项目的 web Services 2.添加WSDL ...
- jq常用操作
1. 将滚动条置于底部 var srcH = $(".msg-IOC").prop("scrollHeight");$('.msg-IOC').scrollTo ...