第一个代码。保存的缩略图在文件夹中,文件类型完美,大小完美,但缩略图为黑色。
正如我所看到的,问题在这里附近: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
所以,你应该得到一些错误信息,或者如果你禁用显示它们,你会得到黑色图像…