如何为php文件输出创建图像

时间:2012-09-22 08:34:22

标签: php css

我想用PHP创建照片拼贴画。我在localhost上创建了一个测试代码,如下所示:

<style type="text/css">
body{background:url('images/Winter.jpg'); }
#collage:after{content:"";clear:both;display:block;}
}

</style>

<?php

ob_start();
$dir = "images";

if($fp = opendir($dir))
{
  while($file = readdir($fp))
  {
    if('jpg'==(pathinfo($file, PATHINFO_EXTENSION)))
    {
      $style = "style='float:left; -webkit-transform:rotate(".mt_rand(2, 30)."deg); border:solid 5px #eee;'";
       $ht = "height='".mt_rand(100, 300)."'";
    echo "<div class='img_div' $style>";
    echo "<img src='$dir/$file' $ht >";
    echo "<div style='background:#eee;font-size:20px;'>hi</div>";
    echo '</div>';
     }
   }
}
closedir($fp);
?>

它生成了我想要的输出,但现在我希望用户能够将其作为图像文件下载。我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果你想要,你必须使用像php的GD库创建一个新的空白图像,并将图像放入其中,而不是使用html / css打印和定位它们

(我相信我读到的某个地方,将来你可以在html5画布上显示html / css,如果这是真的你可以使用它提取图像,但是现在我不认为这将是可能的)

答案 1 :(得分:1)

没有使用新的HTML5画布功能,这将让浏览器完成将马赛克合并为一个单一图像的所有工作(但它是否受到许多浏览器的支持?我真的不知道。),

你也可以使用php的GD库在服务器端创建该图像。那就是,我认为,这是HTML5之前的唯一方式,可能仍然是一段时间内最好的方式(正如我所说,我不知道HTML5实现到底有什么价值)

一个好的起点就在那里:http://php.net/manual/en/ref.image.php(阅读访客的许多例子,在该页面和特定功能的页面上,它们可以是一种有价值的教育)。

现在,这种方法有一个不方便(除了你必须完成整个工作):它会对服务器的CPU征税并减慢其响应速度。如果你一次只有几个访问者,那没关系。但除此之外,您的拼贴应该一劳永逸地预先计算,因此服务器不必为每次访问重做作业。