thumbnails automatisch erstellen

tkm

Mitglied
also ich hab mir schönes script geschrieben für dateienupload usw. und wollte dann ein thumbnailscript einbauen... nur das liefert mir immer ne fehlermeldung von wegen das der befehl nicht bekannt ist...ich schätze das GD-Library ist bei meinem host nicht installiert...

nun zu meiner frage... kann man das mit den thumbnails auch irgendwie anders machen??? wenn ja wie? :D

vielen dank
 
zunächst mal: ob die GD-Lib richtig installiert ist bekommst Du mit phpinfo() raus.

Zu den Thumbnails: da hast Du folgende Möglichkeiten:

- Du zeigst die Grafiken einfach skaliert an, also im <IMG> mit width und height skaliert (schlechte Lösung, da immer das "große Bild" geladen wird, also nicht unbedingt der Sinn von Thumbnails)

- Du lädst mit dem "normalen Bild" auch noch zusätzlich ein Thumbnail hoch, was Du vorher in einem Grafikprogramm skalierst

- Du verwendest eine andere Sprache als PHP zum skalieren der Bilder (z.B. Perl)

bei der letzten Variante bin ich aber leider überfragt, wie das genau geht :(

hoffe trotzdem geholfen zu haben :)

Gruß
Dunsti
 
hmmm .... tja .... in dem Fall fragst Du am besten mal Deinen Hoster .... oder suchst Dir gleich nen gescheiten ;)

Gruß
Dunsti
 
ach mist die befehle hatte ich doch hier die tage noch... ich hab mir jetzt aber eins geschrieben wo man die thumbs zusätzlich hochläd... ich schau mal ob ich die befehle noch find
 
kannst du mir genau sagen wie der befehl (php) fürs resizen ist
also resize($blob); oder so ????

naja, ganz so einfach ist es nicht. :-)

Zunächst mal brauchst Du dafür die GD-Library. Damit hast Du dann spezielle Befehle für die Bildbearbeitung zur Verfügung.
Unter anderem auch Befehle zum Resizen von Bildern.

PHP:
$im1=imagecreatefromjpeg("bild.jpg"); //erstellt ein Abbild im Speicher
$size=getimagesize("bild.jpg"); //ermittelt die Größe des Bildes

$breite=$size[0]; //die Breite des Bildes
$hoehe=$size[1]; //die Höhe des Bildes
$breite_neu=100; //die breite des Thumbnails
$hoehe_neu=100; //die Höhe des Thumbnails

$im2=imagecreate($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen

imagecopyresized($im2,$im1,0,0,$breite,$hoehe,0,0,$breite_neu,$hoehe_neu); //Bild in Thumbnail kopieren

imagejpeg($im2,"tn_bild.jpg"); //Thumbnail speichern

imagedestroy($im1); //Speicherabbild wieder löschen
imagedestroy($im2); //Speicherabbild wieder löschen

Ist jetzt hier mit JPG ... geht aber auch mit GIF und PNG ... je nachdem, was Dein Webserver unterstützt (phpinfo() )

hilft das?

Gruß
Dunsti
 
Jetz hätt ich da trotzdem noch ne Frage....

Ich hab mal den Quellcode von Dunsti so wie er is bei mir eingebunden. Er erstellt auch n thumb, aber nur eben nicht als thumbnail, sondern einfach nur verkleinert in Schwarz.

Ich hab mir die Anleitung zum speichern von Bildern in ner Datenbank durchgelesen und will jetzt eben diese Bilder in die DB eintragen. mit den normalen Pics klappt alles, nur mit den Thumbs, die mir erstellt werden brauch ich noch nicht versuchen sie in die DB einzutragen, da sie ja einfach nur Schwarz sind.

Mein Code sieht im Moment so aus:


PHP:
<HTML>
<HEAD><TITLE>Speichern von Bildern in einer Datenbank</TITLE></HEAD>
<BODY>

<?php

// Wenn das Formular abgeschickt wurde, wird folgender Code ausgeführt

if ($submit) {

    // Verbindungsaufbau zur Datenbank
    // Diese Daten stehen in der config.php
    
include ("config.php");

$im1=imagecreatefromjpeg($form_data); //erstellt ein Abbild im Speicher
$size=getimagesize($form_data); //ermittelt die Größe des Bildes

$breite=$size[0]; //die Breite des Bildes
$hoehe=$size[1]; //die Höhe des Bildes
$breite_neu=100; //die breite des Thumbnails
$hoehe_neu=100; //die Höhe des Thumbnails

$im2=imagecreate($breite_neu,$hoehe_neu); //Thumbnail im Speicher erstellen

imagecopyresized($im2,$im1,0,0,$breite,$hoehe,0,0,$breite_neu,$hoehe_neu); //Bild in Thumbnail kopieren

imagejpeg($im2,"tn_bild.jpg"); //Thumbnail speichern

imagedestroy($im1); //Speicherabbild wieder löschen
imagedestroy($im2); //Speicherabbild wieder löschen

       $data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

    $result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,imagesize,filetype) ".
        "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$imagesize[3]','$form_data_type')");

    $id= mysql_insert_id();
    echo "<p>Die Datei wurde erfolgreich in der Datenbank gespeichert.";

    MYSQL_CLOSE();



} else {

  // Wenn das Formular noch nicht abgeschickt wurde, wird es angezeigt
?>

    <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
    Bildbeschreibung<br>
    <input type="text" name="form_description"  size="40">
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
    <br>Datei die in der Datenbank gespeichert werden soll:<br>
    <input type="file" name="form_data"  size="40">
    <p><input type="submit" name="submit" value="submit">
    </form>

<?php
}
?>
</BODY>
</HTML>

Kann es daran liegen, das ich als $form_data einen Pfad habe, und keinen Dateinamen wie in Dunstis Code? Wenn ja, wie kriege ich den Dateinamen aus dem Pfad heraus? mit basename() hab ichs probiert, funzt aber irgendwie nicht

thx schon mal im Voraus.
asmo
 
Zuletzt bearbeitet:
ICh glaub ich hab jetzt den Fehler gefunden:


Original geschrieben von Dunsti



PHP:
imagecopyresized($im2,$im1,0,0,$breite,$hoehe,0,0,$breite_neu,$hoehe_neu); //Bild in Thumbnail kopieren

muss glaub ich heissen:

PHP:
imagecopyresized($im2, $im1, 0,0, 0,0,$breite_neu,$hoehe_neu, $breite,$hoehe);


zumindest funktioniert des jetzt so bei mir.....
 
Zurück