在图像上添加文字。我在下面有两个代码单独工作。 第一个用于通过pdo连接将图像上传到服务器和数据库。 第二个用于为静止图像添加水印。
我的问题是我希望将这两个代码组合在一起,以便在上传到服务器的过程中对图像进行文本水印,而无需使用辅助工具 全球变量。 我一直在努力,但无法让它发挥作用。有人可以帮我整合这个。感谢
<?php
include('pdo.php');
if (!isset($_FILES['image']['tmp_name'])) {
echo "";
}else{
$file=$_FILES['image']['tmp_name'];
$image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name= addslashes($_FILES['image']['name']);
$image_size= getimagesize($_FILES['image']['tmp_name']);
if ($image_size==FALSE) {
echo "That's not an image!";
}else{
move_uploaded_file($_FILES["image"]["tmp_name"],"postphoto/" . $_FILES["image"]["name"]);
$location="postphoto/" . $_FILES["image"]["name"];
$from=$_POST['from'];
$time=time();
$photos='photos';
$statement = $db->prepare('INSERT INTO text_watermark (photo,from_send) values(:photo,:from_send)');
if(!$statement->execute(array(
':photo' => $photos,
':from_send' => $from))){
echo 'There is problem';
}
else{
header("location: lol.php");
exit();
}
}
}
?>
<?php
//Set the Content Type
header('Content-type: image/jpeg');
// Create Image From Existing File
$jpg_image = imagecreatefromjpeg('sunset.jpg');
// Allocate A Color For The Text
$white = imagecolorallocate($jpg_image, 255, 255, 255);
// Set Path to Font File
$font_path = 'font.TTF';
// Set Text to Be Printed On Image
$text = "This is a sunset!";
// Print Text On Image
imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);
// Send Image to Browser
imagejpeg($jpg_image);
// Clear Memory
imagedestroy($jpg_image);
?>
答案 0 :(得分:1)
如果你的代码是正确的,那只是移动块的情况。您可能想要考虑当有人上传png时会发生什么。虽然你可能会在其他地方看到这个......
<?php
include('pdo.php');
if (!isset($_FILES['image']['tmp_name']))
{
echo "";
}
else
{
$file = $_FILES['image']['tmp_name'];
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);
if ($image_size == FALSE)
{
echo "That's not an image!";
}
else
{
move_uploaded_file($_FILES["image"]["tmp_name"], "postphoto/" . $_FILES["image"]["name"]);
$location = "postphoto/" . $_FILES["image"]["name"];
//Watermark it!
################
$jpg_image = imagecreatefromjpeg($location);
// Allocate A Color For The Text
$white = imagecolorallocate($jpg_image, 255, 255, 255);
// Set Path to Font File
$font_path = 'font.TTF';
// Set Text to Be Printed On Image
$text = "This is a sunset!";
// Print Text On Image
imagettftext($jpg_image, 25, 0, 75, 300, $white, $font_path, $text);
#################
$from = $_POST['from'];
$time = time();
$photos = 'photos';
$statement = $db->prepare('INSERT INTO text_watermark (photo,from_send) values(:photo,:from_send)');
if (!$statement->execute(
array(
':photo' => $photos,
':from_send' => $from
)
)
)
{
echo 'There is problem';
}
else
{
header("location: lol.php");
exit();
}
}
}
if ($jpg_image)
{
//Set the Content Type
header('Content-type: image/jpeg');
// Send Image to Browser
imagejpeg($jpg_image);
// Clear Memory
imagedestroy($jpg_image);
}
?>