使用PHP动态生成SVGZ图片(gzip压缩的SVG)

经测试SVG的动画性能很差,简单的动画CPU都能占到 30%左右。

可能的用途:

  • 动态天气图片
  • 访问统计计数图片
  • 文字验证生成
  • 动态头像
  • 静态外连图片
  • 图片CHART
<?php

header('Content-Type:image/svg+xml');
header('Content-Encoding:gzip'); $image_width = @$_GET['w'] ?: 800;
$image_height = @$_GET['h'] ?: 600; $svg = <<<EOF
<svg version="1.1"
width="{$image_width}"
height="{$image_height}"
viewBox="0 0 {$image_width} {$image_height}"
preserveAspectRatio="none"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
> <defs>
<g id="E" transform="translate(-340,-90)">
<circle cx="340" cy="90" r="15" fill="blue" />
<path id="path2" d="M390,80 h 0 a50,19 0 1,0 1,1 z" fill="none" stroke="white" stroke-width="1"/>
<circle cx="0" cy="0" r="5" fill="white" stroke="black" stroke-width="1" >
<animateMotion dur="30s" repeatCount="indefinite">
<mpath xlink:href="#path2" />
</animateMotion>
</circle>
</g>
<radialGradient id="sunfill" cx="50%" cy="50%" r="100%">
<stop stop-color="#FF0000" offset="0%" stop-opacity="1"/>
<stop stop-color="#FBF900" offset="95%" stop-opacity="1"/>
<stop stop-color="#FFFFFF" offset="100%" stop-opacity="1"/>
</radialGradient>
</defs> <rect x="0" y="0" width="100%" height="100%" fill="black" /> <circle cx="50%" cy="50%" r="10%" fill="url(#sunfill)" />
<path id="path1" d="M700,200 h 0 a350,200 0 1,0 1,1 z" fill="none" stroke="white" stroke-width="1"/> <use x="0" y="0" xlink:href="#E">
<animateMotion dur="365s" repeatCount="indefinite" >
<mpath xlink:href="#path1" />
</animateMotion>
</use> EOF; $err = 'svg 生成错误!' . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']; if ($err != '')
{
$svg .= '<text x="10" y="20" font-size="12" text-anchor="start" fill="#f00">' . $err . '</text>';
} $svg .= '</svg>'; $svg = gzencode($svg, 9); echo $svg;

PHP 动态输出 svgz 格式图片的更多相关文章

  1. asp.net动态输出透明gif图片

    要使用asp.net动态输出透明gif图片,也就是用Response.ContentType = "image/GIF". 查了国内几个中文资料都没解决,最后是在一个英文博客上找到 ...

  2. C++ 输出PPM格式图片文件

    PPM简介 学习图形学时为了直观地观察结果,需要输出图片,而PPM是一种最简单的图片格式,非常适合新手使用. PPM文件的内容大概是这样的: 第一行固定为P3,代表写入的是PPM格式的RGB图像,除此 ...

  3. MFC中png格式图片贴图的实现

    MFC中png格式图片贴图的实现(2011-07-14 19:10:29)  ___转载自新浪 初学vc,正在做五子棋,五子棋中的图片格式都是bmp格式的,所以贴图用CBitmap可以很简单的实现.刚 ...

  4. jpg/png格式图片转eps格式的方法总结

    jpg/png格式图片转eps格式的方法总结 转自http://blog.sina.com.cn/s/blog_5410e7b50101lme2.html 用latex写论文的筒子应该遇到这样的问题: ...

  5. php 合并图片 (将活动背景图片和动态二维码图片合成一张图片)

    <?php //案例一:将活动背景图片和动态二维码图片合成一张图片 //图片一 $path_1 = './background.png'; //图片二 $path_2 = './FU0851_2 ...

  6. 不同格式图片相互转换的开源库分享(使用CxImage,并有VC6的配置过程)

    不同格式图片相互转换的开源库分享 一.背景 笔者在项目的开发中,需要调用windows下的COM接口SetIconLocation来实现桌面快捷方式.而我们项目中给定的图片格式为png格式,SetIc ...

  7. windows下查看webp格式图片

    关于webp 时下webp格式日渐势起,主流浏览器(IE: ???)已经开始支持webp,诸多互联网企业(Facebook 和 ebay,国内的有淘宝.腾讯和美团等)都已经在不遗余力的将webp应用到 ...

  8. 【Python】使用Python处理RAW格式图片,并根据实际情况完成分组打包发送

    背景 出游之后,朋友交换的照片格式大多是RAW格式,一些人想要JPG格式,但是百度云盘非会员的下载速度惨不忍睹,所以我想着通过微信群直接传(这个在事后也被证实不能完全解决问题,微信限制了每天传递文件的 ...

  9. 如何在latex 中插入EPS格式图片

    如何在latex 中插入EPS格式图片 第一步:生成.eps格式的图片 1.利用visio画图,另存为pdf格式的图片 利用Adobe Acrobat裁边,使图片大小合适 另存为.eps格式,如下图所 ...

随机推荐

  1. Odoo字段类型详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826099.html   一:基本字段类型 Binary:二进制类型,用于保存图片.视频.文件.附件等,在 ...

  2. 转:spring mvc 设置@Scope("prototype")

    spring中bean的scope属性,有如下5种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例prototype表示每次获得bea ...

  3. springboot集成ftp

    目录 springboot集成ftp pom依赖包 ftp登录初始化 ftp上传文件 ftp读取文件,并转成base64 ftp下载文件 ftp客户端与服务端之间数据传输,主动模式和被动模式 spri ...

  4. DT添加七牛云对象存储插件功能

    七牛云对象存储  1.注意客户购买的空间的存储区域,区域不同对应的上传域名不同    destoon  七牛云上传文件   用下面源码替换include/ftp.class.php   文件代码 &l ...

  5. linux系统时区问题

    1. centos 7 转载自:https://www.cnblogs.com/zhangeamon/p/5500744.html 查看时区: timedatectl $timedatectl sta ...

  6. 13、Python文件处理、os模块、json/pickle序列化模块

    一.字符编码 Python3中字符串默认为Unicode编码. str类型的数据可以编码成其他字符编码的格式,编码的结果为bytes类型. # coding:gbk x = '上' # 当程序执行时, ...

  7. JAVA接口与类的区别

    抽象类:一个类中有抽象方法,这个类就变成了抽象类.抽象类中class的前面必须有abstract修饰符.抽象类中可以有普通方法,也可以有抽象方法,而抽象方法的个数可以是0个,也可以是多个.子类继承父类 ...

  8. 小程序SetData

  9. LSTM的神经元个数

    小书匠深度学习 目录: 1.LSTM简单介绍 2.简单假设样例 3.神经元分析 3.1忘记门层 3.2细胞状态 3.3输出层 3.4总结 4.测试 1.LSTM简单介绍 LSTM在时间上展开 红框从左 ...

  10. TypeScript 真香系列——接口篇

    接口带来了什么好处 好处One —— 过去我们写 JavaScript JavaScript 中定义一个函数,用来获取一个用户的姓名和年龄的字符串: const getUserInfo = funct ...