Php 为不同大小的文本颜色添加渐变

Php 为不同大小的文本颜色添加渐变,php,image,Php,Image,我想对文本应用渐变背景。我指的是实际文本,而不是文本显示的背景。因此,如果渐变是从红到白,而文本只是字母T,那么T将由红到白填充 我发现了一些代码,允许这样做,它工作得很好。问题是文本的宽度只能和渐变的宽度一样。因此,如果渐变宽度为90像素,输入的文本为10个字符,使用的字体的字符宽度为8像素,则全文将以渐变背景显示。但如果文本增加到11个字符,则超出了图像的大小,因此并非所有文本都显示出来 我正在尝试使用imagecopyresampled函数来创建一个具有我所需宽度的新图像。它创建了图像,但

我想对文本应用渐变背景。我指的是实际文本,而不是文本显示的背景。因此,如果渐变是从红到白,而文本只是字母T,那么T将由红到白填充

我发现了一些代码,允许这样做,它工作得很好。问题是文本的宽度只能和渐变的宽度一样。因此,如果渐变宽度为90像素,输入的文本为10个字符,使用的字体的字符宽度为8像素,则全文将以渐变背景显示。但如果文本增加到11个字符,则超出了图像的大小,因此并非所有文本都显示出来

我正在尝试使用imagecopyresampled函数来创建一个具有我所需宽度的新图像。它创建了图像,但图像并不均匀——原始图像中没有黑点。另外,如果文本由大量字符组成,则结果图像非常大,需要很长时间才能创建

我唯一能想到的另一种方法是创建渐变图像的大拷贝,然后使用它们。这是可行的,但新图像必须足够大,以容纳所有可能的文本条目。我确实尝试过使用背景重复,而且效果不错。但是重复之间有空间

下面是我正在使用的代码。有人能想出更好的办法吗

    <style>.grads {                     
     display:block; 
     -webkit-text-fill-color: transparent;
     background: -webkit-linear-gradient(transparent, transparent),
     url(newimg.jpg) no-repeat; 
     background: -o-linear-gradient(transparent, transparent);
     -webkit-background-clip: text;  
    } 
    </style> 

    $filename = 'gold.jpg';
    $percent = 100;

    // Get new dimensions
    list($width, $height) = getimagesize($filename);
    $new_width = $width * $percent;
    $new_height = $height * $percent;

    // Resample
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($filename);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    // Output
    imagejpeg($image_p, 'newimg.jpg');

    <div><div class="grads">
      <span>Hellow</span>
    </div> 
.grads{
显示:块;
-webkit文本填充颜色:透明;
背景:-webkit线性渐变(透明、透明),
url(newimg.jpg)不重复;
背景:-o-线性梯度(透明,透明);
-webkit背景剪辑:文本;
} 
$filename='gold.jpg';
$percent=100;
//获取新维度
列表($width,$height)=getimagesize($filename);
$new_width=$width*$percent;
$new_height=$height*$percent;
//重采样
$image\u p=imagecreatetruecolor($new\u width,$new\u height);
$image=imagecreatefromjpeg($filename);
imagecopyresampled($image\u p,$image,0,0,0,$new\u width,$new\u height,$width,$height);
//输出
imagejpeg($image_p,'newimg.jpg');
Hellow

你应该根据所涉及的语言添加标签。在简单的背景上写字母,看看它们有多大。调整你的渐变到相同的大小,然后把字母写在上面。你应该问一下文字的颜色。马克-这就是我要做的。它可以工作,但长文本的图像大小需要大约5-10秒才能完成,这并不好。我可能可以通过限制高度来缩短时间,但是,正如前面提到的,得到的图像不是一个均匀的梯度。它的开头可能全是黑色,然后是渐变,然后出现更多的黑色部分。我不明白这是什么意思:“你应该问一下文本颜色”