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 相关文章推荐
文件系统基本操作类
Nov 23 PHP
php 常用字符串函数总结
Mar 15 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
php缓存技术详细总结
Aug 07 PHP
php网站地图生成类示例
Jan 13 PHP
php读取文件内容的三种可行方法示例介绍
Feb 08 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
php计算当前程序执行时间示例
Apr 24 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
php实现RSA加密类实例
Mar 26 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 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
56.com视频采集接口程序(PHP)
2007/09/22 PHP
PHP编码转换
2012/11/05 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
Javascript开发包大全整理
2006/12/22 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
javascript中createElement的两种创建方式
2015/05/14 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
详解Django框架中用context来解析模板的方法
2015/07/20 Python
Python OpenCV 直方图的计算与显示的方法示例
2018/02/08 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
python实现文字版扫雷
2020/04/24 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
教师实习自我鉴定
2013/12/13 职场文书
海飞丝的广告词
2014/03/20 职场文书
毕业自我鉴定书
2014/03/24 职场文书
公司租房协议书范本
2014/10/08 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
值班管理制度范本
2015/08/06 职场文书
关于环保的广播稿
2015/12/17 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书