Antworten auf deine Fragen:
Neues Thema erstellen

Thumbnail Script

Rage2008

Nicht mehr ganz neu hier

Hallo Community,

ich habe ein Problem mit einem Thumbnail Script das ich im www gefunden habe (seite finde ich nicht mehr).

Das Script funktioniert an sich super, aber beim erzeugen eines Thumbnails von einem Hochgeladenen Bild wird eine bsp. temp.jpg angelegt.
Wenn ich dann den Thumbnail Ordner auslese und die sich darin befindlichen Bilder anzeige, wird die angelegte temp.jpg auch angezeigt. Was als resultat nur ein schwarzes Bild ist. Das will ich logischerweise nicht haben.

Hoffe ihr habt das Problem verstanden und einer kann mir Helfen^^

Hier noch das Script:
PHP:
<?php
function thumbnail($imgfile, $speicherordner="./img/thumbnail/", $filenameOnly=true)
   {
   //Max. Größe des Thumbnail (Höhe und Breite)
   $thumbsize = 140;

   //Dateiname erzeugen
   $filename = basename($imgfile);

   //Fügt den Pfad zur Datei dem Dateinamen hinzu
   //Aus ordner/bilder/bild1.jpg wird dann ordner_bilder_bild1.jpg
   if(!$filenameOnly)
      {
      $replace = array("/","\\",".");
      $filename = str_replace($replace,"_",dirname($imgfile))."_".$filename;
      }

   //Schreibarbeit sparen
   $ordner = $speicherordner;

   //Speicherordner vorhanden
   if(!is_dir($ordner))
      return false;

   //Wenn Datei schon vorhanden, kein Thumbnail erstellen
   if(file_exists($ordner.$filename))
      return $ordner.$filename;

   //Ausgansdatei vorhanden? Wenn nicht, false zurückgeben
   if(!file_exists($imgfile))
      return false;



   //Infos über das Bild
   $endung = strrchr($imgfile,".");

   list($width, $height) = getimagesize($imgfile);
   $imgratio=$width/$height;

   //Ist das Bild höher als breit?
   if($imgratio>1)
      {
      $newwidth = $thumbsize;
      $newheight = $thumbsize/$imgratio;
      }
   else
      {
      $newheight = $thumbsize;
      $newwidth = $thumbsize*$imgratio;
      }

   //Bild erstellen
   //Achtung: imagecreatetruecolor funktioniert nur bei bestimmten GD Versionen
   //Falls ein Fehler auftritt, imagecreate nutzen
   if(function_exists("imagecreatetruecolor"))
     $thumb = imagecreatetruecolor($newwidth,$newheight); 
   else
      $thumb = imagecreate ($newwidth,$newheight);

   if($endung == ".jpg")
      {
      imageJPEG($thumb,$ordner."temp.jpg");
      $thumb = imagecreatefromjpeg($ordner."temp.jpg");

      $source = imagecreatefromjpeg($imgfile);
      }
   else if($endung == ".gif")
      {
      imageGIF($thumb,$ordner."temp.gif");
      $thumb = imagecreatefromgif($ordner."temp.gif");

      $source = imagecreatefromgif($imgfile);
      }

   imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

   //Bild speichern
   if($endung == ".png")
      imagepng($thumb,$ordner.$filename);
   else if($endung == ".gif")
      imagegif($thumb,$ordner.$filename);
   else
      imagejpeg($thumb,$ordner.$filename,100);


   //Speicherplatz wieder freigeben
   ImageDestroy($thumb);
   ImageDestroy($source);


   //Pfad zu dem Bild zurückgeben
   return $ordner.$filename;
}
?>

Vielen Dnak schon mal vorraus^^
 

Duddle

Posting-Frequenz: 14µHz

AW: Thumbnail Script

Entweder löschst du vor dem return die Datei mit unlink, dafür brauchst du aber die entsprechenden Zugriffsrechte (einfach ausprobieren). Oder du nennst im Script die temporäre Datei anders (also z.B. temp.xyz), falls dein Thumbnail-Ordner-auslesen-Script automatisch nicht-Bilder anhand der Dateiendung ignoriert.


Duddle
 

TimeePic

Nicht mehr ganz neu hier

AW: Thumbnail Script

warum genau, die temp.* stehen bleibt kann ich dir jetzt nicht sagen, aber du könntest vor dem auslesen überprüfen ob es solch eine Datei in deinem Ordner gibt.

Code:
if (file_exists($datei))
{
    unlink($datei)
}
 

CIX88

Aktives Mitglied

AW: Thumbnail Script

Etwas komischer Weg für eine Thumbnail-Funktion:

> $thumb = imagecreatetruecolor($newwidth,$newheight);
... neue Bild $thumb wird erezugt

> imageJPEG($thumb,$ordner."temp.jpg");
... $thumb wird dann gespeichert

> $thumb = imagecreatefromjpeg($ordner."temp.jpg");
... $thumb wird nun überschrieben

> $source = imagecreatefromjpeg($imgfile);
... $source wird eingelesen

> imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
... $source wird nach $thumb kopiert

> imagejpeg($thumb,$ordner.$filename,100);
... $thumb wird wieder gespeichert

Auch mal Gedanken über den Ablauf einer Thumbnail-Funktion nachgedacht?
 

Rage2008

Nicht mehr ganz neu hier

AW: Thumbnail Script

wie gesagt das script habe ich aus dem netz und wenn ich es mir anschau versteh ich eigentlich nur bahnhof :rot:
leider habe ich bisher keine zeit gefunden mir php mal genau anzuschauen!

so wie du das script erklärst macht es kei wirklichen sinn was da gemacht wird! was aber nichts daran ändert das ich das problem mit dem dargestellten temp.jpg hab.

die hier genannten lösungsvorschläge brachten bisher noch kein erfolg.
 

CIX88

Aktives Mitglied

AW: Thumbnail Script

versteh ich eigentlich nur bahnhof
Naja wäre aber gut, wenn sich das dann ändern würde :)

Nun, schwarze Bilder sind meist die Folge, wenn dem neuen Bild keine Werte übergeben wurden. Das neue Bild wird zwar erzeugt, aber mehr auch nicht. Ob das oben gezeigte Beispiel wirklich hilfreich ist, würde ich jetzt stark bezweifeln.

Das Grundprinzip von Thumbnail sieht (ganz grob gesehen) so aus:

1. Original-Bild laden
2. neues Bild erstellen mit Breite und Höhe vom Thumb
3. Bildinhalt vom Originalbild verkleinert in neues Thumb kopieren
4. Bild speichern
5. Speicher freigeben

Bei deinen Script würde ich erst die ALLE Pfad-Angaben überprüfen. Zugriffsrechte sollten auch überprüft werden. Besonders was in $speicherordner steht. An den Anfnag vom Script auch mal ein error_reporting(E_ALL); setzen, damit mögliche Fehler auch sichtbar werden.

von einem Hochgeladenen Bild
Auch mal kontrollieren, wo das Bild gespeichert wird. Kann das Script bzw. die Funktion überhaupt auf das Bild zugreiffen? Man sieht zwar dein Script, aber nicht woher das Bild kommt, wo es abgelegt wird, und wo deine Funktion liegt.

Vielleicht mal diese Punkte kontrollieren und ggf. noch Infos Posten. Ob deine Funktion thumbnail() richtig funktioniert weis ich im Moment nicht, das habe ich jetzt nicht nachgebaut.

[Update]

Und ggf. auch die Kommentare im Script lesen und überprüfen!
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben