使用php从本地临时文件中读取图像

时间:2013-09-30 07:17:01

标签: php image

场景:之前我正在直接读取图像的网址,并将图像调整为4种不同的大小。但是我有执行时间。现在我读取了url并将其复制到一个临时文件夹中,并将本地临时文件夹中的图像传递给imagecreatefromjpeg()。

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);
 }
 }

错误:图像正确保存在临时文件夹中。但是在目标文件夹中创建了所有尺寸的图像,但图像看起来只是黑色。 (没有获得实际图像)。我想从本地读取文件有一些问题。 有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果您尝试读取JPG文件以外的文件,则只返回黑色图像, 因此,在阅读图片时,请检查您的文件确实具有哪种文件类型,然后在三者之间调用正确的函数(jpegpnggif)。

答案 1 :(得分:0)

您是否将$width$height设置在任何地方?

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