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 上传文件的方法(类)
Jul 30 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php中去除所有js,html,css代码
Oct 12 PHP
PHP中simplexml_load_string函数使用说明
Jan 01 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
Laravel 验证码认证学习记录小结
Dec 20 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
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php生成圆角图片的方法
2015/04/07 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
php实现微信模板消息推送
2018/03/30 PHP
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
python实现图片插入文字
2019/11/26 Python
PyTorch中permute的用法详解
2019/12/30 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
党支部书记先进事迹
2014/01/17 职场文书
2014年母亲节寄语
2014/05/07 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
安全温馨提示语大全
2015/07/14 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
办公室规章制度范本
2015/08/04 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书