imagesx() und imagesy() funktioniert nicht
Ich versuche, um eine Miniaturansicht. Und die php-Funktion funktioniert. Ich habe thumbnails gemacht mit ihm. Jedoch, bestimmte Dateien nicht funktionieren. Ich verengt das problem, bin jetzt aber stecken geblieben. Jede Hilfe würde geschätzt werden.
Bilder finden Sie unter http://www.pspsigma.com/image_test.php .Die auf der linken Seite nicht funktionieren. Die auf der rechten Seite wird. Beide sind .jpg. Beide sind ursprünglich hochgeladen über ein Formular, aber verändert wurden, die für stack-überlauf, so dass die Funktion funktioniert auch ohne Formular.
Html ist ein einfaches Skript mit file-input-set-Aktion, um dieses .php-Datei
php:
<?php
$the_name= $_FILES['userfile']['name'];
$tmpname = $_FILES['userfile']['tmp_name'];
$size="1000";
$save_dir="images/thumbs/";
$save_name=$the_name;
$maxisheight= "100";
function img_resize( $tmpname, $size, $save_dir, $save_name, $maxisheight)
{
$save_dir .= ( substr($save_dir,-1) != "/") ? "/" : "";
$gis = getimagesize($tmpname);
$type = $gis[2];
switch($type)
{
case "1": $imorig = imagecreatefromgif($tmpname); break;
case "2": $imorig = imagecreatefromjpeg($tmpname);break;
case "3": $imorig = imagecreatefrompng($tmpname); break;
default: $imorig = imagecreatefromjpeg($tmpname);
}
//check if imorig is set
if (!isset($imorig)) {
echo " imorig is not set, ";
}
//I tried setting $x and $y from the width and height of the original file. Still didn't work.
//although the variables were set.
//this makes me think the problem is with the imagecreatefromjpeg function.
list($width, $height, $type, $attr) = getimagesize($tmpname);
echo "getimagesize width= " . $width . ", ";
echo "getimagesize height= " . $height . ", ";
//possible solution, didn't work
//$x = $width;
//$y = $height;
//This is the problem
$x = imagesx($imorig);
$y = imagesy($imorig);
//check that x and y are set
if (!isset($x) && !isset($y)) {
echo" x and y are not set,";
}
elseif (!isset($x)) {
echo" x is not set";
}
elseif (!isset($y)) {
echo" y is not set";
}
else {
echo "|x= " . $x . " |";
echo "|y= " . $y . " |";
}
$woh = (!$maxisheight)? $gis[0] : $gis[1] ;
if($woh <= $size)
{
$aw = $x;
$ah = $y;
}
else
{
if(!$maxisheight){
$aw = $size;
$ah = $size * $y / $x;
} else {
$aw = $size * $x / $y;
$ah = $size;
}
}
$im = imagecreatetruecolor($aw,$ah);
if (!$im) {
echo " failure: no im variable. ";
}
else {
if (imagecopyresampled($im,$imorig , 0,0,0,0,$aw,$ah,$x,$y)) {
if (!imagejpeg($im, $save_dir.$save_name)) {
echo "failure";}
else {
echo "success";}
}
else {
echo" didn't copy resampled";
}
}
}
img_resize( $tmpname, $size, $save_dir, $save_name, $maxisheight);
?>
Wenn ich wählen Sie die rush vader.jpg Datei und legen Sie es über diese Funktion. es echo ist, dass x und y festgelegt sind, zeigt Ihre Werte und Erfolg.
Wenn ich wählen Sie die calm.jpg es wird echo "Fehler: keine im-variable." und die $x und $y Variablen, nicht Werte. Wenn ich weisen Sie den Variablen x und y den Werten von getimagesize($tmp_name) schallt es "nicht kopieren "resampled".
Ist dies ein problem, mit dem tatsächlichen Bild? oder gibt es eine Möglichkeit, ich kann den code ändern, so dass jedes Bild funktioniert?
DANKE!!!!!
UPDATE
Echo ich würde jede variable, um zu sehen, wenn etwas aus war. Das problem scheint in der Art. Die Art der Ausgabe 6, die aus dem php Handbuch, Kommentare, fand ich heraus, ist bmp.
Ich verstehe nicht, wie das sein könnte, wenn die Erweiterung .jpg... Wenn dies der Fall ist. Ist ein Weg, um den Typ zu ändern, um es entweder .jpg -, .png, oder .gif?
- Könnten Sie wählen
calm.jpg
und vorimagecreatetruecolor
tunvar_dump($aw); var_dump($ah);
. So können wir verstehen, was passiert ist. - Die Funktion gar nicht so weit kommen. Es nicht rund, wo $x und $y sind gesetzt. Obwohl, würde das var_dump einen gewissen nutzen? Was tut es? und ich verstehe nicht, was du meinst, könnte ich wählen calm.jpg?
- Wenn Sie Lesen, PHP Seite
imagecreatetruecolor
es gibtfalse
auf Fehler. Diese Funktion schlägt fehl, weil entweder der Parameter oder die GD-Bibliothek. Da Sie sagen, dass es funktioniert für einige Bilder, das bedeutet, dass es kein problem über die GD-Bibliothek. Also, das einzige problem das ich sehe ist, dass diese Funktionen Parameter nicht den entsprechenden Werten. Durch die Verwendungvar_dump
können wir sehen, was diese Parameter als Wert und verstehen, was ist der Grund, der wirkliche problem. Sie sagte: "Wenn ich wählen Sie die calm.jpg es wird echo "Fehler: keine im-variable."". Also, was ich sagen will ist, wählen Sie es mal mit diesen codes - Ich wusste nur, dass die und die Werte NULL und NULL. Die volle echo aus dem script "getimagesize Breite= 400, getimagesize Höhe= 563, x und y sind nicht festgelegt, NULL, NULL Fehler: keine im-variable."
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Typ von der Bild calm.jpg 6 das ist ein bmp. Daher die imagecreatefrom... wird nicht funktionieren und $imorig NULL ist. Durch das hinzufügen einer Funktion aus dem php-manual genannt imagecreatefrombmp mit label 6. Die Funktion arbeitet perfecty.
Fügen Sie der Datei:
hinzufügen:
nach
Getestet. und alles funktioniert. Vielen Dank an alle!