Album Mod - "getimagesize" für Thumbnail Problem
Verfasst: 17.07.2006 20:44
Hallo zusammen und vorab Danke für die Hilfe!
Für einen Pro ist das hier in max. 5-10 Min gegessen
Folgendes:
1.
Ich benutze Smartors Album Mob und ein kleines Hack, um mir auf irgend einer Seite z.B. das neuste Foto bzw. dessen Thumbnail anzeigen zu lassen.
Das sieht in der page_header.php im Orginal so aus:
2.
Funktioniert auch alles wunderprächtig, schon immer.
Was mir jedoch schon seit Monaten auf den Nerv geht, ist die Tatsache das mein Layout immer zerhäckselt wird. Warum? Das Thumbnail bekommt natürlich keine Größenangabe mitgegeben (Höhe und Breite).
Und da ich diesbezüglich nichts gefunden habe, habe ich mich mal hingesetzt und eine Lösung geschrieben.
Das sieht dann wie folgt aus:
Folgende Änderungen habe ich vorgenommen:
- Mit , p.pic_thumbnail as picthumbnail wird jetzt zusätzlich der Dateiname des Thumbnails ausgelesen
- Folgender Code hinzugefügt, um Dateigröße auszulesen, etc... Profis werden rauslesen können was ich damit bezwecke:
$pic_dimension = getimagesize(ALBUM_UPLOAD_PATH .'cache/'. $picrow['picthumbnail']);
$pic_thumb = $pic_dimension[3];
3.
Auch dies funktioniert wunderprächtig! (Auch wenn ich nicht weiss ob ich es sauber oder dirty gecoded habe
Das einzigste Problem besteht jetzt darin:
Er lädt den Namen der Thumbnaildatei aus der Datenbank und versucht dann die Breite und Höhe auszulesen, da er ja von mir gesagt bekommen hat wo die Thumbnaildateien liegen. Das klappt auch prima, aber natürlich NICHT, wenn das Thumbnail noch nicht vorhanden ist. Das resultiert dann natürlich in einer Fehlermeldung auf der Seite
4.
Lösung!
Das einzigste was ich nun bräuchte wäre jemand der mir ein kleines Workaround für mein Problem schreibt. *liebguck*
Vorschlag 1: Zuerst prüfen, ob die Thumbnail-Datei an angegebener Stelle überhaupt vorhanden ist, ansonsten den Versuch die Größe des Thumbnails auszulesen abbrechen.
Vorschlag 2: Sobald ein User ein Foto hochlädt, sollte sofort das dazu passende Thumbnail generiert werden. Dann ist es sofort verfügbar und nicht erst wenn es das erste mal abgerufen wurde.
--------------------
Soo ich hoffe ich konnte mein winziges Problem gut erläutern und mir kann geholfen werden, denn für einen Pro der weiss was ich meine ist das wohl nur eine Sache von 2-3 Zeilen Code, um das Problem zu beseitigen.
Ich danke allen die mir helfen wollen, können oder es versuchen vielmals!

Für einen Pro ist das hier in max. 5-10 Min gegessen

Folgendes:
1.
Ich benutze Smartors Album Mob und ein kleines Hack, um mir auf irgend einer Seite z.B. das neuste Foto bzw. dessen Thumbnail anzeigen zu lassen.
Das sieht in der page_header.php im Orginal so aus:
Code: Alles auswählen
$Display = 'Recent';
$CategoryID = 0;
if ($Display == 'Recent')
{
$sql = "SELECT p.pic_id, p.pic_title, p.pic_username, p.pic_user_id, p.pic_time, p.pic_desc, p.pic_lock, p.pic_approval, u.username
FROM ". ALBUM_TABLE ." AS p
LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
WHERE pic_approval = 1 AND pic_lock = 0 AND pic_cat_id = $CategoryID
ORDER BY pic_time DESC
LIMIT 0,1";
}
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not query album information', '', __LINE__, __FILE__, $sql);
}
$picrow = $db->sql_fetchrow($result);
$pic_poster = '<a href="'. append_sid("profile.$phpEx?mode=viewprofile&". POST_USERS_URL .'='. $picrow['pic_user_id']) .'">'. $picrow['pic_username'] .'</a>';
Funktioniert auch alles wunderprächtig, schon immer.
Was mir jedoch schon seit Monaten auf den Nerv geht, ist die Tatsache das mein Layout immer zerhäckselt wird. Warum? Das Thumbnail bekommt natürlich keine Größenangabe mitgegeben (Höhe und Breite).
Und da ich diesbezüglich nichts gefunden habe, habe ich mich mal hingesetzt und eine Lösung geschrieben.
Das sieht dann wie folgt aus:
Code: Alles auswählen
$Display = 'Recent';
$CategoryID = 0;
if ($Display == 'Recent')
{
$sql = "SELECT p.pic_id, p.pic_title, p.pic_username, p.pic_user_id, p.pic_time, p.pic_desc, p.pic_lock, p.pic_approval, u.username, p.pic_thumbnail as picthumbnail
FROM ". ALBUM_TABLE ." AS p
LEFT JOIN ". USERS_TABLE ." AS u ON p.pic_user_id = u.user_id
WHERE pic_approval = 1 AND pic_lock = 0 AND pic_cat_id = $CategoryID
ORDER BY pic_time DESC
LIMIT 0,1";
}
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not query album information', '', __LINE__, __FILE__, $sql);
}
$picrow = $db->sql_fetchrow($result);
$pic_poster = '<a href="'. append_sid("profile.$phpEx?mode=viewprofile&". POST_USERS_URL .'='. $picrow['pic_user_id']) .'">'. $picrow['pic_username'] .'</a>';
$pic_dimension = getimagesize(ALBUM_UPLOAD_PATH .'cache/'. $picrow['picthumbnail']);
$pic_thumb = $pic_dimension[3];
- Mit , p.pic_thumbnail as picthumbnail wird jetzt zusätzlich der Dateiname des Thumbnails ausgelesen
- Folgender Code hinzugefügt, um Dateigröße auszulesen, etc... Profis werden rauslesen können was ich damit bezwecke:
$pic_dimension = getimagesize(ALBUM_UPLOAD_PATH .'cache/'. $picrow['picthumbnail']);
$pic_thumb = $pic_dimension[3];
3.
Auch dies funktioniert wunderprächtig! (Auch wenn ich nicht weiss ob ich es sauber oder dirty gecoded habe

Das einzigste Problem besteht jetzt darin:
Er lädt den Namen der Thumbnaildatei aus der Datenbank und versucht dann die Breite und Höhe auszulesen, da er ja von mir gesagt bekommen hat wo die Thumbnaildateien liegen. Das klappt auch prima, aber natürlich NICHT, wenn das Thumbnail noch nicht vorhanden ist. Das resultiert dann natürlich in einer Fehlermeldung auf der Seite

4.
Lösung!
Das einzigste was ich nun bräuchte wäre jemand der mir ein kleines Workaround für mein Problem schreibt. *liebguck*
Vorschlag 1: Zuerst prüfen, ob die Thumbnail-Datei an angegebener Stelle überhaupt vorhanden ist, ansonsten den Versuch die Größe des Thumbnails auszulesen abbrechen.
Vorschlag 2: Sobald ein User ein Foto hochlädt, sollte sofort das dazu passende Thumbnail generiert werden. Dann ist es sofort verfügbar und nicht erst wenn es das erste mal abgerufen wurde.
--------------------
Soo ich hoffe ich konnte mein winziges Problem gut erläutern und mir kann geholfen werden, denn für einen Pro der weiss was ich meine ist das wohl nur eine Sache von 2-3 Zeilen Code, um das Problem zu beseitigen.
Ich danke allen die mir helfen wollen, können oder es versuchen vielmals!
