php实现svg转化png的方法

  介绍

这篇文章主要介绍php实现svg转化png的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

php实现svg转化png的方法:首先通过“drawInlineSVG”方法将svg转为画布,然后使用“base64_image_content”方法将画布转为png即可。

 php实现svg转化png的方法

svg转png实现

1。php imagick扩展插件

。研究imagick插件方法

(im=new Imagick美元upload_path。美元file_name);   svg=file_get_contents (upload_path美元美元。美元file_name);   $ svg=& # 39; & lt; ?xml version=?.0”;编码=癠TF-8"独立=皀o" ?祝辞& # 39;svg美元;   im→美元readImageBlob (svg);//png设置   im→美元setImageFormat (“png24");   srcImage=im→美元getImageGeometry ();//获取源图片宽和高   im→美元resizeImage ($ srcImage[& # 39;宽度# 39;],美元srcImage[& # 39;高度# 39;],imagick:: FILTER_LANCZOS, 1,假);      im→美元writeImage(本市upload_path # 39;美元/& # 39;。美元topng_name强生# 39;. png # 39;);   im→美元clear ();   im→美元毁灭();

b。遇到的问题

svg图片可以成功转化为png格式图片,但png图片存在问题:

1)线段丢失;

2)字体不展示;

3) svg文件中风格标签样式不能解析;

2。弃用imagick插件,改为svg转帆布转png

。svg转帆布

函数drawInlineSVG (svg美元,回调){   svg var=$ svg;      var解析器=new DOMParser ();   var doc=解析器。parseFromString (svg,“文本/xml");   svg=doc.getElementsByTagName (& # 39; svg # 39;);   svg=svg [0];      svg。innerHTML=& # 39; & lt;矩形宽度=?00%”;身高=?00%”;填补=? ffffff"祝辞& lt;/rect> & # 39;+ svg.innerHTML;   var svgData=new XMLSerializer ()。serializeToString (svg);      var img=文档。createElement (“img");   img。setAttribute (“src",“数据:图像/svg + xml; base64,“+ btoa (unescape (encodeURIComponent (svgData))));   img。onload=function () {   画布var=文档。createElement (“canvas");      画布。宽度=img.width;   画布。身高=img.height;   var ctx=画布。getContext (“2 d");//取得画布的2 d绘图上下文   ctx。drawImage (img, 0, 0);   画布。toDataURL(“图像/png");   var base64Src=画布。toDataURL(“图像/png");   回调,,回调(base64Src);//调用回掉函数   };   返回;   }

b.canvas转png (base64Src转化为png)

/* base64格式编码转换为图片并保存对应文件夹*/函数base64_image_content (base64_image_content,路径,美元$ file_name=& # 39; & # 39;) {//匹配出图片的格式   如果(preg_match(& # 39;/^(数据:\ s *形象\/(\ w +); base64,)/& # 39;, base64_image_content美元,导致美元)){   如果(! file_exists(路径)美元){//路径不存在   返回错误;   }   new_file=美元路径。file_name美元;   如果写入($ new_file base64_decode (str_replace(结果[1],美元& # 39;& # 39;,base64_image_content美元)))){   返回& # 39;/& # 39;new_file美元;   其他}{   返回错误;   }   其他}{   返回错误;   }   }

c。效果示例

1) svg格式

 php实现svg转化png的方法

2) png格式

 php实现svg转化png的方法

以上是php实现svg转化png的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

php实现svg转化png的方法