mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 20.04.2024 14:31 Benutzername: Passwort: Auto-Login

Thema: [PHP] Advanced-Thumbnails erstellen? vom 04.05.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Advanced-Thumbnails erstellen?
Seite: Zurück  1, 2, 3, 4, 5  Weiter
Autor Nachricht
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 02:26
Titel

Antworten mit Zitat Zum Seitenanfang

Danke m, das Codebeispiel scheint hier sehr gut zu passen.

Aber es wird leider nix angezeigt:
Zitat:

$category = htmlspecialchars($_GET['sub']);

$dbq = "SELECT * FROM galerie WHERE category='".$category."' LIMIT ".$limit."";
$result = mysql_db_query("xyz_galerie", $dbq);

while ($row = mysql_fetch_array($result)) {
// Thumbnails erstellen
$currimg = $row[path];

// Rest der DBQ auswerten
$currname = $row[name];
$currid = $row[ID];

// Breite und Höhe des Bildes auslesen:
list($thumb_origwidth, $thumb_origheight) = getimagesize($row[path]);

$img = imagecreatefromjpeg($row[path]);

$thumbwidth = 125;
$thumbheight = 125;
$minsize = 125; # bei ungleichen seitenverhältnissen die längere seite

$width = $thumb_origwidth; # ermitteln z.b. per getimagesize
$height = $thumb_origheight; # ermitteln z.b. per getimagesize

$scale = max($minsize/$width, $minsize/$height); # skalierungsfaktor ermitteln

$newwidth = ceil($width*$scale);
$newheight = ceil($height*$scale);

$x = ($newwidth - $thumbwidth)/2;
$y = ($newheight - $thumbheight)/2;

$cropimg = imagecreatetruecolor($thumbwidth,$thumbheight);

$thumbnail = imagecopyresized($cropimg, $img, -$x, -$y, 0, 0, $newwidth, $newheight, $width, $height);

echo "<div class=\"thumbs\"><a id=\"ajaxgo\" href=\"?id=portfolio&amp;sub=$category&amp;page=".$page."&amp;img=$currid\">";

echo "<img src=\"".imagejpeg($thumbnail)."\" alt=\"$row[name]\" width=\"$thumb_width\" height=\"$thumb_height\" /></a>";
echo '</div>';
}


Das ganze wird aber nur so dargestellt:
[/img]


Zuletzt bearbeitet von Smooth-Graphics am Fr 23.05.2008 13:39, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 23.05.2008 03:34
Titel

Antworten mit Zitat Zum Seitenanfang

Wie rufst du die Funktion denn auf? Was übergibst du als Parameter?
Die Verbindung zur Datenbank wird vorher hergestellt und das funktioniert dann auch?
Wie sieht denn der Rest von deinem Script aus?
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 10:14
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
Wie rufst du die Funktion denn auf? Was übergibst du als Parameter?
Die Verbindung zur Datenbank wird vorher hergestellt und das funktioniert dann auch?
Wie sieht denn der Rest von deinem Script aus?


Ich habs mal rot oben im Code markiert, wo ich die Funktion aufrufe und welche Parameter übergeben werden.
Die Datenbankverbindung funktioniert und wird vorher schon hergestellt.

Ach was solls, hier mal das ganze Script. Die DB-Verbindung ist gegeben, das Script hier ist nur ein include...
Code:

    <div id="showoverview">
           <?php
            
            // Seitenpruefung GET['page']
            if(isset($_GET['page']) or !empty($_GET['page'])) {
               $page = strip_tags($_GET['page']);
            } else {
               $page = '1';
            }
                      
            //ID for Page
            if(htmlspecialchars($_GET['page'])=='1') {
               $limit = "0,6";
            } elseif(htmlspecialchars($_GET['page'])=='2') {
               $limit = "6,6";
            } elseif(htmlspecialchars($_GET['page'])=='3') {
               $limit = "12,6";
            } elseif(htmlspecialchars($_GET['page'])=='4') {
               $limit = "18,6";
            } elseif(htmlspecialchars($_GET['page'])=='5') {
               $limit = "24,6";
            } elseif(htmlspecialchars($_GET['page'])=='6') {
               $limit = "30,6";
            } elseif(htmlspecialchars($_GET['page'])=='7') {
               $limit = "36,6";
            } elseif(htmlspecialchars($_GET['page'])=='8') {
               $limit = "42,6";
            } elseif(htmlspecialchars($_GET['page'])=='9') {
               $limit = "48,6";
            } elseif(htmlspecialchars($_GET['page'])=='10') {
               $limit = "54,6";
            } else {
               $limit = "0,6";
            }
            
            // category?
            $category = htmlspecialchars($_GET['sub']);
            
            $dbq = "SELECT * FROM galerie WHERE category='".$category."' LIMIT ".$limit."";
            $result = mysql_db_query("knipsolina_galerie", $dbq);
            
            while ($row = mysql_fetch_array($result)) {
               // Thumbnails erstellen
               $currimg = $row['path'];
               
               // Rest der DBQ auswerten
               $currname = $row['name'];
               $currid = $row['ID'];
               
               // Breite und Höhe des Bildes auslesen:
               list($thumb_origwidth, $thumb_origheight) = getimagesize($row['path']);
                              
               $img = imagecreatefromjpeg($row['path']);
 
               $thumbwidth = 125;
               $thumbheight = 125;
               $minsize = 125; # bei ungleichen seitenverhältnissen die längere seite
                  
               $width = $thumb_origwidth; # ermitteln z.b. per getimagesize
               $height = $thumb_origheight; # ermitteln z.b. per getimagesize
                   
               $scale = max($minsize/$width, $minsize/$height); # skalierungsfaktor ermitteln
                   
               $newwidth = ceil($width*$scale);   
               $newheight = ceil($height*$scale);
                  
               $x = ($newwidth - $thumbwidth)/2;
               $y = ($newheight - $thumbheight)/2;
                     
               $cropimg = imagecreatetruecolor($thumbwidth,$thumbheight);             
                  
               $thumbnail = imagecopyresized($cropimg, $img, -$x, -$y, 0, 0, $newwidth, $newheight, $width, $height);
               
               imagejpeg($thumbnail);
               
               
               echo "<div class=\"thumbs\"><a id=\"ajaxgo\" href=\"?id=portfolio&amp;sub=$category&amp;page=".$page."&amp;img=$currid\">";
               // No JS Version <a id=\"ajaxgo\" href=\"?id=portfolio&amp;sub=$category&amp;page=".$page."&amp;img=$currid\">
               // AJAX Version: Doesn't play because mootools has problems -> <a id=\"ajaxgo\" href='#'>
               if(isset($notmf))
               {
                  echo $notmf;
               }
               #if(isset($notmf2))
               #{
               #   echo $notmf2;
               #}
               echo "<img src=\"".imagejpeg($thumbnail)."\" alt=\"$row[name]\" width=\"$thumb_width\" height=\"$thumb_height\" /></a>";
               echo '</div>';
            }
            ?>
                <br />
                <div id="overviewnavi">
            <?php
            //letzes gültiges Bild
            $sqlstatement = "SELECT COUNT(id) as count FROM galerie";
            $ergebnis = mysql_db_query("knipsolina_galerie", $sqlstatement);
            
            $gesseiten = ($ergebnis/6);
            
            // Überprüfen ob nicht erste Seite, dann "previous page" Link anzeigen
            if($page>1)
            {
               echo " <a href=\"?id=portfolio&amp;sub=$category&amp;page=".($page-1)."&amp;img=".($currid-6)."\"><img src=\"Galerie/imghandler_pageback.png\" alt=\"Eine Seite zurück\" width=\"20\" height=\"20\" /></a> ";
            }
            // aktuelle Seite anzeigen
            echo "Seite $page ";
            // Überprüfen ob letztes Bild angezeigt wird, wenn nicht, "next page" Link anzeigen
            if($page<$gesseiten)
            {
               echo " <a href=\"?id=portfolio&amp;sub=$category&amp;page=".($page+1)."&amp;img=".($currid+1)."\"><img src=\"Galerie/imghandler_pagenext.png\" alt=\"Eine Seite vorwärts\" width=\"20\" height=\"20\" /></a>";
            }
            ?>
                </div>
    </div>
    <div id="showfullimage">
       <?php
         // per SQL erstes Bild der Sektion auswerten
         $dbq_firstimg = "SELECT DISTINCT * FROM galerie WHERE category='".$category."'";
         $result_firstimg = mysql_db_query("knipsolina_galerie", $dbq_firstimg);
         $row_firstimg = mysql_fetch_array($result_firstimg);
         $firstcatimg = $row_firstimg['ID'];
         
         // erstes Bild ausgeben oder gewähltes ausgeben
         if(isset($_GET['img'])) {
            $img = strip_tags($_GET['img']);
         } else {
            $img = $firstcatimg;
         }
         $dbq2 = "SELECT * FROM galerie WHERE ID='".$img."'";
         $result2 = mysql_db_query("knipsolina_galerie", $dbq2);
         $row2 = mysql_fetch_array($result2);   
         
         // Breite und Höhe des Bildes auslesen:
            list($origwidth, $origheight) = getimagesize($row2['path']);
            // Breite und Höhe für Fullsize bestimmen:
            
            if($origwidth > $origheight) {
               $width = 400;
               $Skalierungsfaktor = $origwidth/$width;
               $height = intval($origheight/$Skalierungsfaktor);
               $divheight = (400-$height)/2;
               echo '<img src="whitespace.gif" alt="whitespace holder" width="400" height="'.$divheight.'" />';
            }
            
            if($origheight > $origwidth) {
               $height = 400;
               $Skalierungsfaktor = $origheight/$height;
               $width = intval($origwidth/$Skalierungsfaktor);
            }
            
            if($origheight == $origwidth) {
               $width = 400;
               $height = 400;
            }
      // Vor / Zurück Link
      $vor = $currid + 1;
      $back = $currid - 1;
           
      ?>
        <img src="<?php echo $row2['path']; ?>" alt="<?php echo $row2['name']; ?>" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
        <div id="previmg">
           <a href="?id=portfolio&amp;sub=<?php echo $category; ?>&amp;page=<?php echo $page; ?>&amp;img=<?php echo $back; ?>"><img src="Galerie/imghandler_invisible.gif" alt="Bild zurück" width="60" height="60" /></a>
        </div>
        <div id="nextimg">
           <a href="?id=portfolio&amp;sub=<?php echo $category; ?>&amp;page=<?php echo $page; ?>&amp;img=<?php echo $vor; ?>"><img src="Galerie/imghandler_invisible.gif" alt="Bild weiter" width="60" height="60" /></a>
        </div>
    </div>


Zuletzt bearbeitet von Smooth-Graphics am Fr 23.05.2008 13:39, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 13:31
Titel

Antworten mit Zitat Zum Seitenanfang

So, jetzt auch Fehlermeldungen:

Code:

Warning: imagejpeg(): supplied argument is not a valid Image resource in /srv/www/vhosts/management-panel.com/subdomains/knipsolina/httpdocs/Galerie/show_new_mysql.php on line 114

Notice: Undefined variable: thumb_width in /srv/www/vhosts/management-panel.com/subdomains/knipsolina/httpdocs/Galerie/show_new_mysql.php on line 114

Notice: Undefined variable: thumb_height in /srv/www/vhosts/management-panel.com/subdomains/knipsolina/httpdocs/Galerie/show_new_mysql.php on line 114



Was stimmt denn beim imagejpeg(); nicht?


Zuletzt bearbeitet von Smooth-Graphics am Fr 23.05.2008 13:47, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 13:50
Titel

Antworten mit Zitat Zum Seitenanfang

Ein Pfadproblem. Zudem solltest du dir die Doku zu imagejpeg nochmal ansehen, imagejpeg
gibt wenn du nur den ersten Paramter angibst die Datei direkt im Browser aus (dazu sollte man
dann noch den korrekten header senden), die Anwendung innerhalb eines image tags ist somit
falsch.


Das heißt, die erstellst deine Bildquelle.

Code:
imagecreatefrom___('ein/gültiger/pfad/zu/einer/bilddatei');


Dann kommt der Teil zur Berechnung der Thumbgröße usw., und zur Ausgabe

Code:
header senden (je nach bildtype)
imagejpeg($thumb);


Zuletzt bearbeitet von m am Fr 23.05.2008 13:53, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 13:52
Titel

Antworten mit Zitat Zum Seitenanfang

m hat geschrieben:
Ein Pfadproblem. Zudem solltest du dir die Doku zu imagejpeg nochmal ansehen, imagejpeg
gibt wenn du nur den ersten Paramter angibst die Datei direkt im Browser aus (dazu sollte man
dann noch den korrekten header senden), die Anwendung innerhalb eines image tags ist somit
falsch.


Hm, grade gelesen. So, dann aber die Frage: Wie mach ich das jetzt, dass ich ohne speichern die Thumbnails anzeigen kann?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Fr 23.05.2008 13:58
Titel

Antworten mit Zitat Zum Seitenanfang

Du kannst aus dem Image Tag heraus die php datei aufrufen welche dann dein Bild ausgibt.


Code:
imagecreatefrom__($_GET["img"]);
# resizen des bildes wie gehabt und dann ausgeben
header("Content-type: image/jpeg");
imagejpeg($cropimg, "", 70);
imagedestroy($cropimg);


Code:
<img src="thumbs.php?img=datei.jpg" />
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Fr 23.05.2008 14:05
Titel

Antworten mit Zitat Zum Seitenanfang

m hat geschrieben:

Code:
imagecreatefrom___('ein/gültiger/pfad/zu/einer/bilddatei');



welch ironie Grins Grins Grins und schon mal schönes wochenende ihr nasen!!! (und nicht zuviel gerüstbau am wochenende!!!) *bäh*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [Hilfe] Thumbnails erstellen
Thumbnails mit Dateiinformationen erstellen
Advanced Image Swap
[PHP Advanced] Grafik aus PLZ erzeugen
[CSS advanced?] flexiblen werbebanner positionieren
PHP Thumbnails per FTP speichern?
Neues Thema eröffnen   Neue Antwort erstellen Seite: Zurück  1, 2, 3, 4, 5  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.