我创建了一个水印功能,如下所示:
的index.php
<?php
include 'core.inc.php';
do_watermark('bg1.jpg', 'logo1.png');
?>
core.inc.php
<?php
header ( 'Content-type: image/jpeg' );
function do_watermark($source_image, $logo) {
$watermark = imagecreatefrompng ( $logo );
$watermark_width = imagesx ( $logo );
$watermark_height = imagesy ( $logo );
$image = imagecreatetruecolor ( $watermark_width, $watermark_height );
$image = imagecreatefromjpeg ( $source_image );
$image_size = getimagesize ( $source_image );
$x = $image_size [0] - $watermark_width - 10;
$y = $image_size [1] - $watermark_height - 10;
imagecopymerge ( $image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height, 40 );
imagejpeg ( $image );
}
?>
但是在致电do_watermark('bg1.jpg', 'logo1.png')
时,什么都不显示。
bg1.jpg
和logo1.png
位于index.php
。
任何帮助都会很棒。
答案 0 :(得分:2)
水印图像通常不会比带水印的图像小吗?您创建的工作图像是水印的大小而不是源图像的大小 - 这是您真正想要的吗?我不确定x和y坐标 - 水印越大,越往右和(向上或向下?),因为x和y随着水印的大小而增加。我会考虑将它(x和y)定位为图像大小和水印大小的函数。
您还可以对JPEG图像和PNG水印进行硬编码。您可以从文件名或getimagesize()调用('mime'条目)中获取图像类型。考虑以这种方式使其更加灵活。
答案 1 :(得分:1)
您编写的代码中存在一些主要问题,这应该可行,但请将其与您的代码进行比较以查看错误。
<?php
function do_watermark($source_image, $logo) {
$watermark = imagecreatefrompng($logo);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$image = imagecreatefromjpeg($source_image);
$image_width = imagesx($image);
$image_height = imagesy($image);
$x = $image_width - $watermark_width - 10;
$y = $image_height - $watermark_height - 10;
imagecopymerge($image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height, 40 );
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
}
?>