PHP GD实现缩略图步骤

1 先用变量存贮 文字的高度和间距 ps:可读性好,这样也能做高度自适应
2 然后创建画布

  $image = imagecreatetruecolor(414, 666);       当然也可以提前创建        $image = imagecreatefromjpeg(__DIR__ . '/../../../Public/xifangyuandan/images/2/qian1.jpg');图片

3 设置颜色 都是下面函数 不管文字颜色还是其他的颜色

    $white = imagecolorallocate($image, 255, 255, 255);

ps:默认的画布是黑色的 如果要填充整个画布 请用

 $zhibg = imagecolorallocate($image,255,0,0);
   imagefill($image,0,0,$zhibg);

3 添加某区域背景色
//蓝色背景

      $green1 = imagecolorallocate($image, 238, 247, 255);
        imagefilledrectangle($image, 30, $describ_top, 380, $bluecontheight, $green1);//填充的矩形

4要把图片放入画布 用以下方法此处不支持png图片

//当然这里获取大小可以用imagesx获取图片的宽度 imagesy获取图片的高度 //不支持半透明png  要设置透明度 就是最后个参数100设置
$image1 = imagecreatefromjpeg('resumepic/resumebj.jpg');
   imagecopymerge($image, $image1, 0, 0, 0, 0, 411, 225, 100);

5 把文字写入画布 就用下面方法 ttf字体文件路径要正确
ps:文字高度是按照左下角计算的

  imagettftext($image, 12, 0, 140, $erweimawenziy, $blue, 'resumepic/msyh.ttf', '文字文字');

6 最后生成图片放入文件夹

imagepng($image, "getpic/pic.png");
//销毁
 imagedestroy($image);

PHP GD多行文字实现方案

1 首先判断有几行 然后截取文字 截取文字用以下代码 (采用2个字母==1个中文)来计算的 2排文字这样两端可以基本对齐


//这个字符串变成数组
  function str_split_unicode($str, $l = 0)
    {
        if ($l > 0) {
            $ret = array();
            $len = mb_strlen($str, "UTF-8");
            for ($i = 0; $i < $len; $i += $l) {
                $ret[] = mb_substr($str, $i, $l, "UTF-8");
            }
            return $ret;
        }
        return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
    }


   //删掉start前面的字符串
    function pre_jiequhunhe($str, $start)
    {

        $slist = $this->str_split_unicode($str);
  
        if (!empty($start)) {
            $c = 0;
            foreach ($slist as $k => $v) {
                if (preg_match("/[\x7f-\xff]/", $v)) {
                    //如果中文占2个字符
                    $c += 2;
                } else {
                    //不是中文占1个字符
                    $c += 1;
                }

                if ($c > $start) {
                    break;
                }
                unset($slist[$k]);
            }
        }

        return $slist;
    }

//截取start后的字符串

    function jiequhunhe($str, $start, $len)
    {
        $slist = $this->pre_jiequhunhe($str, $start);
        $zifuchuan = '';
        $c = 0;
        foreach ($slist as $v) {
            if (preg_match("/[\x7f-\xff]/", $v)) {
                //如果中文占2个字符
                $c += 2;
            } else {
                //不是中文占1个字符
                $c += 1;
            }

            if ($c > $len) {
                break;
            }
            $zifuchuan .= $v;
        }
        return $zifuchuan;
    }

2 每截取一行存入数组

3 然后循环遍历 每次增加一行重新设置文字高度。。。 这样保证不会乱码

pinchzoom插件模拟微信客户端点击图片放大(支持触摸滑动放到缩小)

pinchzoom插件模拟微信客户端点击图片放大(支持触摸滑动放到缩小) 代码如下

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1, user-scalable=no">
    <title>模拟微信客户端点击图片  (支持触摸滑动放大缩小)</title>
    <script type="text/javascript" src="/js/jquery-1.11.3.min.js"></script>
    <style>
     .pinch-zoom,.pinch-zoom img{
    width: 100%;
    -webkit-user-drag: none;
    -moz-user-drag: none;
    -ms-user-drag: none;
    user-drag: none;
}
.pinch-zoom-container{
    height:1400px;
    display: none;
}
    </style>
</head>

<body>

<div class="kandatucontainer pinch-zoom">
    <img class="fangdac"  src="{$yuming}/images/fangdac.png" />
</div>

<script src="/js/pinchzoom.js"></script>
<script type="text/javascript">
    $(function () {
        $('.pinch-zoom').each(function () {
            new RTP.PinchZoom($(this), {});
        });



     //pinch-zoom-containe是最外面的容器 是自动生成的
    $('.fangdacbtn, .p18_wz1').on('click',function () {
        $('.fangdac').parents('.pinch-zoom-container').fadeIn();
      $("body").scrollTop(0)
    })

    $('.fangdac').parents('.pinch-zoom-container').on('click',function () {
        $(this).fadeOut();
    })
    })
</script>

</body>
</html>

这样就可以直接缩放图片了

PHP实现极光推送的方法

直接下载PHPdemo 直接运行代码就可以推送啦 当然前提要客户端 要写好极光推送sdk

核心代码

ini_set("display_errors", "On");
error_reporting(E_ALL | E_STRICT);
require_once("../src/JPush/JPush.php");

$br = '<br/>';
$app_key = 'a1fe2663521eabaffdab2768';
$master_secret = '34143ac8f0bf5cd029bd39be';

$message=$_POST['message'];
//别名就是手机号
$tel=$_POST['tel'];
$type=$_POST['type'];
// 初始化
$client = new JPush($app_key, $master_secret);

// 别名推送
if($type!=0){
    $result = $client->push()
        ->addAlias($tel)
        ->setPlatform('all')
        ->setNotificationAlert($message)
        ->send();
}else{
    $result = $client->push()
        ->setPlatform('all')
        ->addAllAudience()
        ->setNotificationAlert($message)
        ->send();
}



CSS3 flex垂直居中 水平居中终极解决方案(史上最简单的写法)

CSS3 flex垂直居中 水平居中终极解决方案(史上最简单的写法)
//align-items: center; 垂直居中
// justify-content:center; 水平居中

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<script class="jquery library" src="/js/sandbox/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>
	<title>RunJS 演示代码</title>

		<style>
			.ccs1{
				width:30%; height:100px;    display:flex;/* android 4.4 */  justify-content:center; align-items: center; background:#F00; 
			}
		</style>
  </head>
<body>
	<div class="ccs1">
		wefwefewfewf
	</div>
  </body>
</html>

ps:此时如果用了 text-align: center; 在 display: flex; 下就没有水平居中效果了

注意此方法 安卓低版本不支持 所以不建议用

当然还有其他可行方案
右对齐可以采用float:right
水平居中可以用margin:0 auto;考虑到不能用float:left可以在外面再加一层容器即可
垂直居中可以参考这个文章 http://newmiracle.cn/?p=2079

vsftpd 添加用户教程

1 这里指定 FTP用户登录以后的文件夹 useradd -d /alidata/www/wwwroot -s /sbin/nologin pwftp 设置完 ftp登录应该能看到效果 默认访问路径就是/alidata/www/wwwroot
2 passwd pwftp 给pwftp设置密码
如果不能连接 运行 service vsftpd restart
-bash: vsftp: command not found
那就yum install vsftpd安装下吧

ps 不让用户能够回退 以下设置
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

html5 video播放完切换画面方案

video标签播放视频 移动端不能自动播放 必须点击后才能播放

html5 video播放完切换画面方案
方法一

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/js/jquery.min.1.8.3.js"></script>
</head>
<style>
    html,body{
        width:100%; height:100%;
    }

</style>
<body>

//播放只能全屏
<video id="video1" style="width:100%; height:100%;object-fit: fill;  display:none" src="http://mobile-show.cn/video/fromYou1.mp4"  webkit-playsinline=""></video>
<script>
      $(function () {
          $('body').bind('click',function () {
              $('#video1').css('display','block');
              $('#video1')[0].play();
          })
            //播放完跳转页面 才能彻底的切换画面
          $('#video1').bind('error ended', function(){
              window.location.href='http://www.baidu.com';
          })
      })
</script>










</body>
</html>

方法二 最靠谱的方法

<video id="video1" style="overflow: hidden; width: 100%; width: 100%; display: none; " src="/solosea1/mp4/cai.mp4"
       webkit-playsinline="true"  class="video" height="100%" playsinline="true"
       x5-video-player-type="h5" x5-video-player-fullscreen="true"></video>

这个播放完不会弹出广告 播放完直接display:none 当然dom元素也能覆盖 就是不能加背景 直接元素盖住他

切记不要加autoplay 加了下面事件会默认为播放处理的 其实他是不会自动播放的。。

demo如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/js/jquery.min.1.8.3.js"></script>
</head>
<style>
    html, body {
        width: 100%;
        height: 100%;
    }

</style>
<body style="background: #FFF">


<video id="video1" style="overflow: hidden; width: 100%; width: 100%; display: none; " src="/solosea1/mp4/cai.mp4"
       webkit-playsinline="true"  class="video" height="100%" playsinline="true"
       x5-video-player-type="h5" x5-video-player-fullscreen="true"></video>


<script>
    $(function () {

        getvideoprogress();

        $('body').bind('click', function () {
            $('#video1').css('display', 'block');
            $('#video1')[0].play();
        })

        var vid = document.getElementById("video1");
        vid.onended = function () {
            $('#video1').css('display', 'none');
            alert("视频已播放完成");
        };

    })

    function getvideoprogress() {
        setTimeout(function () {
            var vid = document.getElementById("video1");
            var currentTime=vid.currentTime.toFixed(1);
            if(currentTime>=1.2){
                //触发
                return false;
            }
            console.log(currentTime);
            getvideoprogress();
        }, 50);
    }
</script>


</body>
</html>

第三种 这种适用于不是全屏播放有进度条的

  <video  src="{$yuming}/mp4/shipin.mp4"  controls="" x5-playsinline="" playsinline="" webkit-playsinline="" poster="" preload="auto"></video>

他这个可以直接display:none

linux crontab简单教程

一、安装

[root@CentOS ~]# yum -y install vixie-cron
[root@CentOS ~]# yum -y install crontabs

一、安装

[root@CentOS ~]# yum -y install vixie-cron
[root@CentOS ~]# yum -y install crontabs

说明:
vixie-cron 软件包是 cron 的主程序;
crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

二、配置

cron 是 linux 的内置服务,但它不自动起来,要先启动服务
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态

三 使用

crontab -e 进行编辑

比如
* * * * * php /home/testdingshiqi.php

//testdingshiqi.php文件内容
file_put_contents('/home/www/wxgame/test.log', date("Y-m-d H:i:s"). " " . var_export('wefwefss',TRUE).PHP_EOL, FILE_APPEND | LOCK_EX);

保存时 终端就会提示 crontab: installing new crontab 代表已经更新最新配置了

ps:tail /var/log/cron查看有没有运行

如果不用直接前面加个# 就是注释掉 然后保存就行了