1
我有一個文件夾中有5個圖像,我想通過PHP編譯成一個垂直圖像精靈。我已經通過所有得到的數據項環,並將其保存到一個數組:PHP創建圖像精靈
Array
(
[0] => Array
(
[location] => uploads/test1/android.png
[height] => 175
[width] => 175
[vertical] => 0
)
[1] => Array
(
[location] => uploads/test1/autocad.png
[height] => 225
[width] => 225
[vertical] => 175
)
[2] => Array
(
[location] => uploads/test1/betting.png
[height] => 512
[width] => 512
[vertical] => 400
)
[3] => Array
(
[location] => uploads/test1/calculator.png
[height] => 200
[width] => 200
[vertical] => 912
)
[4] => Array
(
[location] => uploads/test1/ccleaner.png
[height] => 256
[width] => 256
[vertical] => 1112
)
)
隨着垂直爲起始y座標的形象。這是我目前的PHP:
$background = imagecreatetruecolor($horizontal, $vertical);
$newimg = "sprite.jpg";
foreach($images as $i)
{
$tmp = imagecreatefromjpeg($i['location']);
imagecopy($background, $tmp, 0, $i['vertical'], 0, 0, $i['width'], $i['height']);
imagedestroy($tmp);
}
imagejpeg($background, $newimg);
$ images是上面的數組。當我創建數組時,我計算了水平和垂直變量(我已經驗證它們是正確的)。我已經嘗試了一些PHP的東西,並一度設法創建了一個正確大小(512x1368)的黑色圖像,但這與我來的時間差不多。任何想法爲什麼這不起作用?
下面是更新後的代碼:
$background = imagecreatetruecolor($horizontal, $vertical);
$newimg = "sprite.png";
foreach($images as $i)
{
$tmp = imagecreatefrompng($i['location']);
imagecopy($background, $tmp, 0, $i['vertical'], 0, 0, $i['width'], $i['height']);
imagedestroy($tmp);
}
imagepng($background, $newimg);
我甚至已經嘗試註釋掉「imagedestroy」,看看是否是罪魁禍首。該代碼不會生成任何內容。零。文件夾和圖像的權限都是777.在這一點上我不確定下一個嘗試的方向。有什麼想法嗎?
也試過「imagecreatefromstring」,這也沒有結果(字面上沒有文件正在創建)。
$frame = imagecreatefromstring(file_get_contents($i['location']));
imagecopy($background, $frame, 0, $i['vertical'], 0, 0, $i['width'], $i['height']);
imagedestroy($frame);
匆匆一瞥,當你所有的文件都是.png時,你使用'imagecreatefromjpeg'? – dKen
我不確定你的意思是「這不起作用」。也許我錯過了它,但你沒有說哪個部分不工作。 –
他解釋說他將精靈創建成了正確的尺寸,但它全部是黑色的,表明圖像文件本身存在問題。我認爲PHP試圖將它們解釋爲來自他正在使用的函數的JPEG,而不是PNGs – dKen