php裁剪图片,并给图片加上水印

本次以裁剪四个图片为例,图片如下
php裁剪图片,并给图片加上水印_第1张图片
代码如下

public function cutImg($imgUrl){
        try{
            // 读取原始图片
            $src_img = imagecreatefromjpeg($imgUrl);

            // 获取原始图片的宽度和高度
            $src_width = imagesx($src_img);
            $src_height = imagesy($src_img);

            // 计算每个部分的宽度和高度
            $part_width = $src_width / 2;
            $part_height = $src_height / 2;

            // 创建4个新的图片
            $part1_img = imagecreatetruecolor($part_width, $part_height);
            $part2_img = imagecreatetruecolor($part_width, $part_height);
            $part3_img = imagecreatetruecolor($part_width, $part_height);
            $part4_img = imagecreatetruecolor($part_width, $part_height);

            // 将原始图片的指定部分复制到新的图片中
            imagecopyresampled($part1_img, $src_img, 0, 0, 0, 0, $part_width, $part_height, $src_width / 2, $src_height / 2);
            imagecopyresampled($part2_img, $src_img, 0, 0, $src_width / 2, 0, $part_width, $part_height, $src_width / 2, $src_height / 2);
            imagecopyresampled($part3_img, $src_img, 0, 0, 0, $src_height / 2, $part_width, $part_height, $src_width / 2, $src_height / 2);
            imagecopyresampled($part4_img, $src_img, 0, 0, $src_width / 2, $src_height / 2, $part_width, $part_height, $src_width / 2, $src_height / 2);

            //添加水印
            $text = '用积分可下载原图';
            $textAi = 'AI生图';
            $font = __DIR__ . '/../../../public/static/font/FangZhengShuSongJianTi-1.ttf';  // 字体文件的路径
            $font_size = 20;  // 字体大小
            $font_color = imagecolorallocatealpha($part1_img, 255, 255, 255, 0);  // 字体颜色,这里设置为白色
            // 设置水印文字的位置和边距
//            $margin_left = ($thumbnail_width - mb_strlen($text)) / 2;  // 水印距离右边界的距离
            $textBoundingBox = imagettfbbox($font_size, 0, $font, $text);
            $textWidth = $textBoundingBox[2] - $textBoundingBox[0];
            $margin_left = ($part_width - $textWidth) / 2;  // 水印距离右边界的距离
            $margin_bottom = $part_height / 2;  // 水印距离底部边界的距离

            // 设置文字倾斜角度(以度为单位,逆时针方向为正)
            $text_angle = 0;

            //添加中间水印
            imagettftext($part1_img, $font_size, $text_angle, $margin_left, $margin_bottom, $font_color, $font, $text);
            imagettftext($part2_img, $font_size, $text_angle, $margin_left, $margin_bottom, $font_color, $font, $text);
            imagettftext($part3_img, $font_size, $text_angle, $margin_left, $margin_bottom, $font_color, $font, $text);
            imagettftext($part4_img, $font_size, $text_angle, $margin_left, $margin_bottom, $font_color, $font, $text);

            // 保存4张新生成的图片
            imagejpeg($part1_img, str_replace('.jpg','_sy_1.jpg',$imgUrl),70);
            imagejpeg($part2_img, str_replace('.jpg','_sy_2.jpg',$imgUrl),70);
            imagejpeg($part3_img, str_replace('.jpg','_sy_3.jpg',$imgUrl),70);
            imagejpeg($part4_img, str_replace('.jpg','_sy_4.jpg',$imgUrl),70);

            // 释放内存
            imagedestroy($src_img);
            imagedestroy($part1_img);
            imagedestroy($part2_img);
            imagedestroy($part3_img);
            imagedestroy($part4_img);


            return 1;
        } catch (\ErrorException $e){
            return -1;
        }
    }

裁剪后图片如下
php裁剪图片,并给图片加上水印_第2张图片

你可能感兴趣的:(php,android,开发语言)