2013-03-03 77 views
2

编辑:PHP将矩形(图片)分成网格?

有没有办法绕开像素化元素周围?如果我有一个网格可以说100x100 - 那么像素变得非常小,你可以看到图像排序。所以我想混合像素化的部分。任何想法?


我想使用PHP将图像分成一个平等的网格,以便我可以像素化成偶数部分。

它与某种游戏有关。有一个用户上传的图像,我希望它被分成x个块(用户选择应该有多少个块),然后每个块都会像素化。当其他用户完成某个任务时 - 显示像素化块的一部分,直到所有像素化部分都消失,并且剩下原始图像。我真的不在乎网格元素是正方形还是矩形 - 我只是希望它们是平坦的。

由于我的出发点,我用在这个问题上PHP image pixelate?

答案要确定x和y的像素大小,我使用这个公式:

$gridElements = 9; 
$pixelate_x = $width/sqrt($gridElements); 
$pixelate_y = $height/sqrt($gridElements); 

我注意到当使用一个平方根为整数的数字时 - 我得到一个更均匀的网格..但它并不完美。

当用9块网格尝试,并使用1160x680图像,我得到如下:

Image 1

它可能会出现连看,但最后一行比前2大行。

当我把它扩展到16,差别还是比较明显的

enter image description here

和尝试当400元网格(20×20)出现在第21行。

enter image description here

所以..它不工作得非常好,我也想在网格均匀。有没有人知道如何做到这一点?

+0

看起来这实际上是第20行,而不是21? – FoolishSeth 2013-03-03 14:55:18

+0

你必须检查'image_height/number_of_vertical_blocks'是否为'整数',这对4x4或20x20应该不是问题......你确定你的image_height' = 680吗? – michi 2013-03-03 14:56:03

+0

对不起,我正在计算另一次尝试..是第20行被剪切:/ 是的图像高度是680,您可以复制图像URL并在新标签中打开它。 – Matt 2013-03-03 15:14:18

回答

1

这是因为1160并没有真正地自我分配,甚至是3(即使用3x3网格也不相等)。在这里你最大的敌人是整数

更新:此pastie这里: http://pastie.org/private/skmjhgitfpljgohuehymea

可以告诉你,你可以怎么做。忽略下面我的评论中给出的那个。这段代码更具可读性

+0

嗯,我已经尝试使用宽度和高度的平方根等于一个整数,所以我的新图像大小是1156 x 676,但我仍然有相同的中断问题 – Matt 2013-03-03 15:24:41

+0

试试这个: http:// pastie。 org/6371547 它首先调整图像的大小,然后使用整数像素化对其进行迭代。 注释掉了一些行,在我看来,你甚至可以从那里删除一些代码;) – janmyszkier 2013-03-03 16:00:28

+0

非常感谢你!它的工作非常好!我没有想过裁剪图像:)非常感谢 – Matt 2013-03-03 19:33:16