当前位置: 首页> 最新文章列表> 怎样结合imagestringup和imagecreatetruecolor创建竖直文本图片?完整步骤解析

怎样结合imagestringup和imagecreatetruecolor创建竖直文本图片?完整步骤解析

gitbox 2025-07-03

1. 初始化图像画布

首先,我们需要创建一个空白的画布,方便在其上绘制内容。imagecreatetruecolor() 函数是用来创建一个真彩色的画布,它允许我们设置图像的宽度和高度。

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 设置图片的宽度和高度</span></span><span>
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-number">300</span></span><span>;
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;

</span><span><span class="hljs-comment">// 创建一个真彩色的画布</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-variable">$width</span></span><span>, </span><span><span class="hljs-variable">$height</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

在这个步骤中,我们为图片定义了一个宽 300 像素,高 100 像素的画布。

2. 分配颜色

我们可以使用 imagecolorallocate() 函数为图像分配颜色。此函数返回的颜色可以用来绘制文本、背景等。

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 分配颜色</span></span><span>
</span><span><span class="hljs-variable">$bgColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>); </span><span><span class="hljs-comment">// 白色背景</span></span><span>
</span><span><span class="hljs-variable">$textColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// 黑色文本</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

在这个示例中,我们为图像设置了一个白色的背景颜色和黑色的文本颜色。

3. 填充背景

接下来,我们使用 imagefill()imagefilltoborder() 函数填充背景。这一操作可以确保画布有一个统一的背景色。

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 填充背景为白色</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$bgColor</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. 绘制竖直文本

这一步是关键,我们利用 imagestringup() 函数来绘制竖直的文本。imagestringup() 用于将文本沿着图像的竖直方向绘制。它的参数如下:

  • $image: 要绘制的图像资源

  • $font: 字体大小

  • $x: 文本的横坐标

  • $y: 文本的纵坐标

  • $string: 要绘制的文本

  • $color: 字体颜色

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 使用 imagestringup 绘制竖直文本</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagestringup</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-string">"竖直文本"</span></span><span>, </span><span><span class="hljs-variable">$textColor</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

在这个例子中,我们将文本 "竖直文本" 绘制到画布的坐标 (50, 50) 处,并且文本是竖直显示的。

5. 输出图像

完成绘制后,我们可以选择将图像输出为文件或直接显示在浏览器中。使用 imagepng()imagejpeg() 等函数可以将图像输出为不同格式,或者使用 header() 函数将图像直接输出到浏览器。

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 输出到浏览器</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);

</span><span><span class="hljs-comment">// 销毁图像资源</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

这段代码会将图像直接输出到浏览器,图像格式为 PNG。在输出完毕后,调用 imagedestroy() 释放内存。

6. 完整代码示例

将以上步骤组合起来,完整的代码示例如下:

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 设置图片的宽度和高度</span></span><span>
</span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-number">300</span></span><span>;
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;

</span><span><span class="hljs-comment">// 创建一个真彩色的画布</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-variable">$width</span></span><span>, </span><span><span class="hljs-variable">$height</span></span><span>);

</span><span><span class="hljs-comment">// 分配颜色</span></span><span>
</span><span><span class="hljs-variable">$bgColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>); </span><span><span class="hljs-comment">// 白色背景</span></span><span>
</span><span><span class="hljs-variable">$textColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// 黑色文本</span></span><span>

</span><span><span class="hljs-comment">// 填充背景为白色</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-variable">$bgColor</span></span><span>);

</span><span><span class="hljs-comment">// 使用 imagestringup 绘制竖直文本</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagestringup</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-string">"竖直文本"</span></span><span>, </span><span><span class="hljs-variable">$textColor</span></span><span>);

</span><span><span class="hljs-comment">// 输出图像到浏览器</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);

</span><span><span class="hljs-comment">// 销毁图像资源</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

7. 效果与总结

执行上述代码后,我们将会看到一个包含竖直文本的图片。在此过程中,我们使用了 imagecreatetruecolor() 创建画布,imagecolorallocate() 分配颜色,imagestringup() 绘制竖直文本,最后通过 imagepng() 输出图像。

通过这几步,你可以轻松地创建包含竖直文本的图片,并将其应用于网页、图像处理等场景。希望本文的解析能够帮助你更好地理解 PHP 图像处理的基本操作,特别是如何使用 imagestringup() 绘制竖直文本。