介绍
这篇文章主要介绍php实现svg转化png的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
php实现svg转化png的方法:首先通过“drawInlineSVG”方法将svg转为画布,然后使用“base64_image_content”方法将画布转为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格式
2) png格式
以上是php实现svg转化png的方法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
php实现svg转化png的方法