2013-09-30 58 views
0

情景:早些時候,我直接讀取圖像的url並將圖像大小調整爲4種不同的大小。但我有執行時間。現在我讀取url並將其複製到臨時文件夾中,並將本地臨時文件夾中的圖像傳遞給imagecreatefromjpeg()。使用php從本地臨時文件中讀取圖像

protected static function saveImage($row,$url){ 
    $percent = 1.0; 
    $imagethumbsize = 200; 
    $db = PJFactory::getDbo(); 
    $details = $db->getImageDetails(); 
    $max = sizeof($details); 
    $tempfilename = "C:".DS."xampp".DS."htdocs".DS."opg-uat".DS."img".DS."temp".DS.$row['CategoryID'].".jpg"; 
    $tempcopy = copy($url,$tempfilename); 
    foreach ($details as $array) { 
    $new_width=$array[2]; 
    $new_height=$array[3]; 
    $newfilename = "C:".DS."xampp".DS."htdocs".DS."opg-uat".DS."img".DS."c".DS.$row['CategoryID']."-".$array[1].".jpg"; 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefromjpeg($tempfilename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagejpeg($image_p, $newfilename); 
} 
} 

錯誤:圖像正確保存在臨時文件夾中。但是在目標文件夾中創建了所有大小的圖像,但圖像只顯示黑色。 (沒有得到實際的圖像)。我猜想從本地讀取文件存在一些問題。 有什麼想法?

在此先感謝。

+0

您是否正在閱讀僅限JPG文件的圖像? –

+0

'$ details = $ db-> getImageDetails();'那怎麼知道要檢查大小的圖像?另外,接下來,'var_dump($ array)'顯示什麼? – Steven

+0

getImageDetails是我從db寫的一個函數。有像圖像需要調整大小的4個尺寸。所以這個尺寸。 – user2553381

回答

0

如果你想讀比JPG文件等文件,它將返回只有黑色的圖像, 因此,雖然讀取圖像,檢查其對文件類型的文件確實有,然後調用三(jpegpng之間的正確功能, gif)。

+0

我從url複製到臨時文件的圖像是JPG。所以臨時文件只有JPG圖像。有更好的建議嗎? – user2553381

+0

檢查http://stackoverflow.com/questions/5382189/imagecreatefromjpeg-returns-a-black-image-after-resize –

0

您是否在任何地方設置了$width$height

$width = imagesx($image); 
$height= imagesy($image); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
+0

非常感謝。我沒有設置原始寬度和高度。抱歉 – user2553381

相關問題