2013-03-03 45 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