2013-05-30 126 views
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); 
+2

匆匆一瞥,當你所有的文件都是.png時,你使用'imagecreatefromjpeg'? – dKen

+0

我不確定你的意思是「這不起作用」。也許我錯過了它,但你沒有說哪個部分不工作。 –

+0

他解釋說他將精靈創建成了正確的尺寸,但它全部是黑色的,表明圖像文件本身存在問題。我認爲PHP試圖將它們解釋爲來自他正在使用的函數的JPEG,而不是PNGs – dKen

回答

0

哇...所以,是的,我已經正確設置的「上傳」文件夾的權限,但$ newimg試圖在根直接(非777),這是爲了節省爲什麼它似乎是失敗。

當然,在開始工作之後,我確實設法再次打破它(試圖讓背景變成白色而不是黑色,但並不奇怪),但我相信我會最終實現它!

感謝您的幫助!