Bildgröße ermitteln

Sasser

Erfahrenes Mitglied
Hallo Leute!

Ich habe eine Funktion, mit der ein BB-Code umgewandelt wird.

Nun kann es ja vorkommen, dass ein User ein zu Großes Bild verlinkt und dann möchte ich es gern auf eine bestimmte Größe begrenzen!

Wie kann man das im folgenden verbauen?

PHP:
$message = preg_replace('/\[IMG\](.*?)\[\/IMG\]/', '<img src="$1">', $message);
 
Ja, nur weiß ich nicht wie ich das oben mit einpflege, sodass er bei jedem [ IMG ] schaut, ob das Bild zu groß ist und wenn nicht, dann festlegen...
 
Schreib dir dafür am besten eine Funktion, die du dann wie folgt aufrufen kannst:
PHP:
$message = preg_replace('/\[IMG\](.*?)\[\/IMG\]/e', 'embedImage("$1")', $message);
$message = preg_replace_callback('/\[IMG\](.*?)\[\/IMG\]/', 'embedImage', $message);
 
Ich danke dir!

Hab das hier jetzt ausprobiert, aber es will nicht so recht...

PHP:
# Maximale Breite
$maxsize = "100";

$message = preg_replace('/\[IMG\](.*?)\[\/IMG\]/e', 'embedImage("$1","$maxsize")', $message);
$message = preg_replace_callback('/\[IMG\](.*?)\[\/IMG\]/', 'embedImage', $message);

function embedImage($1,$maxsize)
{
if (getimagesize("$1") > $maxsize)
{
return $maxsize;
}
}
 
Mein Beispiel zeigt zwei Möglichkeiten, wie dies umzusetzen ist. Also entweder:
PHP:
$message = preg_replace('/\[IMG\](.*?)\[\/IMG\]/e', 'embedImage("$1")', $message);
Oder:
PHP:
$message = preg_replace_callback('/\[IMG\](.*?)\[\/IMG\]/', 'embedImage', $message);
Wie die Funktion dafür auszusehen hat, kannst du den Beispielen in der Dokumentation entnehmen.
 
Also ist das so korrekt, denn das ist das einzige Beispiel um die Breite eines Bildes einer URL raus zufinden:

PHP:
# Maximale Breite
$maxsize = "100";

$message = preg_replace('/\[IMG\](.*?)\[\/IMG\]/e', 'embedImage("$1","$maxsize")', $message);

function embedImage($1,$maxsize)
{
if (getimagesize("$1") > $maxsize)
{
return $maxsize;
}
}
 
Variablen dürfen nicht mit einer Zahl beginnen. Und ob $maxsize in dem Kontext existiert, weiß ich auch nicht.
 
Super, vielen Dank!

ICh habe jetzt folgendes Zusammengebastelt,

allerdings nimmt er jetzt irgendwie immer die zuvor angegebene Breite, obwohl das Bild diese Größe nicht übersteigt!?

PHP:
$maxsize = "200";

$message = preg_replace('/\[IMG\](.*?)\[\/IMG\]/e', 'embedImage("$1","$maxsize")', $message);

echo $message;

function embedImage($url,$maxsize)
{
if (getimagesize("$url") > $maxsize)
{
return "<img src='".$url."' width='".$maxsize."' border='0'>";
}
else
{
return "<img src='".$url."' border='0'>";
}
}



//edit

OK, ich hab den Fehler gefunden! ;)

Das folgende funktioniert super:

PHP:
$maxsize = "100";

$message = preg_replace('/\[IMG\](.*?)\[\/IMG\]/e', 'embedImage("$1","$maxsize")', $message);

echo $message;

function embedImage($url,$maxsize)
{
$pic = getimagesize("$url");

if ($pic[0] > $maxsize)
{
return "<img src='".$url."' width='".$maxsize."' border='0'>";
}
else
{
return "<img src='".$url."' border='0'>";
}
}

Irgendwelche Einwände?
 
Zurück