本次以裁剪四个图片为例,图片如下
代码如下
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;}}
裁剪后图片如下