近期操作及问题记录一

近期操作及问题记录一

  • [PHP] 如何将base64数据流文件转换为图片文件?
    • 直接上代码
    • 注意事项
  • [MYSQL] 查询一小时内数据
    • 代码
    • DATE_SUB 解析
  • [CSS] 按钮动态缩放
    • 代码
    • 解析

[PHP] 如何将base64数据流文件转换为图片文件?

base64 数据流文件就是 利用base64编码把图片数据翻译成标准ASCII字符。

直接上代码

//1. 获取前端传递的 base64 数据流文件
/**
idImg1格式:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMD…J6c/Cvnd9TXK8x0...
**/
$idImg1 = $this->input->get_post('idImg1');

//2. 由于上传带有 url 的前缀,需要处理掉
$idImg1 = str_replace('url("data:image/jpeg;base64,', '', $idImg1);
$idImg1 = str_replace('")', '', $idImg1);

//3. 设置文件路径和文件前缀名称
$img1_path = dirname(__FILE__) . '/uploads/images/img_front.jpg';

//4. 创建将数据流文件写入我们创建的文件内容中
file_put_contents($img1_path, base64_decode($idImg1));

//5. 文件上传完成,继续后续操作

Data URL 即base64 数据流,在本地直接绘制图片,而不是从服务器加载,节省了HTTP连接,能起到加速网页的作用。

等同于

	<img src="http://XXX/images/img_front.jpg"/>

注意事项

  1. 该方法只适合于小图片哦,大图片就不用考虑了。
  2. 后台获取数据时,不能添加 trim() 过滤字符串,否则会改变字符串的内容。

最后,附上 Data URL 生成方式:


	$img_file = file_get_contents("http://XXX/images/img_front.jpg");
	echo base64_encode($img_file);

 
 

[MYSQL] 查询一小时内数据

代码

SELECT * FROM 表名 WHERE 字段名 > DATE_SUB(NOW(), INTERVAL 60 MINUTE); 

//或者
SELECT * FROM 表名 WHERE 字段名 > DATE_SUB(NOW(), INTERVAL 1 HOUR); 

DATE_SUB 解析

DATE_SUB 函数从日期 date 减去指定的时间间隔。

语法:

DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是时间间隔。

type 参数解析:

值(type) 解析
MICROSECOND 微秒
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER 季 ,三个月
YEAR
SECOND_MICROSECOND 秒和微秒,任意符号隔开
MINUTE_SECOND 分和秒,任意符号隔开
HOUR_MINUTE 时和分,任意符号隔开
DAY_HOUR 天和时,任意符号隔开
YEAR_MONTH 年和月,任意符号隔开
MINUTE_MICROSECOND 分和微秒,任意符号隔开,无法正常执行,等于 SECOND_MICROSECOND
HOUR_MICROSECOND 时和微秒,任意符号隔开,无法正常执行,等于 SECOND_MICROSECOND
DAY_MICROSECOND 天和微秒,任意符号隔开,无法正常执行,等于 SECOND_MICROSECOND
HOUR_SECOND 时和秒,任意符号隔开,无法正常执行,等于MINUTE_SECOND
DAY_SECOND 天和秒,任意符号隔开,无法正常执行,等于 MINUTE_SECOND
DAY_MINUTE 天和分,任意符号隔开,无法正常执行,等于HOUR_MINUTE

以上单个参数很简单能理解,看下面这个例子:

>SELECT DATE_SUB('2019-08-01 12:00:00',INTERVAL 1 SECOND) ;

>2019-08-01 11:59:59

主要看使用下划线连接的两个参数,先看个例子:

>SELECT DATE_SUB('2019-08-01 12:00:00',INTERVAL  '1 1'  YEAR_MONTH) ;

>2018-07-01 12:00:00 

没错,两个参数是叠加生效的,就像上面的例子,减去了一年一个月,其他的效果相同。

不过这里有个bug,如表格中备注的,官方给出的有六种都无法正常执行,具体效果表格中有描述。验证的MYSQL版本是5.7.11,是否需要高版本支持有待验证。

PS:指定的修改时间段也可以是负值,负负得正,就相当于是增加时间啦~

 
 

[CSS] 按钮动态缩放

代码

-webkit-animation: ghostUpdown 0.7s infinite alternate;

@keyframes ghostUpdown {
    from {
        transform: scale(1);
    }
    to {
        transform: scale(1.05);
    }
}

@-webkit-keyframes ghostUpdown {
    from {
        transform: scale(1);
    }
    to {
        transform: scale(1.05);
    }
}

解析

  1. animation 是用于为页面创建动画效果的,需要和 @keyframes 一起使用,才可以创建动画。

  2. 浏览器前缀 -webkit
    这个是由于浏览器兼容问题,chrome,safari,opera不支持 animation ,必须使用 webkit 前缀。
    IE 10和Firefox(>= 16)支持没有前缀的 animation,Firefox(< 16)使用的前缀为 -moz

    具体的解析见文章 css动画-animation各个属性详解

  3. transform :应用于元素的2D或3D转换。这个属性允许你将元素旋转,缩放,移动,倾斜等。 scale :定义 2D 缩放转换。具体属性说明见 CSS3 transform 属性。

你可能感兴趣的:(Html)