利用PHP将图片转换成base64编码的实现方法

先来说一下为什么我们要对图片base64编码

base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一。base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输。由于这些二进制字符在传输协议中属于控制字符,不能直接传送,所以需要转换一下。虽然图片可能直接传输,但是我们也可以将它变成字符串直接放在源码里,而不需要浏览器在读取到源码后再从服务器上下载。

 

如何使用PHP对图片进行base64解码输出

复制代码
<?php
$img = 'test.png';
$base64_img = base64EncodeImage($img);
 
echo '<img src="'.$base64_img.'"/>';
 
function base64EncodeImage ($image_file) {
    $base64_image = '';
    $image_info = getimagesize($image_file);
    $image_data = fread(fopen($image_file, 'r'), filesize($image_file));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    return $base64_image;
}
?>
复制代码

——

PHP对Base64的支持非常好,有内置的base64_encode与base64_decode负责图片的Base64编码与解码。

编码上,只要将图片流读取到,而后使用base64_encode进行进行编码即可得到。

复制代码
/**
 * 获取图片的Base64编码(不支持url)
 * @date 2017-02-20 19:41:22
 *
 * @param $img_file 传入本地图片地址
 *
 * @return string
 */
function imgToBase64($img_file) {

    $img_base64 = '';
    if (file_exists($img_file)) {
        $app_img_file = $img_file; // 图片路径
        $img_info = getimagesize($app_img_file); // 取得图片的大小,类型等

        //echo '<pre>' . print_r($img_info, true) . '</pre><br>';
        $fp = fopen($app_img_file, "r"); // 图片是否可读权限

        if ($fp) {
            $filesize = filesize($app_img_file);
            $content = fread($fp, $filesize);
            $file_content = chunk_split(base64_encode($content)); // base64编码
            switch ($img_info[2]) {           //判读图片类型
                case 1: $img_type = "gif";
                    break;
                case 2: $img_type = "jpg";
                    break;
                case 3: $img_type = "png";
                    break;
            }

            $img_base64 = 'data:image/' . $img_type . ';base64,' . $file_content;//合成图片的base64编码

        }
        fclose($fp);
    }

    return $img_base64; //返回图片的base64
}


//调用使用的方法
$img_dir = dirname(__FILE__) . '/uploads/img/11213223.jpg';
$img_base64 = imgToBase64($img_dir);
echo '<img src="' . $img_base64 . '">';       //图片形式展示
echo '<hr>';
echo $img_base64;           //输出Base64编码
复制代码

而解码就略微麻烦一点,究其原因在于把图片编码成base64字符串后,编码内会加入这些字符 data:image/png;base64,本来是用于base64进行识别的。但是如果直接放到php里用base64_decode函数解码会导致最终保存的图片文件格式损坏,而解决方法就是先去掉这一串字符:

$base64_string= explode(',', $base64_string); //截取data:image/png;base64, 这个逗号后的字符
$data= base64_decode($base64_string[1]);  //对截取后的字符使用base64_decode进行解码
file_put_contents($url, $data); //写入文件并保存

而网络远程图片地址转base64,可以用

复制代码
//网络远程图片地址转base64

$img_u = 'https://common.cnblogs.com/images/wechat.png'; 

$imageInfo = getimagesize($img_u);

$b64 = base64_encode(file_get_contents($img_u));  

echo '<br>';

var_dump($imageInfo);

echo '<br><pre>';

var_dump($b64);
复制代码

转:

https://www.cnblogs.com/lixihuan/p/7843980.html

https://www.cnblogs.com/cloudshadow/p/php_img_to_base64.html

https://www.cnblogs.com/byuc/p/7600451.html

继续阅读利用PHP将图片转换成base64编码的实现方法

新浪实时股票数据接口1

股票数据的获取目前有如下两种方法可以获取:
1. http/javascript接口取数据
2. web-service接口

1.http/javascript接口取数据
1.1Sina股票数据接口

以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:
http://hq.sinajs.cn/list=sh601006
这个url会返回一串文本,例如:
var hq_str_sh601006=”大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92,
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32″;
这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照程序员的思路,顺序号从0开始。
0:”大秦铁路”,股票名字;
1:”27.55″,今日开盘价;
2:”27.25″,昨日收盘价;
3:”26.91″,当前价格;
4:”27.55″,今日最高价;
5:”26.20″,今日最低价;
6:”26.91″,竞买价,即“买一”报价;
7:”26.92″,竞卖价,即“卖一”报价;
8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;
9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;
10:”4695″,“买一”申请4695股,即47手;
11:”26.91″,“买一”报价;
12:”57590″,“买二”
13:”26.90″,“买二”
14:”14700″,“买三”
15:”26.89″,“买三”
16:”14300″,“买四”
17:”26.88″,“买四”
18:”15100″,“买五”
19:”26.87″,“买五”
20:”3100″,“卖一”申报3100股,即31手;
21:”26.92″,“卖一”报价
(22, 23), (24, 25), (26,27), (28, 29)分别为“卖二”至“卖四的情况”
30:”2008-01-11″,日期;
31:”15:05:32″,时间;
一个简单的JavaScript应用例子:
继续阅读新浪实时股票数据接口1

教学设计模板心得范文一

通过观摩我觉得课堂教学中的各环节应有一定的递进性和层次性,让学生尽可能的在生动形象的情境中进行学习,做到学以致用。为实施好课堂教学,我从日常教学中经常接触的教学设计出发,探讨语文教材的教学环节设计。

教学设计是运用系统论的方法设计教学问题的过程,它包括分析教学问题、设计解决方法及方案、评价和修改教学设计直至获得解决问题的最优方法等几个方面。

教学设计要求从教学系统的整体功能出发,综合考虑教师、学生、教材、媒体、评价等诸多方面在教学过程中的具体作用,强调运用“整体—局部—整体”的思维方式,立足整体、统筹全局、使各教学要素相辅相成,提高和确保教学系统整体的最优效应。

我们通常所说的教学设计是指微观教学设计,包括单元教学设计、课时教学设计和微观教学设计。其中课时教学设计是以某堂课的教学为设计对象,而此处的微观教学设计则指以某个教学环节为设计对象。

教学设计的操作步骤

教学设计一般包括以下步骤:

(1)、学习需求分析:从教材的角度出发,课程教学目标是什么?教学需要具备哪些条件?

(2)、教学内容分析:课时教学目标是什么?进行学习任务分析,要完成学习任务需要的必备、辅助的知识技能,要教哪些内容。

(3)教学对象分析:了解学生学习心理、认知水平、基础知识与技能的掌握程度和学习起点水平与学习特点。

(4)、确定教学目标:根据课时的教学要求,结合学生的基础知识和学习能力,制定明确、详细的教学目标。

(5)、教学策略设计:主要解决“如何教、如何学”,要同时考虑目标、内容学生、时间、教学条件等要素,从争取整体教学效益的角度正确选择教学策略。如程度教学策略、发现式教学策略、认知教学策略、掌握学习策略、和谐教学策略等。

(6)、教学媒体设计:根据学习目标、教学策略目标,选择合适的教学媒体,适时使用恰当的教学媒体,在运用媒体上,主张恰如其分,和谐、统一,不要为使用媒体而用媒体,避免与整体教学过程的脱节。

(7)、教学过程反馈、调控设计:教学过程是一个师生互动的动态活动过程,教师要根据教学目标、重点、难点,预计学生将作出的反应,设计好另外的教学方法、问题和练习,一旦出现非常情况,教师要及时调整自己的教学进度、教学要求、教学策略和方法。

(8)教学评价设计:主要包括形成性评价和总结性评价,形成性评价指在课堂教学过程中提问检测不同层次学生对教学内容的理解程度的评价,总结性评价是指在知识教学完成后的总体评价。

在总复习中,要时刻注意“信息反馈”。正如控制论创始人维纳说:“有效行为必须由某种反馈过程来提供信息,看它是否达到预定目标,最简单的反馈是检验任务的成功或失败。”通过反馈信息来了解已设计的教学内容与预期目的是否符合,学生对知识理解和掌握。所以我在每个阶段复习教学中,除了注意来自学生方面各式各样的反馈信息外,还特别重视每次测验和考试的信息反馈。坚持做到按时、按量、按评分标准,科学分析试卷,评价试卷,并注意各层次的学生学习状况和掌握知识的程度。

要求学生对测验情况进行知识点、面、掌握情况及学习上的主观因素和客观因素进行分析,寻找存在不足的原因。教师做好统计工作,找出教学上的弱点进一步改进教学方法,及时调整复习计划,对不足之处立即查漏补缺。这样才能使实际掌握情况与预订的教学目标更吻合,尤其要对后进生加强辅导、关心、鼓励,及时表扬他们,哪怕是一点滴的进步,充分肯定他们。这样才能充分调动他们学习的积极性和主动性,做到大面积地有质有量地提高学习成绩。

chrome 浏览器 保存 debug 日志到 本地文件

在 Chrome 里使用 WebRTC ,因为调试的缘故,要打开日志,记录下过程。

如何给 Chrome 添加命令行参数

两种方式,一种是修改快捷方式,类似下面这样:

你可以把原来的快捷方式复制一份来修改。

另一种方式是命令行启动 Chrome ,类似下面:

 

layui ajax 使用注意事项

//监听提交
form.on(‘submit(demo1)’, function(data){
// layer.alert(JSON.stringify(data.field), {
// title: ‘最终的提交信息’
// })
$ = layui.jquery;
//
$.ajax({
url:’dealdata.php’,
type:’post’,
data:data.field,
dataType:”JSON”,
success:function(data){
if(data.Res){
layer.alert(“提交成功!”)
}else{
layer.alert(“提交失败!”)
}
},

});
console.log(data.field);
alert(“d”);
return false;
});

 

 

 

 

  1. $ = layui.jquery;//加上这一句,否则报异常 $undefinded
  2. return false;//否则页面会刷新,阻止ajax回调函数的调用

 李克强:靠每个人的奋斗,大家都好了,国家就更好!地摊经济、小店经济是就业岗位的重要来源

李克强6月1日上午考察山东烟台一处老旧小区。在小区对面,许多商户在店门前摆起了摊位。总理来到一家名为“苏家麻辣拌”的熟食摊前,问摊主疫情期间受了多大影响、是否享受到房租减免,员工工资能否照发等。这位个体老板说,疫情期间生意几乎没了,但房租减免了4个月,总算渡过了难关。现在经营基本恢复了正常,加上又允许在店外摆摊,很受市民的欢迎,人气慢慢回来了。李克强关切地询问围拢过来的商户和摊主,前几个月收入降没降。大家普遍反映差不多降了三四成,好在国家及时出了扶持政策,总算挺过来了。一位摊主对总理说,我们现在活过来了,将来我们要报效国家、服务社会。李克强说,国家是人民组成的,人民好了,国家才能好。靠每个人的奋斗,大家都好了,国家就更好!地摊经济、小店经济是就业岗位的重要来源,是人间的烟火,和“高大上”一样,是中国的生机。市场、企业、个体工商户活起来,生存下去,再发展起来,国家才能更好!我们会给你们支持的。

如何把外地的社保转回本地?

从外地回到本地,需要把一些相关证件也转回本地,下面就来教教大家外地社保怎么转回本地社保。
方法/步骤
1/5 分步阅读
首先,带上身份证到自己之前所工作过的城市。

2/5
找到“xx市社会保险基金管理局”服务窗2113口打印一份“基本养老保险参保缴费凭证”。

3/5
回到当地的社会保险基金管理局,会拿到基本医疗保险关系5261转移接续表和基本养老保险关系省内外转申请表。

4/5
在基本医疗保险关系转移接续表上填上基本信息即可,4102外一份的公章是指现在给自己买社保的公司的名称。

5/5
最后再复1653印一份身份证即可,加上前面一共四份表。

阿里1688发布“地摊经济”帮扶计划 为超3000万“摊主”提供进货和经营支持

日前,“地摊经济”再次走进公众视野。中央文明办主动适应常态化疫情防控形势,在今年全国文明城市测评指标中,已明确要求不将占道经营、马路市场、流动商贩列为文明城市测评考核内容。 继续阅读阿里1688发布“地摊经济”帮扶计划 为超3000万“摊主”提供进货和经营支持

罗永浩 直播电商带货 选品流程和标准

罗永浩:流程大概是这样:商务对接,产品经理跟进试用和评价,用户评价/口碑和销量的调研,供应链及其他背景调查,双方市场团队对接,商务和法务协同跟进,确定合同协议,上线直播。

食品类的主要标准(这里排序不分先后):1.大品牌/国民品牌(这在人手不足的前期,主要是为了安全),或在垂直品类里取得了足够大的成就,但还没扩张成全民皆知(对这部分厂商,我们的品牌宣传价值非常高);2.好吃/好喝;3.高性价比。

科技类的主要标准(这里排序不分先后):1.供应链我们可以基本上了解到的,卖出了足够大的销量的,有足够好的口碑,并且没有出现成规模的质量问题的品牌;2.好用/实用/解决用户需求和痛点;3.高性价比。

修改HOST使虚拟机访问的网站指向宿主机

在前端开发中,通过host和NGINX来控制项目网址访问映射到本地代码已经司空见惯,今天遇到情况:

项目中的网址需要用虚拟机访问,

前端开发的本地代码和开发环境在宿主机中,

这种情况下不需要在虚拟机中重新安装代码和开发环境,只要修改虚拟机的host就行了。

一般情况下例如 host 中,

127.0.0.1  www.zhengoma.cn

意思是将www.zhengoma.cn访问指向127.0.0.1 ,而127.0.0.1 指向本地,所以成了www.zhengoma.cn指向本地,然后在NGINX中,把请求再指向远端接口网址,这样就实现了代码用本地,数据用接口。

本次中,NAT连接方式,宿主机和虚拟机都有自己的host,有自己的内网IP,(假如宿主机内网IP为192.169.1.1),那么:

宿主机按照正常配置,

虚拟机的host 加入一条  192.169.1.1 www.zhengoma.cn

即可将虚拟机访问www.zhengoma.cn指向宿主机的本地代码。

如果对你有帮助请点赞!