我想用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);
?>
它生成了我想要的输出,但现在我希望用户能够将其作为图像文件下载。我该怎么做?
答案 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征税并减慢其响应速度。如果你一次只有几个访问者,那没关系。但除此之外,您的拼贴应该一劳永逸地预先计算,因此服务器不必为每次访问重做作业。