2013-09-30 30 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

相关问题