schlauer image-resizer ohne java-script

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

schlauer image-resizer ohne java-script

Beitrag 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:

Code: Alles auswählen

'WIDTH' => $width,
einfügen müssen...

wenn ichs fertig hab, wird das ein sicher interessater mod, für alle die gd-libs installiert haben!
Campus Commander - FH Bielefeld
Fundus
Mitglied
Beiträge: 488
Registriert: 29.03.2004 21:22

Beitrag 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 :roll:
Loeffel
Mitglied
Beiträge: 97
Registriert: 09.12.2004 15:06
Wohnort: Overath

Beitrag 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]
Yours
Loeffel
Murphy: Professionals are predictable, but beware the world is full of amateurs.
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

Beitrag 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?
Campus Commander - FH Bielefeld
Loeffel
Mitglied
Beiträge: 97
Registriert: 09.12.2004 15:06
Wohnort: Overath

Beitrag von Loeffel »

Du mußt da im englischen Forum schauen. :wink:

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.
Yours
Loeffel
Murphy: Professionals are predictable, but beware the world is full of amateurs.
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

Beitrag 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
Campus Commander - FH Bielefeld
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag 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:

Code: Alles auswählen

$patterns[] = "#\[img:$uid\](.*?)\[/img:$uid\]#si";
ersetzen durch:

Code: Alles auswählen

$patterns[] = "#\[img:$uid\](.*?)\[/img:$uid\]#sie";
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
voodootype
Mitglied
Beiträge: 64
Registriert: 21.03.2005 13:36

Beitrag 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 :)
Benutzeravatar
CC_FH-Bielefeld
Mitglied
Beiträge: 62
Registriert: 13.10.2004 21:34
Wohnort: Bielefeld
Kontaktdaten:

Beitrag von CC_FH-Bielefeld »

also der mod von Leuchte funzt perfekt, den zweiten habe ich noch nicht umgesetzt
Campus Commander - FH Bielefeld
Loeffel
Mitglied
Beiträge: 97
Registriert: 09.12.2004 15:06
Wohnort: Overath

Beitrag 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.
Yours
Loeffel
Murphy: Professionals are predictable, but beware the world is full of amateurs.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“