0

我想用 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);
?>

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

4

2 回答 2

1

如果您愿意,您将不得不使用 php 的 GD 库之类的东西创建一个新的空白图像,并将您的图像定位到其中,而不是使用 html/css 打印和定位它们

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

于 2012-09-22T09:00:57.387 回答
1

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

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

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

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

于 2012-09-22T10:23:22.463 回答