php 生成水印图

 PHP基础  2018-12-02  admin  1372  1852


php 生成水印图

示例

$src = "images/2.jpg";
$water = "images/i1.png";
watermark($src, $water);

函数

/**
 * @param $src  需要处理的图片
 * @param $water   水印图
 * @param int $pos  水印图位置
 * @return mixed
 */
function watermark($src, $water, $pos = 5)
{
    //1.获取图片信息
    $src_arr = getimagesize($src);
    $src_width = $src_arr['0'];
    $src_height = $src_arr['1'];
    $water_arr = getimagesize($water);
    list($water_width, $water_height) = $water_arr;
    //2.获取图片资源
    $src_im = imagecreatefromAll($src);
    $water_im = imagecreatefromAll($water);
    //3.水印图片的位置
    switch ($pos) {
        case 1://左上角
            $dst_x = 0;
            $dst_y = 0;
            break;
        case 2://右上角
            $dst_x = $src_width - $water_width;
            $dst_y = 0;
            break;
        case 3://左下角
            $dst_x = 0;
            $dst_y = $src_height - $water_height;
            break;
        case 4://右下角
            $dst_x = $src_width - $water_width;
            $dst_y = $src_height - $water_height;
            break;
        case 5: //中心位置
            $dst_x = ($src_width - $water_width) / 2;
            $dst_y = ($src_height - $water_height) / 2;
            break;
        default ://随机位置
            $dst_x = rand(0, $src_width - $water_width);
            $dst_y = rand(0, $src_height - $water_height);
            break;
    }
    //3.添加半透明水印
    imagecopymerge($src_im, $water_im, $dst_x, $dst_y, 0, 0, $water_width, $water_height, 80);
    //4.生成文件或在浏览器显示
    //header('content-type:image/jpeg');
    //imagejpeg($src_im);
    //生成文件
    return createImage($src, $src_im, 'png', 'water_');
}
/**
 * 获取图片资源
 * @param $src 图片路径
 * @return bool|resource
 */
function imageCreateFromAll($src)
{
    $src_arr = getimagesize($src);
    switch ($src_arr['mime']) {
        case 'image/jpeg':
            return imagecreatefromjpeg($src);
        case 'image/png':
            return imagecreatefrompng($src);
        case 'image/gif':
            return imagecreatefromgif($src);
        case 'image/bmp':
            return imagecreatefrombmp($src);
//        case 'image/wbmp':
//            return imagecreatefromwbmp($src);
//        case 'image/webp':
//            return imagecreatefromwebp($src);
//        case 'image/x-xbitmap':
//            return imagecreatefromxbm($src);
//        case 'image/x-xpixmap':
//            return imagecreatefromxpm($src);
        default :
            return false;
    }
}


/**
 * 生成图片
 * @param $src 原图的路径
 * @param $im 目标图的资源
 * @param string $ext 生成图片的扩展,默认是原图扩展名
 * @param string $prefix 生成文件的前缀
 * @param int $quality 生成jpg格式图片的质量
 * @param bool $file 是否生成文件
 * @return bool|string
 */
function createImage($src, $im, $ext = '', $prefix = 'thumb_', $quality = 80, $file = true)
{
    $src_path = pathinfo($src);
    //$ext 为空,和原图扩展名相同
    if (empty($ext)) {
        $ext = $src_path['extension'];
    }
    $new_file = $src_path['dirname'] . '/' . $prefix . $src_path['filename'] . '.' . $ext;

    if ($file) {
        switch (strtolower($ext)) {
            case 'jpg':
                imagejpeg($im, $new_file, $quality);
                return $new_file;
            case 'png':
                imagepng($im, $new_file);
                return $new_file;
            case 'gif';
                imagegif($im, $new_file);
                return $new_file;
            default:
                return false;
        }
    } else {
        switch (strtolower($ext)) {
            case 'jpg':
                header('content-type:image/jpeg');
                imagejpeg($im, null, $quality);
                return $new_file;
            case 'png':
                header('content-type:image/png');
                imagepng($im);
                return $new_file;
            case 'gif';
                header('content-type:image/gif');
                imagegif($im);
                return $new_file;
            default:
                return false;
        }
    }
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

php 生成水印图 —— code.cent123.com

相关推荐


图片批量转换格式扩展名命工具

图片批量转换格式扩展名命工具图片批量转换格式扩展名命令行工具支持多线程设置,速度极快imageConverterGui.7z

图片批量转换格式扩展名命令行工具

图片批量转换格式扩展名命令行工具支持多线程设置,速度极快imageConverter.7z

php 正则获取字符串中所有图片链接地址并下载图片

php 正则获取字符串中所有图片链接地址并下载图片/** *获取图片的绝对地址 *@paramstring$content *@returnmixed *@Author:code.cent123.com */ functiongetImageUrl(string$content="") { //$pattern="/src=[\"\'

PHP常用正则表达式汇总

PHP常用正则表达式汇总"^\d+$"  //非负整数(正整数+0) "^[0-9]*[1-9][0-9]*$"  //正整数 "^((-\d+)|(0+))$"  //非正整数(负整数+0) "^-[0-9]*[1-9][0-9]*$"  //负整数 "^-?\d+$"    //整数