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 相关文章推荐
基于文本的搜索
Oct 09 PHP
PHP常用代码
Nov 23 PHP
使用adodb lite解决问题
Dec 31 PHP
PHP编码规范-php coding standard
Mar 16 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
Jun 03 PHP
PHP has encountered a Stack overflow问题解决方法
Nov 03 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
PHP实现递归无限级分类
Oct 22 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
smarty中js的调用方法示例
2014/10/27 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
php查询操作实现投票功能
2016/05/09 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
JS俄罗斯方块,包含完整的设计理念
2010/12/11 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
鼠标滚轮控制网页横向移动实现思路
2013/03/22 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
Nuxt.js踩坑总结分享
2018/01/18 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
Python调用飞书发送消息的示例
2020/11/10 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
感恩节红领巾广播稿
2014/02/11 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
项目合作协议书
2014/09/23 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
辩护意见书
2015/06/04 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python