 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
22.08.2002, 13:24
|
#1
|
|
TP-Specialist
Registriert seit: Mar 2001
Ort: NDS
|
Bilddatenbank mit thumbnail oder nicht?
Hi Leute!
Ich möchte mir gern eine Bilddatenbank anlegen.
Natürlich alles mit PHP, damit ich beliebig Bild hinzufügen und löschen kann.
Auch ein Kommentarfeld soll es geben... alles kein Problem und wenn frage ich schon nach
Vorab möchte ich nur wissen, soll ich kleine Thumbnails mit hochspielen oder kann/ soll PHP diese aus den normalen Fotos erstellen?
Was ist einfacher und warum? Traffic? CPU Auslastung und und und.
Danke
__________________
the0bone
Wissen ist Macht, nichts Wissen macht nichts!
|
|
|
22.08.2002, 13:29
|
#2
|
|
TP-Veteran
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
|
ich würde auf jeden fall mit php thumb erstellen, aber nur auf bedarf sprich: wenn Thumbnail vorhanden das nehmen sonst eins erstellen geht mit diesem script von seb (ist hier schonmal veröffentlich musst denn beiitrag mal suchen, hab ihn gerade nicht gefunden:
PHP-Code:
function createThumb($imgfile)
{
global $rebuild_thumbs, $dir_thumbs, $dir_images;
$size=getimagesize($dir_images.$imgfile);
$width=$size[0];
$height=$size[1];
$prefix_thumbs= 'thumbs_';
$thumbnail_width = 120;
$dir_thumbs = 'gfx_klein/';
$dir_images = 'gfx/';
$thumbs_per_row = 3;
$thumbnail_height = intval($height*$thumbnail_width/$width);
$thumbfile = $dir_thumbs . $prefix_thumbs . $imgfile;
// if thumbnail file for this image is missing or $rebuild_thumbs is set ...
if(!file_exists($thumbfile) || $rebuild_thumbs)
{
// ... create a new one
$handle_image = ImageCreateFromJPEG($dir_images . $imgfile);
$handle_thumb = ImageCreate($thumbnail_width, $thumbnail_height);
$width = imageSX($handle_image);
$height = imageSY($handle_image);
imagecopyresized ($handle_thumb, $handle_image, 0, 0, 0, 0, $thumbnail_width , $thumbnail_height, $width, $height);
imageJPEG($handle_thumb, $thumbfile);
}
return $thumbfile; // return path to thumbfile
}
|
|
|
22.08.2002, 23:47
|
#3
|
|
TP-Veteran
Registriert seit: Jan 2002
|
ähm...genau
Die Funktion musst Du vor jeder HTML-Ausgabe für ein Thumbnail (<img src="blabla...">) mit dem Dateinamen des jeweiligen Fotos aufrufen, sinnigerweise in einer Schleife, die die Tabelle mit den Thumbs erzeugt.
Sie erzeugt dann eine neue Thumbnail-Datei, falls noch keine existiert und gibt dir in jedem Fall ihren Pfad zurück, den du dann im <img>-Tag für das Thumbnail einfügen kannst.
Funktioniert bisher übrigens nur mit JPGs und staucht sämtliche Thumbs auf eine einheitliche Größe, d.h. sie werden nicht proportional korrekt verkleinert und werden daher verzerrt.
Der Grund ist nicht, dass sowas schwerer zu machen wär, ich wollt einfach alle Thumbs gleich groß haben. Kann man aber leicht ändern...
|
|
|
22.08.2002, 23:53
|
#4
|
|
TP-Veteran
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
|
hallo seb,
wenn du hingeguckt hättest würdest du sehen, dass ich das schon bereits geändert habe!! die vorschaubilder sind nicht mehr verzerrt.
|
|
|
22.08.2002, 23:55
|
#5
|
|
TP-Veteran
Registriert seit: Jan 2002
|
oha...*g*...ich bin davon ausgegangen, dass ich den code kenn und hab ihn deshalb nicht weiter beachtet 
|
|
|
22.08.2002, 23:57
|
#6
|
|
TP-Veteran
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
|
|
|
|
23.08.2002, 19:48
|
#7
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Diese Variante ist aber nicht sehr gut, weil:
- die Tumbnails nur in einer Standardpalette von 256 Farben erstellt werden
- die Qualität der Verkleinerung/Vergrößerung nicht sehr toll ist
- für jedes Bild das Tumbnail immer wieder neu erstellt wird - das kostet bei mehr als 20 Bilder IRRE Serverperformance!
Ich hab mal eine andere Version angehangen, die bessere Tumbnails erstellt und auch einen Cache anlegt, damit bereits erstellte Tumbnails nicht nochmals erstellt werden müssen.
Mit dieser Version ist es auch Möglich, Bilder proportional skalieren zu lassen oder auf ein bestimmtes maximum (höhe/breite) zu setzen. Die Anleitung liegt bei 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
23.08.2002, 22:15
|
#8
|
|
TP-Veteran
Registriert seit: Jan 2002
|
EEEEEY...wer macht hier mein schönes Script schlecht?
Und vor allem mit welchen Argumenten?
Ich glaub das kann ich nicht unkommentiert lassen:
Zitat:
|
- die Tumbnails nur in einer Standardpalette von 256 Farben erstellt werden
|
Unwahr: Die generierten Thumbs sind JPEGS in Echtfarbe (24 Bit).
Möglich, wenngleich unwahrscheinlich, dass es von der GD-Version abhängt, bei mir isses jedenfalls so.
Zitat:
|
- die Qualität der Verkleinerung/Vergrößerung nicht sehr toll ist
|
Teilweise wahr bzw. Anspruchssache:
Für Thumbnails find ich die Qualität der Verkleinerung per imagecopyresized() völlig ausreichend.
Wer möchte, kann diese Funktion durch imagecopyresampled() ersetzen, welche bessere Ergebnisse erzielt, allerdings in älteren Versionen der GD-Lib nicht verfügbar ist (u.a. der meines Webhosters, daher hier imagecopyresized()).
Zitat:
|
- für jedes Bild das Tumbnail immer wieder neu erstellt wird - das kostet bei mehr als 20 Bilder IRRE Serverperformance!
|
Gelogen. Mein Script erzeugt die Thumbs keineswegs 'on the fly', sondern speichert sie dauerhaft und generiert sie nur dann neu, wenn die entsprechende Thumbnail-Datei nicht gefunden wurde bzw. der User eine Neuerzeugung ausdrücklich wünscht (Flag setzen).
Du hast den Thread hier überhaupt nicht gelesen, kann das sein?
Zitat:
|
Mit dieser Version ist es auch Möglich, Bilder proportional skalieren zu lassen oder auf ein bestimmtes maximum (höhe/breite) zu setzen.
|
Mit der hier geposteten ebenfalls, siehe jph's vorletzter Beitrag.
Okay, das sei hiermit klargestellt 
Geändert von seb (23.08.2002 um 22:24 Uhr).
|
|
|
24.08.2002, 15:17
|
#9
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Du benutzt zum erstellen des Bildes ImageCreate(), und dies benutzt nur eine Farbpalette von 256 Farben - egal, ob das Bild dann als gif, jpg oder png gespeichert wird.
Abhilfe schafft man dadurch nur mit imagecreatetruecolor() ... 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
24.08.2002, 15:57
|
#10
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Zitat:
|
Du benutzt zum erstellen des Bildes ImageCreate(), und dies benutzt nur eine Farbpalette von 256 Farben - egal, ob das Bild dann als gif, jpg oder png gespeichert wird.
|
-> siehe Anhang. Oder lügt das Programm?
|
|
|
24.08.2002, 16:15
|
#11
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Man, Du kapierst mich wohl nicht *g*
Klar, es gibt an, dass das Bild ein jpg im 24 Bit Format an. Das ist jedes jpg.
Aber - das Tumbnail wird zuerst erstellt (halt nur mit 256 Farben) und dann als .jpg gespeichert - aber das Bild, bzw. die verwendeten Farben werden sich dadurch nicht ändern.
Du kannst z.B. ein gif-Bild, das nur vier Farben benutzt, auch als .jpg speichern. Verwenden wird es dann auch immer noch nur diese vier Farben, auch wenn das Bild 24 Bit Farbinformationen enthält.
Alles klar jetzt? 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
24.08.2002, 16:22
|
#12
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Zitat:
|
Klar, es gibt an, dass das Bild ein jpg im 24 Bit Format an. Das ist jedes jpg.
|
Logisch, kein Thema. Und was is mit "gezählte Farben: 5801"?
|
|
|
25.08.2002, 18:40
|
#13
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Hat sich verzählt?
Sorry, aber Fakt ist:
- ImageCreate() erstellt Bilder mit 256 Farben
- ImageCreateTrueColor() erstellt Bilder mit 24Bit Farben.
Zitat:
ImageCreateTrueColor is used to create an image resource with an unlimited number of colors, which is useful when manipulating JPEG images, for example.
ImageCreate is used to create an image resource with a 256 color palette, sometimes called indexed color
|
Quelle: PHP.net
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
25.08.2002, 20:18
|
#14
|
|
TP-Veteran
Registriert seit: Jan 2002
|
Okay, ich hab rumprobiert, größere Thumbs erzeugt, ihre Farbtiefe reduziert, verglichen und auch in der php-Dokumentation nachgesehn.
Ergebnis is folgendes:
- Auch ein anderes Tool (XNView) behauptet, dass die Bilder in jedem getesteten Fall mehrere tausend verschiedene Farben verwenden, je größer das Thumb, desto mehr (verständlicherweise).
- Die Bilder erscheinen für mich farblich perfekt, nix was auf eine gegenüber dem Originalbild so drastisch reduzierte Farbtiefe spricht. Aaaber:
- Reduzierung der Farbtiefe auf 8 Bit ändert rein garnichts, ich seh keinen Unterschied zwischen 24 und 8 Bit.
- In den Kommentaren in der PHP-Doc hab ich an einer Stelle das hier gefunden:
PHP-Code:
In previous versions, ImageCreate worked OK for manipulating JPEG images. But in experimenting with the Win32 version of PHP 4.0.6, which I think relies on the GD 2.0.1 lib beta, you have to use ImageCreateTrueColor to get accurate color results with JPEGs.
Eine ältere Version verwendet mein Hoster wohl tatsächlich, denn imagecopyresampled (ab 2.0.1) funktioniert nicht, vielleicht is das eine Erklärung - allerdings auch wieder widersprüchlich zu der Tatsache, dass ich beim Reduzieren auf 256 Farben keine Änderung seh.
Obwohl ich nach wie vor find, dass die Bilder nicht nach 256 Farben aussehn und zwei verschiedene Grafiktools unabhängig meine Meinung teilen -
geb ich mich geschlagen, denn der fehlende sichtbare Unterschied zwischen behauptetem true color und umgewandelten 8 Bit spricht klar für dich.
|
|
|
26.08.2002, 10:29
|
#15
|
|
TP-Greis
Registriert seit: Mar 2001
Ort: Berlin, Germany
|
Ich weiss nicht, wie die Tumbs bei Dir aussahen. Aber bei manchen bei mir erstellten Tumbnails sah man gravierende Farbunterschiede ( nicht bei allen!) - seit ich ImageCreateTrueColor benutze, sind diese Unterschiede komplett weg und die Tumbs sind "farbenfroher".
Vielleicht habe ich auch andere Erfahrungen gemacht, weil auf meinem Server die aktuellste GD-Lib drauf ist und PHP 4.2.2 ...
Benutz doch in Deinem Script einfach eine if-clause a la:
PHP-Code:
if (function_exists("imagecreatetruecolor"))
{
$thumb = imagecreatetruecolor ($x, $y);
}
else
{
$thumb = imagecreate ($x, $y);
}
if (function_exists("imagecopyresampled"))
{
imagecopyresampled ($thumb, $image, 0, 0, 0, 0, $x, $y, $imagedata[0], $imagedata[1]);
}
else
{
imagecopyresized ($thumb, $image, 0, 0, 0, 0, $x, $y, $imagedata[0], $imagedata[1]);
}
Somit erhälst Du, je nach Server und Softwareausstattung, das bestmöglichste Ergebnis einen Thumbnails 
__________________
“My software never has bugs. It just develops random features ...”
» DevShack - die Website des freien Webentwicklers Boris
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
| | |