svg格式如何转化为png?有什么实现方法?
Admin 2021-05-25 群英技术资讯 1742 次浏览
svg格式如何转化为png?svg是可缩放的矢量图形格式。svg格式的图像优势有,可任意放大图形显示,而且边缘异常清晰,生成的文件很小,方便传输等等,所以十分适合用于设计高分辨率的Web图形页面。png格式无损压缩的位图片形格式,大多数图片编辑软件都可以输出PNG格式的图片,对于png格式我们是比较常见的。那么如果想要实现vg转化png格式要怎么做呢?
a.研究imagick插件方法
$im = new Imagick($upload_path . $file_name); $svg = file_get_contents($upload_path . $file_name); $svg = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>'.$svg; $im->readImageBlob($svg); // png settings $im->setImageFormat("png24"); $srcImage = $im->getImageGeometry(); //获取源图片宽和高 $im->resizeImage($srcImage['width'], $srcImage['height'], imagick::FILTER_LANCZOS, 1, false); $im->writeImage($upload_path.'/'.$topng_name.'.png'); $im->clear(); $im->destroy();
b.遇到的问题
svg图片可以成功转化为png格式图片,但png图片存在问题:
1)线段丢失;
2)字体不展示;
3)svg文件中style标签样式不能解析;
a.svg转canvas
function drawInlineSVG($svg, callback) { var svg = $svg; var parser = new DOMParser(); var doc = parser.parseFromString(svg, "text/xml"); svg = doc.getElementsByTagName('svg'); svg = svg[0]; svg.innerHTML = '<rect width="100%" height="100%" fill="#ffffff"></rect>' + svg.innerHTML; var svgData = new XMLSerializer().serializeToString( svg ); var img = document.createElement( "img" ); img.setAttribute( "src", "data:image/svg+xml;base64," + btoa( unescape(encodeURIComponent(svgData)) ) ); img.onload = function () { var canvas = document.createElement( "canvas" ); canvas.width = img.width; canvas.height = img.height; var ctx = canvas.getContext( "2d" ); //取得画布的2d绘图上下文 ctx.drawImage( img, 0, 0 ); canvas.toDataURL( "image/png" ); var base64Src = canvas.toDataURL( "image/png" ); callback && callback(base64Src); // 调用回掉函数 }; return; }
b.canvas转png(base64Src转化为png)
/* base64格式编码转换为图片并保存对应文件夹 */ function base64_image_content($base64_image_content,$path, $file_name = ''){ //匹配出图片的格式 if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){ if(!file_exists($path)){ // 路径不存在 return false; } $new_file = $path . $file_name; if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){ return '/'.$new_file; }else{ return false; } }else{ return false; } }
c.效果示例
1)svg格式
2)png格式
以上就是关于svg格式如何转化为png的介绍,上文有具体的代码和操作,需要的朋友可以参考,希望文本对大家有帮助,想要了解更多svg格式如何转化为png的内容。大家可以继续关注其他文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
php数组排序并输出:1、uasort使用一个用户自定义的比较函数来排序数组中的值,并保持索引关联。2、uksort()使用一个用户自定义的比较函数来排序数组中的键名称。3、usort()使用用户自定义比较函数来对数组中的值排序。
这篇文章主要介绍了PHP实现一个按钮点击上传多个图片操作,结合具体实例形式分析了PHP多文件上传前端提交与后台处理相关操作技巧,需要的朋友可以参考下
在本篇文章里小编给大家整理了一篇关于php memcached的实例用法内容,有兴趣的朋友们可以跟着学习参考下。
php如何批量删除数据?下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大,下面我们一起来了解看看吧。
今天小编就为大家分享一篇laravel接管Dingo-api和默认的错误处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008