PHP gd从生成的图像制作缩略图

时间:2016-02-26 11:41:14

标签: php png thumbnails gd

我有一个php脚本cakeChart.php,它正在生成简单的蛋糕。

$image = imagecreatetruecolor(100, 100);

$white    = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$gray     = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
$navy     = imagecolorallocate($image, 0x00, 0x00, 0x80);
$red      = imagecolorallocate($image, 0xFF, 0x00, 0x00);

imagefilledarc($image, 50, 50, 100, 50, 0, 45, $navy, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 45, 75 , $gray, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 75, 360 , $red, IMG_ARC_PIE);


header('Content-type: image/png');
imagepng($image);
imagedestroy($image);

在文件createThumb.php中,我想从cakeChart.php加载生成的图片。 有点像(我知道这很糟糕):

$pngImage = imagecreatefrompng("pieChart.php");

我想制作此图片的缩略图。现在这个php文件的唯一参考是这个

<a href="pieChart.php" target="blank">PHP pie chart</a><br>

但是我想用tumb替换这个文本,将在createThumb.php中生成whitch。是否可以使用cakeChart.php生成图像,然后使用createThumb.php将其转换为缩略图?

1 个答案:

答案 0 :(得分:0)

您需要另一个调用cakeChart.php的脚本并调整其大小,如下所示:

<?php
$src = imagecreatefrompng('http://example.com/cakeChart.php');

$width = imagesx($src);
$height = imagesy($src);
// resize to 50% of original:
$new_width = $width * .5;
$new_height = $height * .5;

$dest = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($dest, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

header('Content-type: image/png');
imagepng($dest);
imagedestroy($dest);
imagedestroy($src);

然后您的HTML会将该文件作为图像源引用:

<a href="pieChart.php" target="blank">
    <img src="http://example.com/cakeChartThumb.php" alt="PHP pie chart">
</a>

虽然这会起作用,但它并不能有效利用服务器资源。即使少量页面查看也可能导致服务器CPU使用率飙升并影响性能。您应该真正创建两个文件并将它们保存到磁盘,并像在任何其他图像文件中一样在HTML中引用它们。