PHP 技巧 * SVG 保存为图片(分享图生成)


Posted in PHP onApril 02, 2021

一、准备

  1. 准备 svg 文件:这一步骤通常由设计完成,而案例是通过 SVG 在线编辑器 生成的;
  2. 确保你的环境支持使用 Imagick 扩展;
  3. 如果是Linux服务器,可能需要安装必要字体,否则中文可能无法正常显示;

二、过程:

test.svg

<svg width="500" height="300" xmlns="http://www.w3.org/2000/svg">
 <!-- Created with Method Draw - http://github.com/duopixel/Method-Draw/ -->
 <g>
  <title>background</title>
  <rect fill="#fff" id="canvas_background" height="302" width="502" y="-1" x="-1"/>
  <g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
   <rect fill="url(#gridpattern)" stroke-width="0" y="0" x="0" height="100%" width="100%"/>
  </g>
 </g>
 <g>
  <title>Layer 1</title>
  <text stroke="#000" transform="matrix(1.2316112832302093,0,0,1.6103224566703835,-34.94758717722778,-66.61220433762628) " xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_1" y="119.89815" x="101.417837" stroke-width="0" fill="#000000">ATONG</text>
  <rect id="svg_2" height="4" width="414" y="139.8375" x="85.25" stroke-width="1.5" stroke="#000" fill="#000000"/>
  <text xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_3" y="179.8375" x="124.5" stroke-width="0" stroke="#000" fill="#000000">Tel: 8888-8888-8888</text>
  <text xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_4" y="209.8375" x="98.5" stroke-width="0" stroke="#000" fill="#000000">email: 991220405@qq.com</text>
  <rect stroke="#000" id="svg_5" height="31.999999" width="33.999999" y="0.75" x="0.75" stroke-width="1.5" fill="#000000"/>
  <rect id="svg_6" height="26" width="26" y="37.8375" x="16.5" fill-opacity="null" stroke-opacity="null" stroke-width="1.5" stroke="#000" fill="#000000"/>
  <rect id="svg_7" height="24" width="25" y="11.8375" x="42.5" fill-opacity="null" stroke-opacity="null" stroke-width="1.5" stroke="#000" fill="#000000"/>
  <rect id="svg_8" height="12" width="12" y="42.8375" x="50.5" fill-opacity="null" stroke-opacity="null" stroke-width="1.5" stroke="#000" fill="#000000"/>
  <text stroke="#000" transform="matrix(0.7079451420430161,0,0,0.43161633610725403,65.21588988354182,166.3232696466148) " xml:space="preserve" text-anchor="start" font-family="Helvetica, Arial, sans-serif" font-size="24" id="svg_9" y="299.75941" x="163.544496" fill-opacity="null" stroke-opacity="null" stroke-width="0" fill="#000000">https://wp.kder.top</text>
 </g>
</svg>

 test.php:

<?php

$svg = file_get_contents("./test.svg");
// todo:: 替换svg的内容
// $svg = str_replace("ATONG","YOUR NAME",$svg);

$im = new \Imagick();

$im->readImageBlob($svg);
$im->setImageFormat("jpeg");
$im->writeImage('./test.jpg');

$im->clear();
$im->destroy();

echo "<img src='./test.jpg'>";

 

PHP 相关文章推荐
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
php数组的一些常见操作汇总
Jul 17 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
Yii2 rbac权限控制之rule教程详解
Jun 23 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP基于PDO扩展操作mysql数据库示例
Dec 24 PHP
PHP解决高并发问题
php引用传递
Apr 01 #PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 #PHP
PHP判断是否是json字符串
Apr 01 #PHP
php TP5框架生成二维码链接
Apr 01 #PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 #PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 #PHP
You might like
PHP 中的一些经验积累
2006/10/09 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
dedecms中使用php语句指南
2014/11/13 PHP
php构造函数的继承方法
2015/02/09 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
PHP引用的调用方法分析
2016/04/25 PHP
php中使用websocket详解
2016/09/23 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python编程中的文件操作攻略
2015/10/16 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Java的基础面试题附答案
2016/01/10 面试题
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
小班下学期个人总结
2015/02/12 职场文书
银行自荐信怎么写
2015/03/05 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
离婚起诉书怎么写
2015/05/19 职场文书