本站停止维护,已转移至laravel学习网;欢迎大家移步访问!

分享几个代码片段。tp5集成workerman 发送数据给嵌入式设备

1.嵌入式设备是c开发的 需求:https -》tcp->嵌入式设备  接受图片

   大家一定都知道C语言里面的图片是bin后缀的文件来解析就ok

  (1) .png/.jpg需要转为bin格式  可不是单纯的转哦。图片的颜色由RGB三原色组成,


转载请注明 :一沙网络原文出处:http://bbs.earnp.com/article/416
问题交流群 :562864481
1
作者没有开启打赏
发布时间 :2017-08-15 09:58:09
分享

2 个评论

  • 精彩
    回复
    2017-08-16 07:00

    这样就生成了一个bin格式的文件。发送给嵌入式设备后就是一个完整的图片咯

  • 精彩
    回复
    2017-08-15 09:58
    if(file_exists($data['effect_img_path'])){
                $info = explode('.',$data['effect_img_path']);
                $img_type = end($info);
    
                switch ($img_type) {
                    case 'jpg':
                        $i=imagecreatefromjpeg($data['effect_img_path']);//图片路径
                        break;
                    case 'png':
                        $i=imagecreatefrompng($data['effect_img_path']);//图片路径
                        break;
                    default:
                        # code...
                        break;
                }
                $bin2 = '';
                for ($y=0;$y<imagesy($i);$y++) {
                    for ($x=0;$x<imagesx($i);$x++) {
                        $rgb = imagecolorat($i,$x,$y);
                        $r = (($rgb>>16) & 0xFF)>>3;//8位>>3   5
                        $g = (($rgb>>8) & 0xFF)>>2;//8>>2 6
                        $b = ($rgb & 0xFF)>>3;//8>>3 5    总共是16位
                        //$sum=$b+$g*32+$r*2048;//r+g+b    16进制每一位代表32
                        $sum=$r;
                        $sum <<=6;
                        $sum |=$g;
                        $sum <<=5;
                        $sum |=$b;
                        $h=$sum>>8;
                        $l=$sum&0x00ff;
                        $bin2.=chr($h).chr($l);//转换为ascii码
                    }
                }
                $newFilePath =  dirname($data['effect_img_path']).'/'.md5(time().mt_rand(10, 99)).".bin"; //新文件
                $newFile = fopen($newFilePath,"w+"); //打开文件准备写入
    
                fwrite($newFile,$bin2); //写入二进制流到文件
    
                fclose($newFile); //关闭文件
    
                @unlink($data['img_bin']);//删除原先的文件


要回复文章请先登录注册