Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] img resize (thumbnails) mit bbcode

Einklappen

Neue Werbung 2019

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

  • [Erledigt] img resize (thumbnails) mit bbcode

    moin,

    ich habe hier ein problem mit einem script, dass bilder über den "bbcode" verkleinert. also der text wird ausgelesen, dass script sucht, wo die max größe überschritten wird, und erstellt dann ein thumbail davon, beim klick auf das bild sieht man dann die vollversion. ich und mein kollege ärgern uns jetzt schon seit mehreren tagen damit rum, mittlerweile sind wir zwar schon soweit, dass alle bilder verkleinert werden, dabei hat uns übrigens der suchparamater /Uism geholfen bei preg_replace. denn davor, also ohne /Uism hat das script den gesamten inhalt zwischen {img} und {/img} als das bild angesehen, der suchparamater schaut halt noch, ob danach noch was kommt. jedoch werden jetzt alle bilder auf die selbe größe verkleinert wie vom ersten bild. hier ist der code vom script:

    PHP-Code:
    <?php


    class imgdata
    {
        var 
    $_width;
        var 
    $_height;
        
        function 
    width($img)
        {
            
    $maxw 300# maximal width
        
            
    $id getimagesize($img);
            
    $data explode("\""$id[3]);
            
    $width $data[1];
            
    $height $data[3];
        
            if(
    $width $maxw)
            {
                
    $div $width/$maxw;
                
    $height $height/$div;
                
    $width $maxw;
            }
            
            
            
    $this->_width $width;
            return 
    $this->_width;
        }
        
        function 
    height($img)
        {
            
    $maxw 300# maximal width
        
            
    $id getimagesize($img);
            
    $data explode("\""$id[3]);
            
    $width $data[1];
            
    $height $data[3];
        
            if(
    $width $maxw)
            {
                
    $div $width/$maxw;
                
    $height $height/$div;
                
    $width $maxw;
            }
            
            
            
    $this->_height $height;
            return 
    $this->_height;
        }
    }

        
    $imgdata = new imgdata;
        



    if(
    preg_match("/\[img\](.*)\[\/img\]/Uism"$text$args))
    {
        
    $img trim($args[1]);
        
    $text preg_replace("/\[img\](.*)\[\/img\]/Uism""<a href=\"\$1\" target=\"_blank\"><img src=\"\\1\" width=\"".$imgdata->width($img)."\" height=\"".$imgdata->height($img)."\" title=\"Klicken, um das Bild in Originalgröße zu sehen!\" border=\"0\"></a>"$text);
    }

    echo 
    $text;
    ?>
    ich wäre sehr dankbar, wenn uns mal jemand einen tipp geben könnte oder wie wir das problem lösen könnten.

    grüße,
    feanor

  • #2
    Bezüglich [img] hatte ich mal diese Variante versucht:
    http://www.cix88.de/cix_php/php_rege...bbcode_img.php

    wie wir das problem lösen könnten
    Ja was geht denn nu nicht ?

    Kommentar


    • #3
      PHP-Code:
      <?php

      function bbcode($text)
      {

          
      $text preg_replace("#\[img\](.+?)\[\/img\]#esi","imgsize('\\1')",$text);

          return 
      $text;
      }

      function 
      imgsize($code)
      {

          
      $hoch 150// max hoehe
          
      $breit 150// max breite

          
      $rsize getimagesize($code); // originalgroesse herausfinden

          
      if(trim(chop($rsize[1])) <= $hoch and trim(chop($rsize[0])) <= $breit)
          {
              
      $hoch trim(chop($rsize[1]));
              
      $breit trim(chop($rsize[0]));
          }
          
      // wenn bild igendwie groesser
          
      else
          {
              
      $prozh $hoch/$rsize[1];
              
      $prozw $breit/$rsize[0];
              if(
      $prozh $prozw$proz $prozw;
              else 
      $proz $prozh;
              
      $hoch $rsize[1]*$proz;
              
      $breit $rsize[0]*$proz;
          }

          
      $pic '[url="'.$code.'"][img]'.$code.'[/img][/url]';
          return 
      $pic;
      }

      echo 
      bbcode("[ img]bildlink[ /img]");
      ?>
      der echo-befehl wird natürlich für jedes bild einzeln übergeben (na klar, ist eigentlich logisch)
      gruss sys

      Kommentar


      • #4
        $text = preg_replace("#\[img\](.+?)\[\/img\]#esi","imgsize('\\1')",$text);
        Oh oh, der reguläre Ausdruck stimmt aber nicht ganz.

        +? -> Schwachsinn
        "imgsize('\\1')" -> dann ohne doppelte Anführungszeichen

        (.+) und Modifer iseU, und mehr nicht, sofern man nicht die Dateiendung prüfen will.

        Kommentar


        • #5
          ohne doppelte anführungszeichen sollte ein parse error kommen
          gruss sys

          Kommentar


          • #6
            achso stimmt ja, sorry hab ich auch mal gepennt ...

            Kommentar

            Lädt...
            X