我的第一个代码不起作用,第二个代码不起作用,但它们几乎相同。如何找到黑色缩略图的原因?
Posted
技术标签:
【中文标题】我的第一个代码不起作用,第二个代码不起作用,但它们几乎相同。如何找到黑色缩略图的原因?【英文标题】:My first code doesn't work, the second does but they're almost the same. How to find ther reason of the black thumbnails? 【发布时间】:2014-05-08 10:27:33 【问题描述】:这是第一个代码。保存的缩略图在文件夹中,文件类型完美,大小完美,但缩略图是黑色的。
正如我所见,问题就在附近: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、print_r、var_dump,但一切似乎都很正常。
【问题讨论】:
在标题中你说第一个代码块有效。在问题中,您说第二个代码块有效。是哪个? 谢谢。第二个有效,第一个无效。 【参考方案1】:你的问题解决了吗? 如果没有,您可以在这里查看:
在这一行中,您使用某个名称保存图像
move_uploaded_file($ideiglenes, "../kepek/nagykepek/$nev.$kiterjesztes");
^ //important
还有名字,就像
nameimg..jpg
^
并且,您使用此行来调用图像:
$picture="../kepek/nagykepek/$nev$kiterjesztes";
^ //no dot here
最后一行调用一张图片
nameimg.jpg
所以,您应该会收到一些错误消息,或者如果您禁用显示它们,您将获得黑色图像...
【讨论】:
我修好了,但问题是标题。我仍然不知道它有什么问题,但是我删除了标题行并且它起作用了。后来我注意到这两个点,但它们不是问题,因为第一个点是图像名称的最后一个字符。无论如何我纠正了它,但谢谢你:)以上是关于我的第一个代码不起作用,第二个代码不起作用,但它们几乎相同。如何找到黑色缩略图的原因?的主要内容,如果未能解决你的问题,请参考以下文章
我的 CustomDeserializer 类在同一类的第二个字段上第二次不起作用
Swift UrlSession 在 UrlSession 中不起作用
从 TableViewController 到嵌入在 NavController 中的第二个 TVC 的 performSegueWithIdentifier 不起作用