GD 拓展库笔记
getimagesize(url); // 获取图片的尺寸
imagecolorallocate(图片流, R, G, B); // 为指定图片流设置颜色
imagecopy(背景图片, 源图片, 背景图片开始X, 背景图片开始Y, 源图片X, 源图片Y, 截取图片X, 截取图片Y); // 图片合并
imagejpeg(图片流); 将背景图片输出到屏幕
imagettftext($img_bg, 14, 0, 190, 930, $color, TTF, "《一瞬间的灿烂》"); // 想图片中加入文字
图片操作
// PHP 使用 GD 拓展库制作图像
// 指定输出为 JPEG 图片
define('TTF', '/phpStudy/PHPTutorial/WWW/FZZJ-HFXCJW.TTF');
//header('Content-type:image/jpeg');
$img_bg = imagecreatefromjpeg('bg1.jpg');
$img_mini_wine = imagecreatefrompng('mini_wine.png');
// 将小酒图片组装到背景图片上
imagecopy($img_bg, $img_mini_wine, 0, 0, 0, 0, 750, 1334);
// 图片大小355 * 290 开始X=195 Y=608
/*
* 将用户上传的图片进行处理,转化成适合大小的图片
*/
$img_user_bg = imagecreatefromjpeg('user_bg.jpg');
$img_user_size = getimagesize('user_bg.jpg');
$img_user_res = imagecreatetruecolor(355, 290);
imagecopyresampled($img_user_res, $img_user_bg, 0, 0, 0, 0, 355, 290, $img_user_size[0], $img_user_size[1]);
// 将用户的图片组装到背景图片上
imagecopy($img_bg, $img_user_res, 195, 608, 0, 0, 355, 290);
// 颜色
$color = imagecolorallocate($img_bg, 1, 2, 3);
// 标题 开始X=190 Y=930
imagettftext($img_bg, 14, 0, 190, 930, $color, TTF, "《一瞬间的灿烂》");
// 落款 开始Y=1030
$inscribe_box = imagettfbbox(14, 0, TTF, "———— 夏天");
$inscribe_x = 585 - ($inscribe_box[2] - $inscribe_box[0]);
imagettftext($img_bg, 14, 0, $inscribe_x, 1030, $color, TTF, "—— 夏天");
// 描述 开始Y=930
$desc = <<<CONTENCE
烟花的美丽
如此短暂
却如此奔放
CONTENCE;
$desc_arr = explode("\n", $desc);
$desc_y = 930;
foreach ($desc_arr as $item) {
$desc_box = imagettfbbox(13, 0, TTF, $item);
$desc_x = 548 - ($desc_box[2] - $desc_box[0]);
imagettftext($img_bg, 13, 0, $desc_x, $desc_y, $color, TTF, $item);
$desc_y += 20;
}
// imagecolorallocate() 得到颜色资源
//$color = imagecolorallocate($img, 1, 2, 3);
// imagettfbbox() 返回文本边框的四个角
//var_dump(imagettfbbox(24, 0, '/phpStudy/PHPTutorial/WWW/FZZJ-HFXCJW.TTF', '字体'));
// imagettftext() 向图像资源写入文字 通过 \n 可以实现换行
//imagettftext($img, 24, 0, 100, 100, $color, '/phpStudy/PHPTutorial/WWW/FZZJ-HFXCJW.TTF', "屁猪猪只能我爱你哟");
// 获取图片的宽
//var_dump(imagesx($img));
// 获取图片的高
//var_dump(imagesy($img));
imagejpeg($img_bg, 'res.jpg');
imagedestroy($img_bg);
imagedestroy($img_mini_wine);
imagedestroy($img_user_bg);
imagedestroy($img_user_res);