Seite 1 von 1
schlauer image-resizer ohne java-script
Verfasst: 28.04.2005 00:17
von CC_FH-Bielefeld
was mich an allen bisherigen automatischen bild-verkleinerern stört:
javascript... meine lösung: GetImageSize aus der gd-lib
ich hab ein wenig gegoogelt und bin auf folgenden schönen code gestoßen:
Code: Alles auswählen
<?php
$size = GetImageSize("{URL}");
$width = $size[0];
if ( $width > 300)
{
$width = '300';
}
?>
<img src="{URL}" width="<?php echo $width; ?>">
meine frage:
ich würde gerne $width als wert an bbcode.tpl übergeben, denn dort heißt es bei mir:
Code: Alles auswählen
<!-- BEGIN img --><a href="{URL}" target="_blank"><img src="{URL}" border="0" width="{WIDTH}"></a><!-- END img -->
wie schaffe ich das?
frage, die mich auch weiterbringt: wo wird die variable {URL} für die verwendung in der bbcode.tpl gebildet?
ich werd irgendwo:
einfügen müssen...
wenn ichs fertig hab, wird das ein sicher interessater mod, für alle die gd-libs installiert haben!
Verfasst: 28.04.2005 10:11
von Fundus
bbcode.php
mal eine frage der gibt aber keine verkleinerte variante aus, oder prüft er das und setzt dann die größe?
wenn das Verlinkte bild nicht erreichbar ist dauert es eine ewigkeit den Thread zu generieren
ein ähnliches Prob gibts zB beim RemoteAvatar-Resize.
eine idee währe es villeicht eine resizde Version des Bildes in eine Art Cache zu laden (url als bildtitel) der gelegentlich geleert wird, aber da ist der Aufwand (platz) wohl entgegen jeglichem nutzen

Verfasst: 28.04.2005 10:54
von Loeffel
Ich habe mir für den Limit_Image_Width_Mod einen kleinen Zusatz programmiert. Er überprüft vorher, ob das Bild noch da ist oder nicht, um die Ladezeiten nicht ins endlose wandern zu lassen.
Code: Alles auswählen
$IsPicture = True;
$TheImage = $images[1][$index];
$testfile = fopen ("$TheImage", "r");
if ($testfile)
{
$read = fread($testfile, 15000);
if (eregi("<HTML>", $read))
{
$IsPicture = False;
}
}
else
{
$IsPicture = False;
}
fclose($file);
In $images[1][$index] steht die jeweilige Bild URL, später wird dann noch zusätzlich die URL des nicht vorhandenen Bildes temporär durch eine URL auf ein Fehlerbild ersetzt.
[EDIT]
Glatt vergessen, der besagte Mod benutzt die GD_Lib, um die Bildgröße zu berechnen. Es wird nur ein Javascript für den Popup genutzt, um das Bild in der Originalgröße anzuzeigen.
[/EDIT]
Verfasst: 28.04.2005 11:14
von CC_FH-Bielefeld
Loeffel hat geschrieben:
[EDIT]
Glatt vergessen, der besagte Mod benutzt die GD_Lib, um die Bildgröße zu berechnen. Es wird nur ein Javascript für den Popup genutzt, um das Bild in der Originalgröße anzuzeigen.
[/EDIT]
wieso finde ich den mod denn nicht?
der wäre dann ja genau das, was ich selbst machen wollte...
@fundus: nein, eine überprüfung, verkleinerung oder ähnliches ist nicht dabei, aber darauf möchte ich erstmal verzichten! es soll erstmal einfach nur laufen

an welcher stelle im bbcode.php mach ich die zuordnung bzw. variablenübergabe denn?
Verfasst: 28.04.2005 11:50
von Loeffel
Du mußt da im englischen Forum schauen.
Du findest ihn
hier, dort findest Du auch die komplette Änderung, welche ich gemacht habe, Du kannst sie aber auch gerne als EM kompatible Installationsroutine haben, wenn Du möchtest.
Verfasst: 28.04.2005 12:00
von CC_FH-Bielefeld
danke für den hinweis!
auch fürs em, aber em-kompatibel ist mein board schon lange nimmer
http://campus.fh-bielefeld.de
Verfasst: 28.04.2005 14:40
von saerdnaer
naja, aber da gäbs auch ne einfachere lösung...
in der bbcode.php:
suchen:
Code: Alles auswählen
$bbcode_tpl['img'] = str_replace('{URL}', '\\1', $bbcode_tpl['img']);
darunter einfügen:
Code: Alles auswählen
$bbcode_tpl['img'] = str_replace('{WIDTH}', "' . phpbb_image_size(0, '\\1') . '", $bbcode_tpl['img']);
$bbcode_tpl['img'] = str_replace('{HEIGHT}', "' . phpbb_image_size(1, '\\1') . '", $bbcode_tpl['img']);
$bbcode_tpl['img'] = "'" . $bbcode_tpl['img'] . "'";
suchen:
ersetzen durch:
und dann noch folgende funktion am ende vor ?> einfügen:
Code: Alles auswählen
function phpbb_image_size($a, $img)
{
global $phpbb_root_path;
static $backup;
if ( empty($backup[$img]) )
{
$t = getimagesize($phpbb_root_path. 'images/' . $img);
if ( $t[0] > $max_size[0] )
{
$t[0] = $max_size[0];
$t[1] = round( ( $t[1] / $t[0] ) * $max_size[0] );
if ( $t[1] < 1 )
{
$t[1] = 1;
}
}
if ( $t[1] > $max_size[1] )
{
$t[0] = round( ( $t[0] / $t[1] ) * $max_size[1] );
$t[1] = $max_size[1];
if ( $t[0] < 1 )
{
$t[0] = 1;
}
}
$backup[$img][0] = $t[0];
$backup[$img][1] = $t[1];
}
return $backup[$img][$a];
}
und dann natürlich noch in der templates/bbcode.tpl
suchen:
Code: Alles auswählen
<!-- BEGIN img --><img src="{URL}" border="0" /><!-- END img -->
ersetzen durch
Code: Alles auswählen
<!-- BEGIN img --><img src="{URL}" width="{WIDTH}" height="{HEIGHT}" border="0" /><!-- END img -->
das ganze verlangsammt natürlich auch etwas den seitenaufbau, da der webserver jeweils vorher nachfragen muss welche maße eine grafik hat.
ah
Verfasst: 28.04.2005 15:20
von voodootype
hallo!
genau so etwas suche ich, da immer user bilder ins forum posten, welche das design sehr empfindlich stören.
funktioniert der mod einwandfrei und kann ich so vorgehen wie in deinem letzten post? ist das alles?
danke schon mal im vorraus

Verfasst: 28.04.2005 16:52
von CC_FH-Bielefeld
also der mod von Leuchte funzt perfekt, den zweiten habe ich noch nicht umgesetzt
Verfasst: 28.04.2005 22:10
von Loeffel
@saerdnaer
Dabei geht es ja bei dem Mod von Vic, daß nicht jedesmal die Maße neu berechnet werden müssen! Sie werden gecached, also ist nur der erste Aufbau langsam, die restlichen Aufrufe sind dann "normal schnell".
Das einzige Problem ist, daß eine lange Wartezeit in Kauf genommen werden muß, wenn die Datei nicht mehr existiert, dies konnte ich allerdings mit meiner Änderung beheben. Bisher hatte ich seitdem keine Probleme mehr mit langen Ladezeiten.