php 实现贴图
使用 PHP 实现贴图功能
PHP 可以通过 GD 库或 Imagick 扩展实现贴图功能(将一张图片叠加到另一张图片上)。以下是两种实现方法:

方法一:使用 GD 库
GD 库是 PHP 内置的图像处理库,适合基础贴图需求。

// 加载背景图和贴图
$background = imagecreatefromjpeg('background.jpg');
$sticker = imagecreatefrompng('sticker.png');
// 获取贴图尺寸
$stickerWidth = imagesx($sticker);
$stickerHeight = imagesy($sticker);
// 设置贴图位置(示例为右下角)
$positionX = imagesx($background) - $stickerWidth - 10;
$positionY = imagesy($background) - $stickerHeight - 10;
// 合并图片(最后一个参数是透明度,0-100)
imagecopymerge(
$background,
$sticker,
$positionX,
$positionY,
0,
0,
$stickerWidth,
$stickerHeight,
100
);
// 输出或保存结果
header('Content-Type: image/jpeg');
imagejpeg($background);
// imagejpeg($background, 'output.jpg'); // 保存到文件
// 释放内存
imagedestroy($background);
imagedestroy($sticker);
方法二:使用 Imagick 扩展
Imagick 功能更强大,支持复杂图像操作。
// 初始化 Imagick 对象
$background = new Imagick('background.jpg');
$sticker = new Imagick('sticker.png');
// 设置贴图位置(示例为居中)
$backgroundWidth = $background->getImageWidth();
$backgroundHeight = $background->getImageHeight();
$stickerWidth = $sticker->getImageWidth();
$stickerHeight = $sticker->getImageHeight();
$x = ($backgroundWidth - $stickerWidth) / 2;
$y = ($backgroundHeight - $stickerHeight) / 2;
// 合并图片
$background->compositeImage(
$sticker,
Imagick::COMPOSITE_OVER,
$x,
$y
);
// 输出或保存结果
header('Content-Type: image/jpeg');
echo $background;
// $background->writeImage('output.jpg'); // 保存到文件
透明度处理
若贴图需要半透明效果:
- GD 库:调整
imagecopymerge()的最后一个参数(0-100)。 - Imagick:使用
$sticker->setImageOpacity(0.5)设置透明度。
注意事项
- 确保服务器已安装 GD 库(
phpinfo()查看)或 Imagick 扩展(php -m | grep imagick)。 - 图片路径需有读写权限。
- 不同图片格式(JPEG/PNG/GIF)需使用对应的加载函数(如
imagecreatefrompng())。






