0

我现在遇到了一个非常棘手的问题:我的数据库中保存了一个 blob-Picture。现在,我想把它分成 9 个部分(比如井字棋网格),然后我想把那个隐藏在右边。现在我想以随机顺序显示这 8 个部分,以便您可以移动它们并解决难题(移动可以用 javascript 解决)。

如何制作 php 功能?是否有现有的功能?

谢谢帮助;)

4

2 回答 2

2

您可以使用 GD 库。有一个函数imagecopy() http://www.php.net/manual/en/function.imagecopy.php,您可以在其中复制图像的各个部分。例如,如果您有 90x90 像素的图像,则必须使用 0,0,30,30 来调用它,以便获得第一个正方形。将这些部分保存为单独的图像或直接放入浏览器中,然后您只需要以适当的方式操作它们 [这里:拼图求解器]。

于 2011-05-20T22:40:58.547 回答
2

好的,这将是 JavaScript 和 PHP 的组合,能够在 PHP 中拆分图像并不难,但您必须记住,您需要对文件进行一些组织,以便 JavaScript 知道它们应该进入的顺序成为一个完整的谜题。

与其分割图像本身,不如使用数学方法对其进行切片。

        1     2     3 
     -------------------
   1 |     |     |     |
     -------------------
   2 |     |     |     |
     -------------------
   3 |     |     |     |
     -------------------

好的,所以图像是 300 x 300 像素,您需要将宽度和高度除以所需的图像数量除以 2,例如:

$ImagesRequired    = 9;
$GlobalImageWidth  = 900;
$GlobalImageHeight = 900;

$EachImageWidth  = $GlobalImageWidth / ($ImagesRequired / 2);
$EachImageHeight = $GlobalImageHeight / ($ImagesRequired / 2);

这两个值都应该是 66~ 像素,然后您将在图像周围移动,使用裁剪来获取图像的块。

for($x=0;$x<=$GlobalImageWidth;$x = $x+=$EachImageWidth)
{
}

查看上面的图表,您是否会按增量顺序拍摄图像,以便累积以下尺寸。

  • 1.1 = 0 x 66.6
  • 1.2 = 0 x 133.33
  • 1.3 = 0 x 196.66
  • 2.1 = 66.6 x 66.6
  • 2.2 = 66.6 x 133.33
  • 2.3 = 66.6 x 196.66
  • ...

所以现在您已经计算了每个图像应该被裁剪的尺寸,您将使用 GD 或 Imagik 库对图像进行切片,创建一个图像数组,然后您可以将其存储在缓存中。

上述内容可能不是 100% 正确,因为它已经很晚了,我不是数学或图像处理方面的专家,但希望这能让你开始,也看到在 Imagik 和图像处理中完成的一些伟大的工作,请参阅以下链接,它应该会有所帮助启发你。

丑陋的马赛克

于 2011-05-20T23:26:52.640 回答