php输出机构图,用PHP绘图功能在网站上输出图片

这篇博客介绍了如何利用PHP的绘图功能将文字转换为图片,并展示了如何通过设置伪静态规则来实现更友好的URL。示例代码演示了从矢量字库获取数据并生成PNG图片的过程,同时提供了Apache重写规则来实现类似‘你好.png’的文件名。此外,还提及了生成的图片可以用于搜索引擎优化。
摘要由CSDN通过智能技术生成

我们的很多信息查询网站基本上都是提供纯文字内容,没有图片,只有少数网站(例如字典)有图片、音频素材我们才能在网站上提供。

其实PHP是有绘图功能的,可以根据文字内容生成需要的图片,我们去年曾经在一个繁体字库网站尝试了PHP生成图片,是可行的,但后期一直没有推广运用,最近又把这个事情重拾起来,进行了尝试,下面是一个简单的从矢量字库获取数据生成图片的PHP片段例子ziku_ziti.php:

header("Content-type: image/png");

if (isset($_GET['width'])) {

$width = $_GET['width'];

} else {

$width = 64;

}

if (isset($_GET['height'])) {

$height = $_GET['height'];

} else {

$height = 64;

}

if (isset($_GET['font'])) {

$font = $_GET['font'];

} else {

$font = '';

}

if (isset($_GET['text'])) {

$text = $_GET['text'];

} else {

$text = '你好';

}

$count = mb_strlen($text);

if ($count > 1) $width = 64*$count;

// Create the image

$im = imagecreatetruecolor($width, $height);

// Create some colors

$white = imagecolorallocate($im, 255, 255, 255);

$grey = imagecolorallocate($im, 128, 128, 128);

$black = imagecolorallocate($im, 0, 0, 0);

imagefilledrectangle($im, 0, 0, $width, $height, $white);

// The text to draw

//$text = '你好';

// Replace path by your own font path

switch($font) {

case 'TwSung':

$font_path = '/ziku/Fonts/TW-Sung-98_1.ttf';

break;

case 'TWKai':

$font_path = '/ziku/Fonts/TW-Kai-98_1.ttf';

break;

default:

$font_path = '/ziku/Fonts/TW-Sung-98_1.ttf';

}

// Add some shadow to the text

//imagettftext($im, 60, 0, 11, 21, $grey, $font, $text);

// Add the text

$size = $width/$count*7.5/10;

$x = 0;

$y = $height*8/10;

imagettftext($im, $size, 0, $x, $y, $black, $font_path, $text);

// Using imagepng() results in clearer text compared with imagejpeg()

imagepng($im);

imagedestroy($im);

?>

用上面这个就可以生成图片了,访问网站网站类似是这样:

https://www.example.com/ziku_ziti.php?text=你好&font=TWKai

但这不算一个标准图片,可以用apache rewrite来实现伪静态,使这个网址看上去像这样:

https://www.example.com/ziku_ziti.php?text=你好&font=TWKai

下载可以保存为“你好.png”这样的文件名,而不是像前者保存的文件名成了“ziku_ziti.png”。

伪静态的设置办法是在https.conf或者.htaccess里面这样设置:

RewriteRule ^tw_sung/(.*)\.png$ ziku_ziti.php?text=$1&font=TWSung

RewriteRule ^tw_kai/(.*)\.png$ ziku_ziti.php?text=$1&font=TWKai

就可以实现。然后在html页面中就可以放置下面的代码来让用户访问图片:

你好 (楷體矢量字庫)

f8556d66b0cf4e4c726d071b13b2925b.png

在amp或者mip版本中我们是通过模板文件对以上图片html代码进行正则表达式替换来实现需要的图片文件代码。

上面只是一个最简单的文字转图片,PHP还有很多其它绘图函数,例如画线、画框、画圆、复制粘贴图片等,我们还可以用来在其它查询网站生成更复杂的图片。更多可以参考《GD 和图像处理 函数》、《PHP图像生成和处理》。

生成了图片后还可以提交给搜索引擎:

另外记录几个要点:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值