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为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
PHP中的事务使用实例
May 26 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 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 获取文件权限函数介绍
2013/07/11 PHP
php class类的用法详细总结
2013/10/17 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
python打包生成so文件的实现
2020/10/30 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
校长就职演讲稿
2014/01/06 职场文书
质检部经理岗位职责
2014/02/19 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
安全例会汇报材料
2014/08/23 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
逃课检讨书范文
2015/05/06 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
Python制作表白爱心合集
2022/01/22 Python
python运算符之与用户交互
2022/04/13 Python
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android