遗忘悠剑

🍀 记录精彩的程序人生 开始使用

PHP 生成视频快进快退使用的预览缩略图 (demo)

例如爱奇艺、腾讯、B 站等等快进快退都有一个快速预览缩略图,那么是怎么做的呢?
首先就是需要服务端生成这张图,例如可以根据视频长度生成几张,下面介绍一下生成的方案

<?php
/**
 * 生成视频快进快退用的缩略图
 * @param array $imgs 待合成的图片数组
 * @return array ['success','拼接图地址']
 */
function getVsample($imgs){
    $t_y = $img_num = 0;//初始化背景图高度和待拼图数量
    foreach ($imgs as $k => $v) {
        $src_im_arr[$k] = Imagecreatefromjpeg($v);
        $size_arr[$k] = getimagesize($v);
        $t_x_arr[] = $size_arr[$k][0];//得到所有待拼图的宽度
        $t_y += $size_arr[$k][1];//得到背景图的高度
        $img_num ++;//得到待拼图总数量
    }
    $t_x = max($t_x_arr);//得到背景图的宽度
    unset($t_x_arr);//用完了释放掉

    $dst_im = @imagecreatetruecolor($t_x, $t_y);//创建背景图画布

    $dst_x = $dst_y = 0;//初始化拼接位置的坐标点
    for ($i = 0; $i < $img_num; $i++) {//开始循环拼图😄
        imagecopy(
            $dst_im,//背景空白图
            $src_im_arr[$i],//待拼接图
            $dst_x,//往背景图拼接的x坐标
            $dst_y,//往背景图拼接的y坐标
            0,//从待拼接图的x位置开始拼接
            0,//从待拼接图的y位置开始拼接
            $size_arr[$i][0],//从待拼接图的x位置结束拼接
            $size_arr[$i][1]//从待拼接图的y位置结束拼接
        );
        $dst_y += $size_arr[$i][1];
    }
    //header('Content-Type: image/jpeg');
    //imagejpeg($dst_im,null,30);return;

    ob_start();
    ob_implicit_flush(0);
    imagejpeg($dst_im,null,30);//图片质量配置为30%
    imagedestroy($dst_im);
    $img = ob_get_clean();
    // 后续你可以把这个图片流上传到其他对象存储服务器(例如七牛、oss、ucloud等)
    //上传完成,返回结果信息即可

}

这里主要展示了 图片合成那一部分 ~ 如果想要完整的过程,可以联系我哈 ~ 留言即可 ~


🐶 你走,我不送你。你来,风雨无阻,我去接你。

评论
留下你的脚步