怎么把我用php写的图片水印加个表单
时间: 2023-05-31 17:02:47 浏览: 100
1. 首先,在HTML代码中添加一个表单,以便用户可以上传他们的图片和选择水印类型和位置。
```html
<form action="add_watermark.php" method="post" enctype="multipart/form-data">
<label for="file">上传图片:</label>
<input type="file" name="file" id="file"><br>
<label for="type">选择水印类型:</label>
<select name="type" id="type">
<option value="text">文字水印</option>
<option value="image">图片水印</option>
</select><br>
<label for="position">选择水印位置:</label>
<select name="position" id="position">
<option value="top-left">左上角</option>
<option value="top-right">右上角</option>
<option value="bottom-left">左下角</option>
<option value="bottom-right">右下角</option>
<option value="center">居中</option>
</select><br>
<input type="submit" name="submit" value="添加水印">
</form>
```
2. 接下来,创建一个PHP脚本,该脚本将检查表单是否已提交,并将上传的图像和表单数据传递给添加水印的函数。
```php
if(isset($_POST['submit'])){
$file = $_FILES['file'];
$type = $_POST['type'];
$position = $_POST['position'];
//调用添加水印的函数
add_watermark($file, $type, $position);
}
```
3. 最后,修改添加水印的函数,以便它可以接受表单数据并将水印添加到上传的图像中。
```php
function add_watermark($file, $type, $position){
$image = imagecreatefromstring(file_get_contents($file['tmp_name']));
//添加水印
if($type == 'text'){
$text = '水印文字';
$color = imagecolorallocate($image, 255, 255, 255);
$font = 'arial.ttf';
$fontsize = 20;
$angle = 0;
$x = 0;
$y = 0;
if($position == 'top-left'){
$x = 10;
$y = 30;
} elseif($position == 'top-right'){
$x = imagesx($image) - (strlen($text) * $fontsize) - 10;
$y = 30;
} elseif($position == 'bottom-left'){
$x = 10;
$y = imagesy($image) - $fontsize - 10;
} elseif($position == 'bottom-right'){
$x = imagesx($image) - (strlen($text) * $fontsize) - 10;
$y = imagesy($image) - $fontsize - 10;
} elseif($position == 'center'){
$x = (imagesx($image) / 2) - ((strlen($text) * $fontsize) / 2);
$y = (imagesy($image) / 2) - ($fontsize / 2);
}
imagettftext($image, $fontsize, $angle, $x, $y, $color, $font, $text);
} elseif($type == 'image'){
$watermark = imagecreatefrompng('watermark.png');
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);
$x = 0;
$y = 0;
if($position == 'top-left'){
$x = 10;
$y = 10;
} elseif($position == 'top-right'){
$x = imagesx($image) - $watermark_width - 10;
$y = 10;
} elseif($position == 'bottom-left'){
$x = 10;
$y = imagesy($image) - $watermark_height - 10;
} elseif($position == 'bottom-right'){
$x = imagesx($image) - $watermark_width - 10;
$y = imagesy($image) - $watermark_height - 10;
} elseif($position == 'center'){
$x = (imagesx($image) / 2) - ($watermark_width / 2);
$y = (imagesy($image) / 2) - ($watermark_height / 2);
}
imagecopy($image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height);
}
//保存水印图像
imagepng($image, 'watermarked.png');
//释放内存
imagedestroy($image);
imagedestroy($watermark);
}
```
现在,当用户上传图像并提交表单时,该脚本将在图像上添加所选的水印,并将其保存为watermarked.png。
阅读全文