在 PHP 中上传图像时在图像上添加文本

Posted

技术标签:

【中文标题】在 PHP 中上传图像时在图像上添加文本【英文标题】:Add text over an image when uploading it in PHP 【发布时间】:2012-10-22 16:26:29 【问题描述】:

我有一个像 Quickmeme.com 这样的图片网站,我想在图片上添加文字。 我目前让用户手动上传图片,在 Windows 中使用 Paint 程序编写 cmets,这是一个坏主意,我需要帮助...

这是我用于上传图像的代码,我正在考虑在上传字段下方添加一个文本字段,以便用户在该框中写入的内容将作为图像文本打印在图像上......那么如何我是用 php 做的吗?

<?php if(isset($_POST["upload"]))

        $tmp_name = $_FILES["file"]["tmp_name"];
        $file_name = basename($_FILES["file"]["name"]);
        $random = rand(1, 9999999999);
        $directory = "Uploads/" . $random . $file_name;
        $time = strftime("%H:%M:%S", time());
        $date = strftime("%Y-%m-%d", time());

            if(move_uploaded_file($tmp_name, $directory))
                if(mysql_query(""))
                    $query = mysql_query(""); $fetch = mysql_fetch_array($query);
                    if(mysql_query(""))
                        header("Location: index.php");
                        exit;
                    
                
            


       ?>

这是我的网站http://www.picturepunches.net

【问题讨论】:

添加到标签图像处理或相关的东西。标签mysql与这个问题无关 【参考方案1】:

你可以试试

if (isset($_POST["upload"])) 

    $tmp_name = $_FILES["file"]["tmp_name"];
    $file_name = basename($_FILES["file"]["name"]);
    $random = rand(1, 9999999999);
    $directory = "Uploads/" . $random . $file_name;
    $time = strftime("%H:%M:%S", time());
    $date = strftime("%Y-%m-%d", time());

    switch (strtolower(pathinfo($file_name, PATHINFO_EXTENSION))) 
        case "jpg" :
            $im = imagecreatefromjpeg($_FILES["file"]["tmp_name"]);
            break;
        case "gif" :
            $im = imagecreatefromgif($_FILES["file"]["tmp_name"]);
            break;
        case "png" :
            $im = imagecreatefrompng($_FILES["file"]["tmp_name"]);
            break;

        default :
            trigger_error("Error Bad Extention");
            exit();
            break;
    

    $font = 'verdana.ttf';
    $grey = imagecolorallocate($im, 128, 128, 128);
    $red = imagecolorallocate($im, 255, 0, 0);
    // Add some shadow to the text
    imagettftext($im, 10, 0, 11, 20, $grey, $font, $date);
    imagettftext($im, 10, 0, 10, 35, $grey, $font, $time);
    imagettftext($im, 10, 0, 10, 50, $red, $font, $random);

    // imagepng($im);
    imagedestroy($im);

    if (move_uploaded_file($tmp_name, $directory)) 
        if (mysql_query("")) 
            $query = mysql_query("");
            $fetch = mysql_fetch_array($query);
            if (mysql_query("")) 
                header("Location: index.php");
                exit();
            
        
    

输出

           Uploaded                               Final

【讨论】:

【参考方案2】:

首先,检查你是否安装了GD扩展,接下来,

使用 GD 函数

//Loading the file
$rImg = ImageCreateFromJPEG("MyPicture.jpg");

//Font Color (black in this case)
$color = imagecolorallocate($rImg, 0, 0, 0);

//x-coordinate of the upper left corner. 
$xPos = 100;
//y-coordinate of the upper left corner. 
$yPos = 30;

//Writting the picture
imagestring($rImg,5,$xPos,$yPos,"My text in the picture",$color);

//The new file with the text
header('Content-type: image/jpeg');
imagejpeg($rImg, NULL, 100);

您可以使用本教程

http://blog.doh.ms/2008/02/12/adding-text-to-images-in-real-time-with-php/

【讨论】:

以上是关于在 PHP 中上传图像时在图像上添加文本的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 和 Mysql 中同时更新图像和文本

我想在滚动时在列表视图中添加 500 张图像,并删除当前不在屏幕上的项目

如何将图像和文本添加到 PHP 中?

ImageMagick PHP - 在图像上扭曲文本和注释

当我尝试在 PHP + GD 库中添加图像时,文本消失了

php [自定义图像尺寸]添加自定义尺寸图像(上传媒体时的新尺寸)#wordpress #php