tirle: Grafiken manipulieren

Hallo.

Vor langer Zeit habe ich ein Script entworfen, das eine Galerie aufbaut:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  
<html>  
 <head>  
  <title>Bildergalerie</title>  
<style type="text/css">
~~~~~~css
  
img  
{border:0;}  
  
h2  
{  
color:#CC6633;  
margin-left:30px;  
}  
  
table  
{  
align:center;  
}
~~~~~~html
  
</style>  
  
  
  
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  
 </head>  
  
 <body>
~~~~~~php
  
  <?php  
  
echo "<h2>Bildergalerie: $topic</h2>";  
  
echo "<div align=\"center\">";  
   // Prfen, ob Parameter ein Ordner ist  
  
   if(is_dir($dir)){  
  
  // Alle Dateinamen in Array lesen,  
  // erste zwei Elemente ("." und "..") werden gelöschcht  
  
$dh  = opendir($dir);  
while (false !== ($filename = readdir($dh))) {  
   $files[] = $filename;  
}  
  
sort($files);  
  
array_shift($files);  
array_shift($files);  
  
closedir($dh);  
  
// Tabelle anfangen  
echo("<table border=\"1\">\n<tr>\n");  
  
foreach($files as $bild){  
  
 $bild="<a href=\"$dir$bild\"><img src=\"$dir$bild\" width=\"200\"></a>";  
  
  
 echo "<td>$bild</td>\n";  
  
 $j++;  
  
 if($j%3 == 0){  
  echo "</tr>\n<tr>\n";  
 }  
  
}  
  
// Tabelle beenden  
echo "</tr>\n</table>\n";  
echo "</div>";  
}  
  
  
// Wenn Parameter keine Galerie ist, Meldung ausgeben und sterben  
   else{  
    die("Galerie nicht gefunden!");  
   }  
  
  ?>
~~~~~~html
  
 </body>  
</html>

Es gibt viele Nachteile bei diesem Script:

- Es werden alle Grafiken vollständig geladen, was demnach eine enorme Ladezeit beansprucht
 - Es werden alle Grafiken vollständig geladen, der Browser lädt also alle Bilder herunter, was bei großen Galerien und Modem-Usern wiederum zu einer enormen Ladezeit führt
 - Falsche Angabe von $topic führt zu Missverständnissen einiger Browser
 - Was, wenn in dem angegebenen Ordner nicht nur Bilder sind, sondern auch z.B. html oder css-dateien?

Nun habe ich den Auftrag erhalten, ein Script zu entwerfen, welches Thumbnails aus großen Bilder erstellt, diese anzeigt (mit Auswahl des Users, wie viele in einer Tabellen-Zeile sind), verlinkt mit dem großen Bild und mit allem drum und dran.

Ich habe davon gehört, dass PHP Bilder manipulieren kann. Meine Frage wäre: Welche Funktionen brauche ich dafür? Und was ist zu beachten?

Danke euch.
tirle

  1. Hallo,

    Ich habe davon gehört, dass PHP Bilder manipulieren kann. Meine Frage wäre: Welche Funktionen brauche ich dafür? Und was ist zu beachten?

    Ich habe mal das selbe versucht wie Du. Mein Versuch ist genau daran gescheitert. Diese PHP-Funktionen funktionieren zwar, nur damals habe sie allerhand Probleme verursacht. Die Qualität der (stark) verkleinerten Bilder war so schlecht, dass mit dem Thumbnail nichts mehr anzufangen war.

    Diese miserable Qualität hat sogar schon einen ewig langen Script benötigt, den ich irgendwo aus dem Netz hatte, weiß jetzt aber nicht woher.

    Ich hoffe, dass Du noch eine gute Antwort erhälst, mich würde das auch wahnsinnig interessieren. Das einzige was brauchbar war damals war ein Programm, was automatisch Thumbnails erstellt, aber dazu muss einem der Server wohl gehören oder man muss zumindest was installieren können.

    Lutz

    1. Hallo,

      folgender Code verkleinert Bilder:

      <?php
      /* $prozent = Bild auf X prozent resizen
       $datei = Dateiname  */

      header ("Content-type: image/png");
      if (!isset($prozent)) $prozent=100;
      if (!isset($datei)) exit;
      $img_src = ImageCreateFromJPEG($datei);
      $pre_width= round (ImageSX($img_src) * $prozent/100);
      $pre_height=round (ImageSY($img_src) * $prozent/100);
      $img_dest = imagecreate($pre_width, $pre_height);
      ImageCopyResized($img_dest, $img_src, 0, 0, 0, 0, $pre_width, $pre_height, ImageSX($img_src), ImageSY($img_src));

      imagejpeg($img_dest,"" ,75);
      // ImagePNG ($img_dest);
      ?>

      Wichtig beim aufruf ist vor >? und nach ?> darf nichts mehr kommen kein leer kein nix. Dazu muss aber eine Bibiliotek installiert sein ich meine GLib oder so ... wie auch immer viele Webserver haben diese installiert evtl. einfach mal ausprobieren.

      Statt imagecreate kann es auch imagecreatetruecolur oder so sein. Einfach mal nachsehen was es noch gibt (z.B. www.php3.de).

      Jan
      P.s: Die Datei dann im Image Tag als src verwenden

      Hallo,

      Ich habe davon gehört, dass PHP Bilder manipulieren kann. Meine Frage wäre: Welche Funktionen brauche ich dafür? Und was ist zu beachten?

      Ich habe mal das selbe versucht wie Du. Mein Versuch ist genau daran gescheitert. Diese PHP-Funktionen funktionieren zwar, nur damals habe sie allerhand Probleme verursacht. Die Qualität der (stark) verkleinerten Bilder war so schlecht, dass mit dem Thumbnail nichts mehr anzufangen war.

      Diese miserable Qualität hat sogar schon einen ewig langen Script benötigt, den ich irgendwo aus dem Netz hatte, weiß jetzt aber nicht woher.

      Ich hoffe, dass Du noch eine gute Antwort erhälst, mich würde das auch wahnsinnig interessieren. Das einzige was brauchbar war damals war ein Programm, was automatisch Thumbnails erstellt, aber dazu muss einem der Server wohl gehören oder man muss zumindest was installieren können.

      Lutz

    2. hi,

      Ich habe davon gehört, dass PHP Bilder manipulieren kann. Meine Frage wäre: Welche Funktionen brauche ich dafür? Und was ist zu beachten?

      und nur um das zu fragen, lädst du hier erst mal dein komplettes script ab ...?

      Ich habe mal das selbe versucht wie Du. Mein Versuch ist genau daran gescheitert. Diese PHP-Funktionen funktionieren zwar, nur damals habe sie allerhand Probleme verursacht. Die Qualität der (stark) verkleinerten Bilder war so schlecht, dass mit dem Thumbnail nichts mehr anzufangen war.

      dann hast du vermutlich etwas falsch gemacht.
      die qualität ist nämlich recht ordentlich, wenn man die richtigen funktionen nutzt.

      http://www.php.net/manual/de/ref.image.php

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo

    Ich habe davon gehört, dass PHP Bilder manipulieren kann. Meine Frage wäre: Welche Funktionen brauche ich dafür? Und was ist zu beachten?

    Liste der Graphik-Funktionen im PHP-Manual

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.1
  3. echo $begrüßung;

    • Was, wenn in dem angegebenen Ordner nicht nur Bilder sind, sondern auch z.B. html oder css-dateien?

    Das könntest du mit is_array(@getimagesize($dateiname)) prüfen.

    echo "$verabschiedung $name";

  4. Hallo tirle,

    Ich habe davon gehört, dass PHP Bilder manipulieren kann. Meine Frage wäre: Welche Funktionen brauche ich dafür? Und was ist zu beachten?

    So eine Galerie ist nicht gerade trivial, aber wenn du es versuchen magst, die Bilderfunctions in PHP fangen alle mit 'image' an, im PHP-Manual sind auch viel Beispiele dazu.
    Eine andere Moeglichkeit waere, ein OpenSource Script zu installieren. Ich habe gerade kuerzlich einige ausprobiert und finde Coppermine am besten.

    Gruß,

    Dieter