Ajaxload动态加载动画生成工具的实现(ajaxload的本地移植)
来源:互联网 发布:游戏开发和java工资 编辑:程序博客网 时间:2024/05/24 04:20
前言
前段时间看到一个国外的网站,在线生成ajax loading动画。觉得很实用,于是动起了移植到自己网站的念头(一直以来的习惯,看到好的工具总想着移植到本地好好研究)。根据以往移植的经验最终把 这个工具移植到自己网站上了,生成图片的核心还是用了原来网站的接口,所以这个功能的实现完全依赖于原网站,生成和下载图片的速度取决于网速,由于是国外 的网站,功能并不稳定。下面介绍下我移植的过程已经遇到的问题。
1.把原网站的代码本地化
这一步比较简单,不过有点麻烦,相关的图片,css,js,html文件保存在本地。
2.实现生成图片的功能
这里遇到了第一个问题,网站生成的图片保存在根据颜色值生成的途径上,而这些图片有防盗链设置,不 允许外来网站引用。尝试过写程序把网站上的所有图片按原目录下载到本地,但是图片太多,放弃了这个思路。
最后采取的办法是通过伪造来源访问原网站的图片,获取图片数据,并直接输出在页面。
下面是实现的代码
- $file=$_REQUEST['file'];
- $url = ’http://www.ajaxload.info/’.$file;
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt ($ch, CURLOPT_HEADER,0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($ch, CURLOPT_REFERER, “http://www.ajaxload.info”);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- $chData = curl_exec($ch);
- if (curl_errno($ch)) {
- echo ’Curl error: ’ . curl_error($ch);
- }
- curl_close($ch);
- header(“Content-type:image/gif”);
- echo $chData;
注:本人的网站基于BAE建设,与其他服务器的伪造来源有些区别
其他服务器需把
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
替换成
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
把上述代码保存为ajaxload.php文件用下面的代码
- var url = ’http://bloglaotou.duapp.com/ajaxloader.php?file=cache/’+c1+’/'+c2+’/'+c3+’/'+c4+’/'+c5+’/'+c6+’/'+$$(‘type’).value+’-'+trans+’.gif’;
注:http://bloglaotou.duapp.com替换成你自己的ajaxloader.php文件的地址。
替换原网站script.js文件中的
- var url = ’cache/’+c1+’/'+c2+’/'+c3+’/'+c4+’/'+c5+’/'+c6+’/'+$(‘type’).value+’-'+trans+’.gif’;
3.下载图片的实现
同样的原因,原网站的下载功能移植到本地后也不能用了,实现的方法与生成图片的方法类似
代码如下
- if(isset($_GET[url])){
- $file=$_GET[url];//获取参数
- header(“Content-Type: application/force-download”);
- header(“Content-Disposition: attachment; filename=ajax-loading.gif”);//$downname是下载后的文件名
- $file=$_REQUEST['url'];
- $url = ’http://www.ajaxload.info/’.$file;
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt ($ch, CURLOPT_HEADER,0);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($ch, CURLOPT_REFERER, “http://www.ajaxload.info”);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- $chData = curl_exec($ch);
- if (curl_errno($ch)) {
- echo ’Curl error: ’ . curl_error($ch);
- }
- curl_close($ch);
- echo $chData;
- exit;//结束程序
- }
把上面的代码保存为download.php并把原网站script.js文件中的
- if(!$(‘downloadit’)) domEl(‘a’,'Download it’,[['id','downloadit'],['href','download.php?img='+url]],$(‘previewinner’));
替换为
- if(!$(‘downloadit’)) domEl(‘a’,'下载’,[['id','downloadit'],['href','http://bloglaotou.duapp.com/download.php?url='+path]],$(‘previewinner’));
注:http://bloglaotou.duapp.com替换成你自己的ajaxloader.php文件的地址。
效果预览
查看示例
该功能已经集成到网站的小工具里,点这里查看
下载地址
- Ajaxload动态加载动画生成工具的实现(ajaxload的本地移植)
- 一个超好的动态生成ajaxload 图标的网站
- 在线生成加载动画图标的网站 ajaxload.info
- ajaxload.js--doCopy方法,网上常用的点击复制
- http://ajaxload.info/
- 加载动画的实现
- 开源 免费 java CMS - FreeCMS1.2-标签 ajaxLoad
- 一种加载动画的实现
- 加载动画效果的实现
- android ImageLoader加载本地图片的工具类(使用方法)
- ImageLoader加载本地图片的工具类
- ASP.net 使用(动态的有动画效果的)生成图表工具 Fusion Charts
- 使用 CSS3 实现超炫的 Loading(加载)动画效果以及cs3的在线制作工具
- 实现加载的点点的动画
- 模拟登陆加载动画的实现(一)
- 模拟登陆加载动画的实现(二)
- 模拟加载登陆动画的实现(三)
- gif文件的加载--实现动画效果
- 解密网站收录减少原因
- C++标准转换运算符dynamic_cast
- Ubuntu 12.04常用的快捷键
- 养生宝典,值得一读(健康养生)
- 黑羽祭历年题笔记-上午卷
- Ajaxload动态加载动画生成工具的实现(ajaxload的本地移植)
- 黑羽祭历年题笔记 - 下午卷
- 目标检测中背景建模方法 总结
- 《程序员》 -- 不适用户体验工程创造新机会
- Linux系统新手学习的11点建议
- 仪表控件-wince下能运行
- 浅谈JAVA中的四个核心概念
- Beyond Compare文件夹比较,忽略.svn文件夹
- JVM、JDK、JRE的区别