找出html中的图片、包括css中的图片,读出图片数据转换为base64数据
<?php
echo ">> 图片的地址,css里面的要打单引号\r\n";
echo ">> 相同的图片,使用css实现图片地址只出现一次,有助于减小文件体积\r\n";
echo ">> 因为凡是出现图片地址的地方,都会被转换成base64字符串\r\n";
$dirs = scandir('./');
if(count($dirs)<3) die('bad dir');// echo $_dir.' is empty!'.chr(10);
//else echo $_dir.' = '.count($dirs).chr(10);
foreach($dirs as $dir){
if($dir=='.'||$dir=='..') continue;
$dir= './'.$dir;
$ext=substr($dir, -4);
if($ext == 'html'){
g($dir);
}
}
function g($f){
$data = file_get_contents($f);
preg_match_all("/([\"'])([^\"'\n]+\.(gif|jpg|png))\\1/", $data, $out);
for($i=0;$i<count($out[1]);$i++){
echo ' **> found img: '.$out[0][$i]."\r\n";
$str = img2str($out[2][$i]);
$l1 = substr($out[0][$i],0,1);
if($l1!='\''&&$l1!='"')
$l1 = "'";
$data = str_replace($out[0][$i],$l1.$str.$l1,$data);
} $data = str_replace("\\","\\\\", $data);
$data = str_replace("\"","\\\"", $data);
$data = str_replace("\r\n","\\n", $data); $f = str_replace('html','txt',$f);
file_put_contents($f,$data);
echo '*> '.$f.' OK
';
}
$img_cache=array();
function img2str($file){
global $img_cache;
if(isset($img_cache[$file])) return $img_cache[$file];
$data = file_get_contents($file);
$file = 'tmp_'.basename($file);
file_put_contents($file, $data);
$type=getimagesize($file);//取得图片的大小,类型等
$fp=fopen($file,"r")or die("Can't open file");
$file_content=base64_encode(fread($fp,filesize($file)));//base64编码
switch($type[2]){//判读图片类型
case 1:$img_type="gif";break;
case 2:$img_type="jpg";break;
case 3:$img_type="png";break;
}
$img='data:image/'.$img_type.';base64,'.$file_content;//合成图片的base64编码
fclose($fp);
$img_cache[$file] = $img;
return $img;
}
找出html中的图片、包括css中的图片,读出图片数据转换为base64数据的更多相关文章
- css中的单位和css中的颜色表示方法
css中颜色的表示方式: 图片来源http://www.w3school.com.cn
- ArcMAP中Excel数据转换为shp数据
参考百度知道:http://jingyan.baidu.com/article/f7ff0bfc1cf22c2e26bb138d.html 将数据库中带有X.Y坐标的二维表转换为空间点数据:从数据中将 ...
- 找出现有Vector或ArrayList或数组中重复的元素&给现有Vector或ArrayList或数组去重
//直接上代码: public static void main(String[] args) { List<Integer> list = new Vector<Integer&g ...
- 前端优化,包括css,jss,img,cookie
前端优化,来自某懒观看麦子学院视频的笔记. 尽可能减少HTTP的请求数 使用CDN 添加Expirs头,或者Cache-control Gzip组件压缩文件内容 将CSS放在页面上方 将脚本放到页面下 ...
- css中的盒子模型
css中的盒子模型 css中的盒子模型,有两种,一种是“标准 W3C 盒子模型”,另外一种是IE盒子模型. 1.w3c盒子模型 从图中可以看出:w3c盒子模型的范围包括了:margin,borde ...
- 记录一下通过分析Tomcat内部jar包找出request.getReader()所用的字符编码在哪里设置和起效的完整分析流程
前言: 之前写Java服务端处理POST请求时遇到了请求体转换成字符流所用编码来源的疑惑,在doPost方法里通过request.getReader()获取的BufferedReader对象内部的 R ...
- 深入了解CSS中盒子模型
CSS中盒子模型介绍 什么是盒子? 盒子是用来存储物品,我们可以将盒子理解为酒盒,酒盒有什么组成的呢? 有酒可以喝.有填充物保护酒防止酒被摔坏.纸盒子. 我们怎么理解CSS中的盒子呢,CSS中盒子有什 ...
- 本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用<image/>标签
在微信小程序开发中,当在CSS中使用背景图片格式为png时就会出现: 只要把png格式改掉就可以或者在<image/>标签里面写,我实测用JPG格式和把图片转成base64是没问题的.
- Qt 中十六进制字节流转换为Base64编码
在Qt中,在网络通信时,有时需要将16进制字节流转换为Base64编码传输,在Qt的QByteArray类中,提供了与Base64转换的接口: //16进制字节流转为Base64 QByteArray ...
随机推荐
- Web服务器异常问题记录
1.使用命令,出现"-bash: 命令: Input/output error" 重启服务器后正常,网上查了下是说硬盘写入读取异常,经过和服务器厂商沟通后,确认是硬件问题导致(硬盘 ...
- 【linux命令】:查看系统运行状态,命令top 【转载】
原文:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 简介 top命令是Linux下常用的性能分析工具,能够实时显示系 ...
- Java Date与SimpleDateFormat
最近在弄一些涉及到时间处理的项目.本来自己写了一个时间转换函数,虽然能用但是过于麻烦而且不够规范,于是学习了下java自带的时间处理的类. public class Timechg { public ...
- Linux 下没有 my.cnf 文件的解决方式,完全是我自己整的,好多教程都是瞎扯的 (zhuan)
http://blog.csdn.net/jspping/article/details/40400691?utm_source=tuicool&utm_medium=referral *** ...
- Hbase之Exception
[hadoop@master hbase-1.2.2]$ ./bin/hbase shell2016-08-25 13:53:56,898 WARN [main] util.NativeCodeLoa ...
- JDK环境变量安装正确还报错的情况解决方案
环境变量 JAVA_HOME , PATH 都已配置完毕,并且 java -version也显示正确如下 E:\apache-tomcat-8.0.30-windows-x64\apache-tomc ...
- CLGeocoder Error Domain=kCLErrorDomain Code=2
使用CLGeocoder解码地址时,遇到错误 Error Domain=kCLErrorDomain Code=2 代码: #pragma mark 跟踪定位代理方法,每次位置发生变化即会执行(只要定 ...
- c time_t 和 oc NSDate 的转换
c time_t 和 oc NSDate 的转换 1:time_t 转 oc NSDate time_t some_time_t=NULL; NSDate *someDate = [NSDate da ...
- crontab在一秒内刷新多次导致部分脚本不生效的问题分析
版权声明:本文由康中良原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/182 来源:腾云阁 https://www.qclo ...
- Linux源码安装mysql步骤
创建文件夹: mkdir /usr/local/webserver 安装必要依赖包 yum -y install gcc gcc-c++ make ncurses-devel安装cmake ...