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判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
PHP过滤★等特殊符号的正则
Jan 27 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
php file_get_contents取文件中数组元素的方法
Apr 01 PHP
关于php开启错误提示的总结
Sep 24 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
php实现推荐功能的简单实例
Sep 29 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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/01/29 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
脚本收藏iframe
2006/07/21 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
微信小程序tabBar底部导航中文注解api详解
2017/08/16 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
详解js中let与var声明变量的区别
2020/04/05 Javascript
JS随机密码生成算法
2019/09/23 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
探究Python中isalnum()方法的使用
2015/05/18 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
python中类的属性和方法介绍
2018/11/27 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
python跨文件使用全局变量的实现
2020/11/17 Python
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
艺术设计专业个人求职信
2013/09/21 职场文书
小学校本培训方案
2014/06/06 职场文书
世界遗产导游词
2015/02/13 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
MySQL学习之基础操作总结
2022/03/19 MySQL
Redis实战高并发之扣减库存项目
2022/04/14 Redis