phpgdlib

How to edit the text color of 2 posts in PHP GD


I want to ask, I have a web quote maker and execute code as follows,

<?php

if(isset($_POST['execute'])) {

echo "<label>Result :</label>";

$folder = "files/quote/";
$overlay = $folder."overlay.png";
$font_quote = "files/_font/"."Ubuntu-Medium.ttf";
$font_copyright = "files/_font/"."Ubuntu-Medium.ttf";
$filename = $folder.md5(rand(000,999)).".png";
$quote = @$_POST['quote'] ? $_POST['quote'] : 'YOUR QUOTE';
$copyright = @$_POST['copyright'] ? $_POST['copyright'] : 'Username';
$backgrond = @$_POST['background'];

if (!filter_var($backgrond, FILTER_VALIDATE_URL) === false) {
    $bg = $backgrond;
}else {    
    $bg = get_redirect_target('https://source.unsplash.com/640x640/?'.urlencode($backgrond));
}

$image = new PHPImage();
$image->setQuality(10);
$image->setDimensionsFromImage($overlay);
$image->draw($bg);
$image->draw($overlay, '50%', '75%');
$image->setFont($font_quote);
$image->setTextColor(array(255, 255, 255));
$image->setAlignVertical('center');
$image->setAlignHorizontal('center');
$image->textBox($quote, array(
    'fontSize' => 28,
    'x' => 130,
    'y' => 240,
    'width' => 380,
    'height' => 200,
    'debug' => false
    ));

$image->setFont($font_copyright);
$image->setTextColor(array(230, 209, 65)); 
$image->text('CopyRight © '.$copyright, array(
    'fontSize' => 15,
    'x' => 0,
    'y' => 535,
    'width' => 640,
    'height' => 20,
    'debug' => false
    ));
$image->save($filename);


$imagebase64 = "data:image/png;base64,".base64_encode(file_get_contents($filename));
echo "<a href='".$imagebase64."' target='_blank' download='$filename'><img src='".$imagebase64."'/></a>";
unlink($filename);
}

?>

Question:

Whether in 1 the copyright word code can be made into 2 colors, not only 1 color, the code is still 1 color that is yellow, so if there is a submission, the color is white Copyright © and yellow is the username?


Solution

  • You can try this

    <?php
    
    if(isset($_POST['execute'])) {
    
    echo "<label>Result :</label>";
    
    $folder = "files/quote/";
    $overlay = $folder."overlay.png";
    $font_quote = "files/_font/"."Ubuntu-Medium.ttf";
    $font_copyright = "files/_font/"."Ubuntu-Medium.ttf";
    $filename = $folder.md5(rand(000,999)).".png";
    $quote = @$_POST['quote'] ? $_POST['quote'] : 'YOUR QUOTE';
    $copyright = @$_POST['copyright'] ? $_POST['copyright'] : 'Username';
    $backgrond = @$_POST['background'];
    
    if (!filter_var($backgrond, FILTER_VALIDATE_URL) === false) {
        $bg = $backgrond;
    }else {    
        $bg = get_redirect_target('https://source.unsplash.com/640x640/?'.urlencode($backgrond));
    }
    
    $image = new PHPImage();
    $image->setQuality(10);
    $image->setDimensionsFromImage($overlay);
    $image->draw($bg);
    $image->draw($overlay, '50%', '75%');
    $image->setFont($font_quote);
    $image->setTextColor(array(255, 255, 255));
    $image->setAlignVertical('center');
    $image->setAlignHorizontal('center');
    $image->textBox($quote, array(
        'fontSize' => 28,
        'x' => 130,
        'y' => 240,
        'width' => 380,
        'height' => 200,
        'debug' => false
        ));
    
    $image->setFont($font_copyright);
    $image->setTextColor(array(255, 255, 255)); 
    $image->text('CopyRight © ', array(
        'fontSize' => 15,
        'x' => 0,
        'y' => 535,
        'width' => 640,
        'height' => 20,
        'debug' => false
        ));
    
    $image->setFont($font_copyright);
    $image->setTextColor(array(230, 209, 65)); 
    $image->text($copyright, array(
        'fontSize' => 15,
        'x' => 100,
        'y' => 535,
        'width' => 640,
        'height' => 20,
        'debug' => false
        ));
    
    $image->save($filename);
    
    
    $imagebase64 = "data:image/png;base64,".base64_encode(file_get_contents($filename));
    echo "<a href='".$imagebase64."' target='_blank' download='$filename'><img src='".$imagebase64."'/></a>";
    unlink($filename);
    }
    
    ?>
    

    If you notice, I have separated your copyright text from the username variable. I have placed both of them on same Y axis but different X axis just like plotting on a graph. I also gave them different colors but same font.

    You can adjust the copyright X position in case 100 makes it too far or too close to the username