【发布时间】:2021-04-05 06:48:28
【问题描述】:
编辑:
有没有办法将像素化元素混在一起?如果我有一个网格,可以说 100x100 - 那么像素会变得非常小,您可以看到图像。所以我想把像素化的部分弄乱。有什么想法吗?
我正在尝试使用 PHP 将图像划分为相等的网格,以便将其像素化为均匀的部分。
这与某种游戏有关。某个用户上传了一张图片,我希望将它分成 x 个块(用户选择应该有多少块),然后每个块都会被像素化。当其他用户完成某些任务时 - 像素化块的一部分被显示出来,直到所有像素化部分都消失并且您留下原始图像。我真的不在乎网格元素是正方形还是矩形 - 我只是希望它们是均匀的。
作为我的起点,我正在使用这个问题的答案PHP image pixelate?
要确定 x 和 y 像素大小,我使用以下公式:
$gridElements = 9;
$pixelate_x = $width/sqrt($gridElements);
$pixelate_y = $height/sqrt($gridElements);
我注意到,当使用平方根为整数的数字时,我会得到一个更均匀的网格。但它并不完美。
当尝试使用 9 块网格并使用 1160x680 图像时,我得到以下信息:
它可能看起来很均匀,但最后一行比前 2 行大。
当我将其缩放到 16 时,差异非常明显
当尝试 400 个元素的网格 (20x20) 时,会出现第 21 行。
所以 .. 它工作得不是很好,我确实希望网格是均匀的。有谁知道如何做到这一点?
【问题讨论】:
-
看起来实际上是第 20 行,而不是第 21 行?
-
您必须检查
image_height / number_of_vertical_blocks是否为integer,这对于 4x4 或 20x20 应该没有问题...您确定您的image_height= 680? -
是的,对不起,我在计算另一次尝试。是的,第 20 行被剪掉了:/ 是的,图像高度是 680,您可以复制图像 URL 并在新标签中打开它。