使用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. Linux学习之组管理和权限管理

    Linux组的基本介绍 在Linux中的每个用户必须属于一个组,不能独立于组外.在Linux中每个文件有所有者,所在组,其他组的概念. 1)所有者 2)所在组 3)其他组 4)改变用户所在的组 文件/ ...

  2. zabbix--4.0源码安装

    Zabbix4.0 源码编译安装 ps:其实相对 zabbix 来说,直接按照官网 yum 安装还是要方便点,我这里已经有 lnmp 的环境了,就想自己编译安装试下. 官网yum安装中文文档:http ...

  3. Linux怎么部署docker

    Docker安装 建议在linux环境下安装Docker,window环境搭建比较复杂且容易出错,使用Centos7+yum来安装Docker环境很方便. Docker 软件包已经包括在默认的 Cen ...

  4. virt-install创建虚拟机并制作成模板

    一.使用virt-install创建新的虚拟机 virt--template --ram --vcpu= --virt-type kvm --cdrom=/Data/kvm/iso/CentOS-.i ...

  5. Caused by: java.lang.IllegalStateException: duplicate key: datasource

    java.lang.IllegalStateException: Failed to load property source from location 'classpath:/applicatio ...

  6. discuz x3.3标题的最少字数限制设置方法

    Discuz帖子标题默认字数最多是80个字节,却没有最少的字节限制.最近看到很多站长想限制一下帖子标题最少字数,不管是利于seo,还是禁止灌水,都有必要.为此把设置方法发上来分享. 1.找到并打开st ...

  7. initState 必须调用 super.initState(); 否则报错

    @override void initState() { // initState 必须调用 super.initState(); 否则报错:info: This method overrides a ...

  8. wordpress默认css样式class和id集合

    你是否想过如何设计WordPress主题的不同元素?每个主题都不一样,但是有一些CSS的class和id是由WordPress生成的.我们将逐一介绍一些最重要的默认WordPress样式,方便初学者快 ...

  9. 【转】Web测试中定位bug方法

    在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,进一步了解这个BUG的问题出在那里,是测试人员需要掌握的,可以简单的使用浏览器自带开发者工具.数据库工具配合去排 ...

  10. Java-Eclipse-findbugs-sonar学习

    一.findbugs 和sonar的安装 可以通过Eclipse的Help-Eclipse marketplace中安装. 推荐:findbugs安装Help-install new Software ...