php 生成图片水印且合并多个图片 Demo
根据 $path 的地址生成图片 A,在根据文字 $text 生成图片B,将 AB两个图片合并到同一个图片C上。
<?php class ImageWaterMark { public static function robot($path, $text = "") { // 字体 $font = rtrim(Yii::app()->basePath, "/") . "/data/yahei.ttf"; $info = getimagesize($path); if ($info && isset($info["mime"])) { $width = $info[0]; $height = $info[1]; $image = false; $smallHeight = 80; list($tmp, $type) = explode("/", $info["mime"]); // 根据图片地址,创建图片 switch (strtolower($type)) { case "png": $image = imagecreatefrompng($path); break; case "jpg": case "jpeg": $image = imagecreatefromjpeg($path); break; case "gif": $image = imagecreatefromgif($path); break; } if ($image) { // 最后生成的图片结果 $imageResource = imagecreatetruecolor($width, $height + $smallHeight); // 图片右下角写入日期 $dateText = date("Y-m-d"); $whiteColor = imagecolorallocate($image, 255, 255, 255); imagettftext($image, 11, 0, $width - 90, $height - 6, $whiteColor, $font, $dateText); // {{{ 通过代码创建图片 $newImage = imagecreate($width, $smallHeight); $newImageColor = imagecolorallocate($newImage, 255, 255, 255); $newImageSmallTextColor = imagecolorallocate($newImage, 128, 128, 128); $newImageBigTextColor = imagecolorallocate($newImage, 0, 0, 0); imagettftext($newImage, 10, 0, 1, 34, $newImageSmallTextColor, $font, "拍照器材:NIKON"); imagettftext($newImage, 15, 0, 1, 60, $newImageBigTextColor, $font, $text); // }}} // {{{ 将两个处理过的图片合并到 $imageSource imagecopy($imageResource, $image, 0, 0, 0, 0, $width, $height); imagecopy($imageResource, $newImage, 0, $height, 0, 0, $width, $smallHeight); // }}} header("Content-Type: image/{$type}"); switch (strtolower($type)) { case "png": imagepng($imageResource); break; case "jpg": case "jpeg": imagejpeg($imageResource); break; case "gif": imagegif($imageResource); break; } imagedestroy($image); imagedestroy($newImage); imagedestroy($imageResource); } } return false; } }
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Android屏幕适配经验谈
- 下一篇: dubbo 使用学习八(异步调用)