Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrer Bildergrössen in einem String ändern

Einklappen

Neue Werbung 2019

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

  • Mehrer Bildergrössen in einem String ändern

    Ich hab folgendes Problem:

    Ich hab hier Bilder in einem Text. Nun ist so, dass der Text in einer Tabelle steht, die eine bestimmte breite hat (in meinem Fall 439px).
    Nun kanns ja sein, dass ein Bild breiter als die 439 px ist. In dem Fall soll eine Funktion bzw. Schleife alle Bilder prüfen ob sie größer sind und ggf. verkleinern.

    Das Problem das ich nun hab liegt darin, dass ich ich zwar immer das erst Bild verkleinert bekomm, ich aber nicht weiß wie ich PHP sagen kann, dass es zum nächsten soll...

    Kann mir dabei mal einer bitte helfen?
    Steh irgendwie auf dem Schlauch... Danke schonmal!

    Hier mal der Code. Bitte nicht beschweren darüber, ist nur eben mal so hingeschrieben das überhaupt was funzt und ich die übersicht behalte.
    Code:
    				//Zählt wieviele Bilder vorkommen
    				echo $imganzahl = substr_count($ausgabe, "<img");
    
    				//Wird für jedes Bild ausgeführt
    				for($i=0; $i<$imganzahl;$i++)
    				{
    					//Ermittelt den Bildnamen
    					$imgstring = substr(strstr($ausgabe, '<img'), 10);
    					$pos = strpos ($imgstring, " ");
    					$imgstringneu = substr($imgstring, 0, $pos-1);
    					$size = getimagesize($imgstringneu);
    
    
    					//verringert ggf. die Bildgröße
    					if($size[0] > 439) {
    						$faktor = round($size[0] / 439,2);
    						$size[0] = 439;
    						$size[1] = round($size[1] / $faktor);
    					}
    					else
    					{
    						$size[0]= 100;
    						$size[1]= 100;
    						$mass = "%";
    					}
    
    					//trägt die breite und höhe ein
    					$ausgabe = str_replace("<?=".$imgstringneu."w?>",$size[0].$mass,$ausgabe);
    					$ausgabe = str_replace("<?=".$imgstringneu."h?>",$size[1].$mass,$ausgabe);
    					$ausgabe = str_replace("","",$ausgabe);
    
    				}


  • #2
    Hallo,

    mach das Bild verkleinern doch lieber, während du sie ausgibst, also schon beim <img>-Tag schreiben.

    Zum Beispiel:
    PHP-Code:
    <?php
    function returnSizeAttribute($src$maxWidth)
    {
      if (
    file_exists($src)) {
        
    $size getimagesize($src);
        
    $w size[0];
        
    $h size[1];
        if (
    $w $maxWidth) {
          
    $factor $maxWidth $w;
          
    $w $maxWidth;
          
    $h round($h $factor0);
        }
        return 
    sprintf('width="%u" height="%u"'$w$h);
      }
      return 
    '';
    }
    // Aufruf
    [img]bild.jpg[/img]>
    ?>

    Kommentar


    • #3
      Mhm.. ok, das hab ich vergessen zu erwähnen:

      Die Bilder können extern von Text im Adminbereich hochgeladen werden (Adminbereich ist kleines CMS). Im Text müssen sie später dann nur einen BBCODE (quasi [ img]bild[ /img] eingeben um das Bild einzufügen. Ausserdem können es auch Bilder von externen Seiten sein...

      Das ganze wird dann in die DB gespeichert und später beim auslesen wird der BBCODE in die normalen Tags umgewandelt.

      daher bekomm ich den ganzen text incl. Bilder als String.

      Aber danke trotzdem schon mal...

      Kommentar


      • #4
        PHP-Code:
        <?php
        preg_match
        ("/<img(.*)>/"$ausgabe$matches);
        print_r($matches);
        ?>
        Vielleicht kannst du damit was anfangen.

        Kommentar


        • #5
          Hehe.. danke, ich werds versuchen...
          Bin hier gerade am basteln, vielleicht kann ich das ja gebrauchen bzw. einbauen...

          Kommentar


          • #6
            Du wirst garnicht drum rum kommen schätze ich ^^

            Kommentar


            • #7
              Du kennst mich schlecht...
              Ich mach sowas immer viel viel umständlicher als es sein muss

              So, ich hab jetzt mal was gebastelt, das mal die ganzen Bildernamen rauszieht:

              PHP-Code:
              <?php
                              
              //Zählt wieviele Bilder vorkommen
                              
              $imganzahl substr_count($ausgabe"<img");

                                  
              $imgstring $ausgabe;
                                  
              $imgwert 0;
                              
              //Wird für jedes Bild ausgeführt
                              
              for($i=0$i<$imganzahl;$i++)
                              {
                                  
              //Ermittelt den Bildnamen
                                     
              $df strpos ($imgstring"<img");

                                       
              $imgwert_anfang $imgwert_anfang+$df;
                                       
              $imgwert_anfang =$imgwert_anfang+10;
                                       echo 
              "anfang: ".$imgwert_anfang."
              "
              ;
                                       
              $imgstring substr(strstr($imgstring'<img'), 10);

                                     
              $pos strpos ($imgstring" ");
                                  
              $imgwert_ende $imgwert_anfang+$pos;
                                       echo 
              "ende: ".$imgwert_ende."
              "
              ;

                                       
              $imgwert_diff $imgwert_ende $imgwert_anfang;
                                  echo 
              "bildname: ".substr($ausgabe$imgwert_anfang$imgwert_diff-1)."



              "
              ;
                              }
              ?>
              nur denk ich, dass das viel zu umständlich ist.
              Ich probiers mal mit deinem jetzt...

              Kommentar

              Lädt...
              X