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 事件机制(2)
Mar 23 PHP
php对图像的各种处理函数代码小结
Jul 08 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
通过实例解析PHP数据类型转换方法
Jul 11 PHP
基于php+MySql实现学生信息管理系统实例
Aug 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 无线电
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
js 加载并解析XML字符串的代码
2009/12/13 Javascript
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
jQuery实现渐变下拉菜单的简单方法
2015/03/11 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
django admin.py 外键,反向查询的实例
2019/07/26 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
空中乘务员岗位职责
2014/03/08 职场文书
2014年两会学习心得体会
2014/03/17 职场文书