php怎么在图片上加字
时间 : 2023-04-25 15:00:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中给图片添加文字,通常使用 GD 库实现。GD 库是一个开源的图形库,可以用来创建和修改图片。以下是一些添加文字到图片的基本步骤:

1. 打开原始图片,并创建一个与其相同大小的空白图片。

```php

// 打开原始图片

$originalImg = imagecreatefromjpeg('original.jpg');

// 创建同样大小的空白图片

$blankImg = imagecreatetruecolor(imagesx($originalImg), imagesy($originalImg));

2. 复制原始图片到空白图片中。

```php

// 复制原始图片到空白图片中

imagecopy($blankImg, $originalImg, 0, 0, 0, 0, imagesx($originalImg), imagesy($originalImg));

3. 在空白图片中添加文字。

```php

// 设定字体、字体大小、字体颜色、文字内容

$font = 'Arial.ttf';

$fontSize = 20;

$fontColor = imagecolorallocate($blankImg, 255, 255, 255);

$text = 'Hello World!';

// 测量文字尺寸

$textWidth = imagettfbbox($fontSize, 0, $font, $text);

$textWidth = $textWidth[2] - $textWidth[0];

// 计算文字的位置,使其居中

$x = (imagesx($blankImg) - $textWidth) / 2;

$y = imagesy($blankImg) - (imagesy($blankImg) - $fontSize) / 2;

// 添加文字到空白图片上

imagettftext($blankImg, $fontSize, 0, $x, $y, $fontColor, $font, $text);

4. 保存修改后的图片。

```php

// 保存修改后的图片

imagejpeg($blankImg, 'modified.jpg', 100);

完整的代码示例:

```php

// 打开原始图片

$originalImg = imagecreatefromjpeg('original.jpg');

// 创建同样大小的空白图片

$blankImg = imagecreatetruecolor(imagesx($originalImg), imagesy($originalImg));

// 复制原始图片到空白图片中

imagecopy($blankImg, $originalImg, 0, 0, 0, 0, imagesx($originalImg), imagesy($originalImg));

// 设定字体、字体大小、字体颜色、文字内容

$font = 'Arial.ttf';

$fontSize = 20;

$fontColor = imagecolorallocate($blankImg, 255, 255, 255);

$text = 'Hello World!';

// 测量文字尺寸

$textWidth = imagettfbbox($fontSize, 0, $font, $text);

$textWidth = $textWidth[2] - $textWidth[0];

// 计算文字的位置,使其居中

$x = (imagesx($blankImg) - $textWidth) / 2;

$y = imagesy($blankImg) - (imagesy($blankImg) - $fontSize) / 2;

// 添加文字到空白图片上

imagettftext($blankImg, $fontSize, 0, $x, $y, $fontColor, $font, $text);

// 保存修改后的图片

imagejpeg($blankImg, 'modified.jpg', 100);

这段代码可以将名为「original.jpg」的图片打开,并在其上添加「Hello World!」的文字,最终输出一张新的名为「modified.jpg」的图片。可以根据需要修改代码中的参数,例如修改字体、字体大小、文字内容等。

在 PHP 中,可以使用 GD 扩展库来操作图片。加文字到图片上,可以使用 GD 库提供的函数 `imagettftext`。

`imagettftext` 函数的用法如下:

```php

imagettftext($image, $size, $angle, $x, $y, $color, $font, $text);

参数说明:

- `$image`:要加文字的图片资源;

- `$size`:字体大小;

- `$angle`:字体角度(以度数表示);

- `$x` 和 `$y`:文字左下角的坐标;

- `$color`:文字颜色,使用 `imagecolorallocate` 函数创建;

- `$font`:字体文件的路径;

- `$text`:要输出的文本。

下面是一个示例代码,演示如何在一张图片上添加文字:

```php

// 创建一张 200x200 的空白图片

$image = imagecreatetruecolor(200, 200);

// 分配颜色

$bg_color = imagecolorallocate($image, 255, 255, 255);

$text_color = imagecolorallocate($image, 0, 0, 0);

// 在图片上填充背景色

imagefill($image, 0, 0, $bg_color);

// 设置字体路径

$font = 'font.ttf';

// 在图片上添加文字

$text = 'Hello, world!';

imagettftext($image, 20, 0, 50, 100, $text_color, $font, $text);

// 输出图片

header('Content-Type: image/png');

imagepng($image);

// 释放资源

imagedestroy($image);

上述代码中,我们首先使用 `imagecreatetruecolor` 函数创建一张 200x200 的空白图片,分配了一个白色的背景。然后使用 `imagettftext` 函数在图片上加上了一行字体为 `font.ttf` 文件中的 `Hello, world!` 文本,字体大小为 20,颜色为黑色,位置为左下角的 (50, 100)。最后使用 `imagepng` 函数将图片输出为 PNG 格式,并释放资源。

注意:在实际使用中,需要将 `$font` 参数替换为自己的字体文件路径,并确认服务器上已经安装了相应的字体库。