Ergebnis 1 bis 10 von 10

Thema: Thumbnail-Generator

  1. #1
    Guest
    Registriert seit
    Mar 2004
    Ort
    Süddeutschland
    Beiträge
    120

    Thumbnail-Generator

    Dieses Script verändert die Größe eines Bildes. Die GET-Parameter sind alle erforderlich. 'w' steht für width und gibt die maximale Breite an, dasselbe gilt für 'h' (height), Höhe. 'file' gibt den Pfad zum Bild an.

    Code:
    Code:
    <?php 
    if(!empty($_GET['file']) && !empty($_GET['w']) && !empty($_GET['h'])) 
    { 
      if(preg_match("/.(jpg|jpeg)$/i", $_GET['file'], $regs)) $type = $regs[1]; 
      if(preg_match("/.(png)$/i", $_GET['file'], $regs)) $type = $regs[1]; 
      if(preg_match("/.(gif)$/i", $_GET['file'], $regs)) $type = $regs[1]; 
      switch($type) 
      { 
      case "png": 
         $function_image_create = "ImageCreateFromPng"; 
         $function_image_new = "ImagePNG"; 
      break; 
      case "gif": 
         $function_image_create = "ImageCreateFromGif"; 
         $function_image_new = "ImageGIF"; 
      break; 
      default: 
         $function_image_create = "ImageCreateFromJpeg"; 
         $function_image_new = "ImageJpeg"; 
      break; 
      } 
      header("Content-type: image/".$type); 
      resizeImage($_GET['file'], $_GET['w'], $_GET['h']); 
    } 
    else 
    { 
      echo "Bitte alle Daten eingeben!"; 
    } 
    
    function resizeImage($file, $maxw, $maxh) { 
      global $function_image_create; 
      global $function_image_new; 
      $imagesize = getimagesize($file); 
      $imgw = $imagesize[0]; 
      $imgh = $imagesize[1]; 
      $ratiow = $maxw / $imgw; 
      $ratioh = $maxh / $imgh; 
      if($ratiow < $ratioh) 
      { 
        $newh = $imgh * $ratiow; 
        $neww = $maxw; 
      } 
      elseif($ratioh < $ratiow) 
      { 
        $neww = $imgw * $ratioh; 
        $newh = $maxh; 
      } 
      elseif($ratiow == $ratioh) 
      { 
        $neww = $maxw; 
        $newh = $maxh; 
      } 
      $thumb = imagecreatetruecolor($neww, $newh); 
      $source = $function_image_create($file); 
      imagecopyresized($thumb, $source, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh); 
      return $function_image_new($thumb); 
    } 
    ?>
    Für Tipps und Änderungsvorschläge bin ich jederzeit offen.
    Geändert von Jakob (02.06.2005 um 13:45 Uhr)

  2. #2
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Herzlichen Dank.
    Es wäre aber schöner, wenn Du das Script in einer CODE-Box platzieren würdest, da der Link auf direktem Weg nicht erreichbar ist, und so Dein Script auch dauerhaft hier einsehbar wäre

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  3. #3
    Guest
    Registriert seit
    Mar 2004
    Ort
    Süddeutschland
    Beiträge
    120
    Schon erledigt. Und danke für den Hinweis.

  4. #4
    TP-Veteran Avatar von fettmme
    Registriert seit
    Feb 2002
    Beiträge
    1.491
    Danke
    class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
    public function __construct(){ if(!$this) die(' '); } }
    http://www.thedailywtf.com/

  5. #5
    Guest
    Registriert seit
    Mar 2004
    Ort
    Süddeutschland
    Beiträge
    120
    Jetzt hab' ich ein Problem mit meinem eigenen Script.
    Die PNG Unterstützung ist aktiv aber ich bekomm' keine PNG-Bilder verkleinert.
    Der Fehler liegt sicher im Script da die Grafikfunktionen einwandfrei mit PNG funktionieren.

  6. #6
    TP-Special Mod Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    Schreibfehler: $function_image_create = "ImageCreateFromPng";

    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer

  7. #7
    Guest
    Registriert seit
    Mar 2004
    Ort
    Süddeutschland
    Beiträge
    120
    (Ich hätt' das besser prüfen sollen )
    Danke.

    Ich hab's oben schon geändert.

  8. #8
    spy
    spy ist offline
    TP-Newbie
    Registriert seit
    Nov 2006
    Beiträge
    2
    hi, erstmal: super Script!

    und auf das Lob folgt gleich ne Frage
    gibts ne Möglichkeit dass das ganze auch funktioniert wenn für $_GET['file'] statt nem relativem pfad ne url (zB: http://xyz.com/xyz.jpg) eingegeben wird?
    im moment verhält sich das script wie gleich wie wenn man nen relativen pfad angibt der nicht existiert (er gibt den textlink aus)

    pS: bevor Fragen nach dem Sinn auftauchen: der Sinn ist das die Bilder auf nem anderen Server geladen werden und es dort keine Möglichkeit gibt irgendwelche Scripte oder so auszuführen..

  9. #9
    TP-Urgestein Avatar von webcreate
    Registriert seit
    Nov 2003
    Ort
    NRW
    Beiträge
    11.661
    Wenn du das Script so nutzen willst, dauert es 3 Tage und der Server ist gehackt.
    Wenn man aber mit diesem offenen Sicherheitsloch leben will, geht es schon.
    Dazu muss der Server dann aber auch entsprechend konfiguriert sein:
    http://www.dynamicwebpages.de/php/ref.filesystem.php (allow_url_fopen)

    Aber dann doch lieber den nicht scriptfähigen Hosting-Vertrag updaten, kostet heute ja nun wirklich nichts mehr.
    Gruß Mark

    webcreate IT SOLUTIONS
    www.webcreate-nrw.de

    Photoblog....|....flickr

  10. #10
    spy
    spy ist offline
    TP-Newbie
    Registriert seit
    Nov 2006
    Beiträge
    2
    oh, ok hab gehofft man braucht nur ne leichte Befehlsänderung oder so...
    danke für dich schnelle Antwort
    -
    hab vorhin mal paar Bilder damit getestet und mir ist aufgefallen das Bilder mit transparentem Hintergrund automatisch schwarz als Hintergrundfarbe bekommen
    hab nun auch schon was gefunden um die Hintergrundfarbe beliebig zu ändern.. allerdings noch nichts um den Hintergrund wirklich transparent zu machen

    weiß vllt von euch einer wie / ob das möglich ist?
    PHP-Code:
    <?php
        
    if(!empty($_GET['file']) && !empty($_GET['w']) && !empty($_GET['h']))
        {
            if(
    preg_match("/.(jpg|jpeg)$/i"$_GET['file'], $regs)) $type $regs[1];
            if(
    preg_match("/.(png)$/i"$_GET['file'], $regs)) $type $regs[1];
            if(
    preg_match("/.(gif)$/i"$_GET['file'], $regs)) $type $regs[1];
            switch(
    $type)
            {
            case 
    "png":
                
    $function_image_create "ImageCreateFromPng";
                
    $function_image_new "ImagePNG";
            break;
            case 
    "gif":
                
    $function_image_create "ImageCreateFromGif";
                
    $function_image_new "ImageGIF";
            break;
            default:
                
    $function_image_create "ImageCreateFromJpeg";
                
    $function_image_new "ImageJpeg";
            break;
            }
            
    header("Content-type: image/".$type);
            
    resizeImage($_GET['file'], $_GET['w'], $_GET['h']);
        }
        else
        {
            echo 
    "Bitte alle Daten eingeben!";
        }

        function 
    resizeImage($file$maxw$maxh) {
            global 
    $function_image_create;
            global 
    $function_image_new;
            
    $imagesize getimagesize($file);
            
    $imgw $imagesize[0];
            
    $imgh $imagesize[1];
            
    $ratiow $maxw $imgw;
            
    $ratioh $maxh $imgh;
            if(
    $ratiow $ratioh)
            {
                
    $newh $imgh $ratiow;
                
    $neww $maxw;
            }
            elseif(
    $ratioh $ratiow)
            {
                
    $neww $imgw $ratioh;
                
    $newh $maxh;
            }
            elseif(
    $ratiow == $ratioh)
            {
                
    $neww $maxw;
                
    $newh $maxh;
            }
            
    $thumb imagecreatetruecolor($neww$newh);
            
    $source $function_image_create($file);
            
    $bg imagecolorallocate$thumb255255255 );
            
    imagefilledrectangle$thumb00$neww$newh$bg );
            
    imagecopyresized($thumb$source0000$neww$newh$imgw$imgh);
            return 
    $function_image_new($thumb);
        }
    ?>
    schon mal im Voraus danke =)
    Geändert von spy (27.11.2006 um 11:38 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51