2012-09-22 79 views
0

我想用PHP创建照片拼贴。我创建了一个测试代码在我的本地如下:如何为php文件输出创建图像

<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); 
?> 

它产生的,我想要的输出,但现在我希望用户可以下载它作为一个图像文件。我该怎么做?

回答

1

如果你想,你必须创建使用类似PHP的GD库一个新的空白图像和您的图像定位到的,而不是印刷和使用HTML定位他们/ CSS

(我相信我读的地方,在未来,你将能够在HTML5画布上显示HTML/CSS,如果这是真的,你将能够使用它提取图像,但现在我不认为这将是可能的)

+0

谢谢jeroen我会尝试gd库,但它有点痛苦的使用它。我正在考虑使用imagick,但我不知道如何安装和使用它。 –

1

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

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

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

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