我的第一个代码不能工作,第二个代码可以,但它们几乎是一样的.如何找到黑色缩略图的原因


My first code doesn't work, the second does but they're almost the same. How to find ther reason of the black thumbnails?

第一个代码。保存的缩略图在文件夹中,文件类型完美,大小完美,但缩略图为黑色。

正如我所看到的,问题在这里附近:header('Content-Type: image/jpeg');在这行之前,一切正常。

if (isset($_POST['rendben'])) {
    $tipusok = array("image/jpeg", "image/gif", "image/png");
    $bejovonev=mysql_real_escape_string(strip_tags(trim($_POST['nev'])));
    if (in_array($_FILES['kep']['type'], $tipusok) && $_FILES['kep']['size'] < 2000000 && (!empty($bejovonev)) ) {
        switch ($_FILES['kep']['type']) {
            case "image/jpeg": $kiterjesztes = ".jpg"; break;
            case "image/gif":  $kiterjesztes = ".gif"; break;
            case "image/png":  $kiterjesztes = ".png"; break;
        }
        $nev = ekezettelenito($bejovonev);
        $eredeti    = $_FILES['kep']['name'];
        $ideiglenes = $_FILES['kep']['tmp_name'];
        $tipus      = $_FILES['kep']['type'];
        $hiba       = $_FILES['kep']['error'];
        $meret      = $_FILES['kep']['size'];
        $kimenet = "<p>A fájl tulajdonságai:</p>
        <ul>
            <li>név: {$nev}</li>
            <li>típus: {$tipus}</li>
            <li>ideiglenes név: {$ideiglenes}</li>
            <li>hiba száma: {$hiba}</li>
            <li>mérete: ".round($meret/1024)." KByte</li>
        </ul>'n";
        move_uploaded_file($ideiglenes, "../kepek/nagykepek/{$nev}.{$kiterjesztes}");
        //Thumbnails
        $new=142;
        $picture="../kepek/nagykepek/{$nev}{$kiterjesztes}";
            switch ($kiterjesztes) {
            case ".jpg": $orig=imagecreatefromjpeg($picture); break;
            case ".gif":  $orig=imagecreatefromgif($picture); break;
            case ".png":  $orig=imagecreatefrompng($picture); break;
        }
        list($width, $height) = getimagesize($picture);
        $crop= ($width>$height) ? $height: $width; 
        $dest= imagecreatetruecolor($new,$new);
        imagecopyresampled($dest, $orig, 0, 0, 0, 0, $new, $new, $crop, $crop);
        switch ($kiterjesztes) {
            case ".jpg": header('Content-Type: image/jpeg'); break;
            case ".gif": header('Content-Type: image/gif'); break;
            case ".png": header('Content-Type: image/png'); break;
        }
        switch ($kiterjesztes) {
            case ".jpg": imagejpeg($dest,"../kepek/kiskepek/{$nev}{$kiterjesztes}"); break;
            case ".gif": imagegif($dest,"../kepek/kiskepek/{$nev}{$kiterjesztes}"); break;
            case ".png": imagepng($dest,"../kepek/kiskepek/{$nev}{$kiterjesztes}"); break;
        }
    }
    else {
        $kimenet = "<p><em>Érvénytelen fájlformátum vagy fájlnév!</em></p>'n";
    }
}
//Output
$konyvtar = "../kepek/kiskepek/";
$tartalom = scandir($konyvtar);
$tipusok  = array(".jpg", ".gif", ".png");
$kepek    = "";
foreach ($tartalom as $fajl) {
    if (in_array(substr($fajl, -4), $tipusok)) {
        $kepek.= "<img src='"{$konyvtar}{$fajl}'" alt='"{$fajl}'" />'n";
    }
}
?><!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php if (isset($kimenet)) print $kimenet; ?>
<form method="post" action="" enctype="multipart/form-data">
    <p>Név:<br />
    <input type="text" id="nev" name="nev" /></p>
    <p>Kép:<br />
    <input type="file" id="kep" name="kep" /></p>
    <p><input type="submit" id="rendben" name="rendben" value="Rendben" />
    </p>
</form>
<?php print $kepek; ?>
</body>
</html>

这是我的第二个代码。它适用于所有三种图像类型。

<?php  
//$nev="asd2.jpg";  
//$nev="asd2.png";  
$nev="asd2.gif";  
$new=142;  
//$picture="111.jpg";  
//$picture="asdasd.png";  
$picture="xx.gif";  
//$orig=imagecreatefromjpeg($picture);  
//$orig=imagecreatefrompng($picture);  
$orig=imagecreatefromgif($picture);  
list($width, $height) = getimagesize($picture);  
$crop= ($width>$height) ? $height: $width;   
$dest= imagecreatetruecolor($new,$new);  
imagecopyresampled($dest, $orig, 0, 0, 0, 0, $new, $new, $crop, $crop);  
//header('Content-Type: image/jpeg');  
//header('Content-Type: image/png');  
header('Content-Type: image/gif');  
imagejpeg($dest,"../kepek/kiskepek/{$nev}");  
?>  

我真的不知道问题出在哪里。我怎样才能找到它?我尝试打印,print_r, var_dump,但一切似乎正常。

你的问题解决了吗?如果没有,您可以在这里查看:

在这一行中,您将图像保存为某个名称

move_uploaded_file($ideiglenes, "../kepek/nagykepek/{$nev}.{$kiterjesztes}");
                                                          ^  //important

和名称,就像

 nameimg..jpg
         ^

,使用这一行调用图像:

$picture="../kepek/nagykepek/{$nev}{$kiterjesztes}";
                                   ^  //no dot here

最后一行调用图像

 nameimg.jpg

所以,你应该得到一些错误信息,或者如果你禁用显示它们,你会得到黑色图像…