<?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数据的更多相关文章

  1. css中的单位和css中的颜色表示方法

    css中颜色的表示方式: 图片来源http://www.w3school.com.cn

  2. ArcMAP中Excel数据转换为shp数据

    参考百度知道:http://jingyan.baidu.com/article/f7ff0bfc1cf22c2e26bb138d.html 将数据库中带有X.Y坐标的二维表转换为空间点数据:从数据中将 ...

  3. 找出现有Vector或ArrayList或数组中重复的元素&给现有Vector或ArrayList或数组去重

    //直接上代码: public static void main(String[] args) { List<Integer> list = new Vector<Integer&g ...

  4. 前端优化,包括css,jss,img,cookie

    前端优化,来自某懒观看麦子学院视频的笔记. 尽可能减少HTTP的请求数 使用CDN 添加Expirs头,或者Cache-control Gzip组件压缩文件内容 将CSS放在页面上方 将脚本放到页面下 ...

  5. css中的盒子模型

    css中的盒子模型 css中的盒子模型,有两种,一种是“标准 W3C 盒子模型”,另外一种是IE盒子模型.   1.w3c盒子模型 从图中可以看出:w3c盒子模型的范围包括了:margin,borde ...

  6. 记录一下通过分析Tomcat内部jar包找出request.getReader()所用的字符编码在哪里设置和起效的完整分析流程

    前言: 之前写Java服务端处理POST请求时遇到了请求体转换成字符流所用编码来源的疑惑,在doPost方法里通过request.getReader()获取的BufferedReader对象内部的 R ...

  7. 深入了解CSS中盒子模型

    CSS中盒子模型介绍 什么是盒子? 盒子是用来存储物品,我们可以将盒子理解为酒盒,酒盒有什么组成的呢? 有酒可以喝.有填充物保护酒防止酒被摔坏.纸盒子. 我们怎么理解CSS中的盒子呢,CSS中盒子有什 ...

  8. 本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用<image/>标签

    在微信小程序开发中,当在CSS中使用背景图片格式为png时就会出现: 只要把png格式改掉就可以或者在<image/>标签里面写,我实测用JPG格式和把图片转成base64是没问题的.

  9. Qt 中十六进制字节流转换为Base64编码

    在Qt中,在网络通信时,有时需要将16进制字节流转换为Base64编码传输,在Qt的QByteArray类中,提供了与Base64转换的接口: //16进制字节流转为Base64 QByteArray ...

随机推荐

  1. Monkey学习(3)如何在Android模拟器中安装apk

    1.运行SDK Manager,选择模拟器,并运行模拟器,我这里用的是已经配置好的模拟器“RedMI” 2.已启动好的模拟器“RedMI” 3.记住需要安装apk文件的位置,我这里放在了F盘的根目录下 ...

  2. Make 教程

    Make 命令教程 原文作者: 阮一峰 原文链接:http://www.ruanyifeng.com/blog/2015/02/make.html (在原文基础上稍作修改) 代码变成可执行文件,叫做编 ...

  3. 转:设计模式-----桥接模式(Bridge Pattern)

    转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理 ...

  4. Velocity教程 (zhuan)

    http://blog.csdn.net/qq_25237663/article/details/52262532 ****************************************** ...

  5. [转载]WEB缓存技术概述

    [原文地址]http://www.hbjjrb.com/Jishu/ASP/201110/319372.html 引言 WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户 ...

  6. Hbase之批量删除数据

    import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...

  7. Windows Server 2012 (2008) 忘记密码重置方法 Windows 10 忘记密码

    要使用windows server 2012安装DVD,选择光盘引导进入 进入修复系统---命令提示符---切换目录至系统目录--执行move命令    先备份  utilman.exe(他就是这个程 ...

  8. DOS命令行中的双引号

    在DOS命令窗口下,运行C:\Program Files\WinRAR\WinRAR.exe,提示如下错误: 因为C:\Program Files\WinRAR\WinRAR.exe中含有空格,它被分 ...

  9. golang作为server向android提供数据服务

    中间交换的数据是json ,后台数据库服务器是sqlserver2012 android通过post或者get方式访问 如get方式http://192.168.255.13:7080/tblFile ...

  10. 解决点击a标签返回页面顶部的问题

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...