Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilder verkleinern geht nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bilder verkleinern geht nicht

    Hallo,

    ich bin leider kein php Profi. Mach das eher nebenbei als Hobby. Ich versuche gerade bei meiner Bildergalerie eine Funktion einzubauen, die die Bilder verkleinert wenn sie eine bestimte größe überschreiten. Geht mir nicht um den Webspace, sondern einfach nur darum, dass das Bild noch angezeigt wird und man nicht scrollen muss. Leider tut sie es nicht und ich weiß so langsam nicht mehr weiter. Ich arbeite dabei mit html templates (phpkit) in welches ich das phpscript integrieren möchte.

    Vielleicht kann sich ja jemand der sich mit php gut auskennt mal meinen code anschauen. Ist bestimmt ein total dummer Fehler:
    PHP-Code:
     <?php 
    error_reporting
    (0); 
    if(!
    defined('pkFRONTEND') || pkFRONTEND!='public'
        die(
    'Direct access to this location is not permitted.'); 

    $picpfad "./images/gallery/jonas/"
    $handle opendir($picpfad); 
    $lv 1
    while(
    $file readdir($handle)){ 
    if(
    $file != "." && $file != ".."){ 
    if(
    preg_match("/.(jpg|gif|png)$/i"$file)){ 
    $pic[$lv] = $file
    $lv++; 



    closedir($handle); 

    // Begin meiner Verkleinerungsfunktion 

    $size = ($picpfad.$pic[$_GET['display']]); // Bild einlesen 
    $imagewidth $size[0]; // Breite auslesen 
    $imageheight $size[1]; // Höhe auslesen 
    $maxwidth "340"
    if (
    $imagewidth $maxwidth
      { 
      
    $imageprop=$maxwidth/$imagewidth
      
    $imagevsize$imageheight*$imageprop
      
    $imagewidth=$maxwidth
      
    $imageheight=ceil($imagevsize); 
      } 

    // Ende meiner Verkleinerungsfunktion 

    $displaypictures count($pic); 
    $piceigenschaften getimagesize($picpfad.$pic[$_GET['display']]); 
    if(!isset(
    $_GET['display'])) $_GET['display'] = 1
    if((
    $displaypictures $displaypictures)+!= $_GET['display']) $helper0 ="<a href=\"include.php?path=galleryjonas.php&display=".($_GET['display']-1)."\" title=\"zur&uuml;ck\">« zur&uuml;ck</a>&nbsp;&nbsp;"
    if(
    $displaypictures != $_GET['display']) $helper1 "<a href=\"include.php?path=galleryjonas.php&display=".($_GET['display']+1)."\" title=\"weiter\">weiter »</a>"
    $helper "".$_GET['display']." von ".$displaypictures." &nbsp;"
    $helper2 "<img src=\"".$picpfad.$pic[$_GET['display']]."\" ".$piceigenschaften[3]." width='$imagewidth' height='$imageheight' alt=\"Picture ".$_GET['display']." / ".$displaypictures."\" />"
    $helper3 "<a href=\"".$picpfad.$pic[$_GET['display']]."\" rel=\"lightbox\">"
    eval(
    "\$site_body.= \"".pkTpl("galleryjonas")."\";"); 
    ?>
    leider funktioniert das irgendwie nicht. Zur Info: DIe Ausgabe wird als Variable ($helper2 und $helper3) an ein html Template übergeben. Vielleicht liegt es auch daran.

    Ich hab die Variablen $imagewidth und $imageheight mal mit ausgeben lassen. Die geben mir . und / als Wert wieder.

    Wenn ich nur die verkleinerungsfunktion in einer eigenen php seite aufrufe und mit festen Pfaden und einem festen Bild arbeite, geht es siehe unterer Code. Nur da geb ich per echo ja direkt auf der php seite aus. Weiß jemand wo der Fehler ist?
    PHP-Code:
     <?php 
    error_reporting
    (1); 
    $size GetImageSize ("testbild.jpg"); // Bild einlesen 
    $imagewidth $size[0]; // Breite auslesen 
    $imageheight $size[1]; // Höhe auslesen 
    $maxwidth "400"
    if (
    $imagewidth $maxwidth
      { 
      
    $imageprop=$maxwidth/$imagewidth
      
    $imagevsize$imageheight*$imageprop
      
    $imagewidth=$maxwidth
      
    $imageheight=ceil($imagevsize); 
      } 
    echo 
    "<a href=\"testbild.jpg\"rel=\"lightbox\"><img src=\"testbild.jpg\" width=\"$imagewidth\" height=\"$imageheight\"></a>"// Bild anzeigen 
    echo "$imagewidth"
    echo 
    "$imageheight"
    ?>

  • #2
    Hi.

    Also ich bin mir nicht sicher, aber müsste es nicht:
    PHP-Code:
    $maxwidth 400
    statt
    PHP-Code:
    $maxwidth "400"
    heißen?

    So wie du es stehen hast erkennt er es doch als String oder?
    Kann natürlich sein, dass das automatische Casten das übernimmt.

    Kleiner Tip noch:
    Schreib am besten an den Anfang von jedem Script:
    error_reporting(E_ALL);

    Kommentar


    • #3
      Also das mit dem Wert als String sollte trotzdem funktionieren. Sollte automatisch von PHP gecastet werden.

      Und das error_reporting(E_ALL) sollte man nicht in jedes Script einbauen, sondern nur in die, die man offline laufen lässt zum Debuggen oder was weiss ich.

      Ich kann dir sagen, wo der Fehler in deinem Script liegt, nämlich in dieser Zeile:
      PHP-Code:
      $size = ($picpfad.$pic[$_GET['display']]); // Bild einlesen 
      Da fehlt eindeutig die Funktion getimagesize(), die du sonst auch benutzt (die Klammern stehen ja schon da, nur der Funktionsname nicht ^^). Deshalb steht da auch irgendwas wie "." oder "/" drin und nicht eine Zahl. Da nützt auch das Casten von "400" nichts (und wird auch nicht gemacht), weil der Vergleichswert ja auch ein String ist.

      Kommentar


      • #4
        danke

        Cool, danke. Genau das wars. Da hätt ich auch selber drauf kommen können. Hab den code ja auf der Testseite richtig gehabt.

        Gab aber auch noch einen anderen Fehler und zwar hatte ich eine Variable für die Bildgröße in meinem <img>
        PHP-Code:
        ".$piceigenschaften[3]." 
        Daher hat er die Größe des Bildes genommen und die verkleinerte hinten rangehängt. Nur dass ja nur der erste Wert zählt.
        Außerdem habe ich 2 mal getimagesize vergeben. einmal
        PHP-Code:
        $piceigenschaften getimagesize($picpfad.$pic[$_GET['display']]); 
        und einmal hier
        PHP-Code:
        $piceigenschaften getimagesize($picpfad.$pic[$_GET['display']]); 
        nur dass da halt das getimagesize fehlte

        Danke für die Antwort, jetzt funktioniert es. Allerdings nicht bei dem ersten Bild. Aber da komm ich bestimmt noch hinter warum das da nicht geht. Hab ja bisher erst bei einer Kategorie dieses Script eingebaut.

        Kommentar


        • #5
          Was meinst du mit "nicht bei dem ersten Bild"? Verkleinerst du gleich mehrere Bilder? Und beim ersten passiert einfach nichts oder wie? Das Script sieht ja eher so aus als ob du nur ein bestimmtes Bild verkleinern willst?!?!

          Kommentar


          • #6
            Bei meinem ersten Post hab ich 2 Scripte gepostet. Das erste Script arbeitet mit mehreren Bildern. Dabei wird die Anzahl der Bilder gezählt, die in dem Bilderordner sind und diese werden dann dargestellt. Mit zurück und weiter kann man dann zu den einzelnen Bildern wechseln.

            Beim zweiten Script (testscript) hab ich das ganze mit nur einem Bild getestet, weil ich die Vermutung hatte es liegt an den Variablen Bildern.

            Und die erste Variante ist eben die, die ich einsetze und dabei werden alle Bilder verkleinert bis auf das erste. Wenn ich mir den HTML Quellcode anschaue, dann sehen die Werte für die Größe beim ersten Bild so aus:
            Code:
            width='' height=''
            Das heißt es werden keine verkleinerten Werte eingetragen obwohl das Bild größer ist. Weiß jemand warum?

            Kommentar


            • #7
              Die Variable lv initialisierst du mit 1, Arrays fangen aber beim Index 0 an. ^^

              Kommentar


              • #8
                Ohmg ja stimmt. Brauchte ja im Grunde nur die Funktion der Bildgrößenberechnung hinter die Zählfunktion setzen.

                Aber das Problem sitzt mal wieder vor dem Computer. Wenn man nur zur Hälfte weiß was für funktionen man da reinkopiert....

                Naja try and error

                Jetzt gehts auf jeden Fall.

                Vielen Dank

                Kommentar

                Lädt...
                X