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