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 vor imagecreatetruecolor tun var_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 gibt false 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 Verwendung var_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."
InformationsquelleAutor Chaky31 | 2013-01-25
Schreibe einen Kommentar