在图像上添加文字

时间:2014-11-15 07:37:37

标签: php

在图像上添加文字。我在下面有两个代码单独工作。 第一个用于通过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);
    ?> 

1 个答案:

答案 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);
}
?>