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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
php 数组的指针操作实现代码
Feb 08 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
php内嵌函数用法实例
Mar 20 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
Sep 22 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
YII分模块加载路由的实现方法
Oct 01 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
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
详解Angular操作cookies方法
2018/06/01 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
Python中装饰器高级用法详解
2017/12/25 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
对Python 数组的切片操作详解
2018/07/02 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
结构和类有什么异同
2012/07/16 面试题
民族团结先进个人材料
2014/02/05 职场文书
数学检讨书1000字
2014/02/24 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL