rotfuchs
Bekanntes Gesicht
- Mitglied seit
- 07.01.2007
- Beiträge
- 4.159
- Reaktionspunkte
- 16
Als einer der Wenigen die Bilder in ihrem Cynamite-Profil als einen wesentlichen Bestandteil der Site betrachten, konnte ich der Abschaltung des IMG-Tag nicht tatenlos zusehen.
Ich überlegte mir eine Anzahl von alternativen Lösungsmöglichkeiten, die es uns wieder erlauben, Bilder in Profilen einzubauen und dabei nicht gleich das Layout zerstören.
Meine erste Idee war die Bilder mittels eines Scripts auf dem Cynamite-Server direkt zu verkleinern, jedoch wären die Bilder danach direkt auf dem Server gespeichert was für Cynamite unnötigen Platzverbrauch und Traffickosten zufolge hat.
Daher entwarf ich ein PHP-Script das mit den Attributen width und height die Bildgröße reguliert. Gesagt getan, das Ergebnis sieht wie folgt aus:
Einen Haken hatte meine Lösung allerdings noch, wo sollte man das Script im Programmcode genau unterbringen? Logischerweise bietet sich das Parser-Script dafür an, wo BBCode in HTML übersetzt wird. Im Nachhinein war der Parser eine Falle, denn ohne den Parser von Grund auf neu zu programmieren war mein Script nicht umsetzbar.
Daraufhin verlagerte ich mein Script aus den CMS, und führte es als einzelne Anwendung fort. Ich erweiterte den BBCode um die Werte X und Y die für Breite und Höhe stehen. Mein Script hatte die Aufgabe das Bild entsprechend den Maßen des Profils anzupassen und dieser über X/Y im IMG-Tag des BBCode an den Parser weiterzuleiten.
Ein Beispiel zur Verdeutlichung:
Das Script in Aktion (nur IMG und Abschicken Buttons funktionieren):
http://padercity.com/sizeme/
Parser-Script mit erweiterter Suchmaske:
Meine Lösungsansätze sollten nicht umsonst sein, ich schrieb ein PN an Florian mit kompletten Script sowie Lösungsvorschlägen. Es stellte sich leider heraus, dass mein Script auf ColdFusion in dieser Weise nicht umsetzbar sei.
So veröffentliche ich nun meine Erkenntnisse hier, falls jemand etwas damit anfangen kann. Sollten euch bessere Ideen einfallen, wie man das Problem mit den IMG-Tags in den Profilen lösen könnte: Ich bin für jeden Vorschlag offen und werde sie, sofern die Idee machbar ist, an die betreffende Stelle weiterleiten.
Ich überlegte mir eine Anzahl von alternativen Lösungsmöglichkeiten, die es uns wieder erlauben, Bilder in Profilen einzubauen und dabei nicht gleich das Layout zerstören.
Meine erste Idee war die Bilder mittels eines Scripts auf dem Cynamite-Server direkt zu verkleinern, jedoch wären die Bilder danach direkt auf dem Server gespeichert was für Cynamite unnötigen Platzverbrauch und Traffickosten zufolge hat.
Daher entwarf ich ein PHP-Script das mit den Attributen width und height die Bildgröße reguliert. Gesagt getan, das Ergebnis sieht wie folgt aus:
Code:
<?php
$imagepfad = $_GET['imagepfad'];
$size = getimagesize($imagepfad);
//Größe definieren
$breite = $size[0];
$hoehe = $size[1];
//Wenn Bild zu groß...
if ( $size[0] > 400 ) {
//Prozentwert um Höhe proportional anzupassen
$proz = 400/$size[0];
//Größe neu definieren
$breite = 400;
$hoehe = round($size[1] * $proz, 0);
}
//Ausgabe
echo "<img src=\"$imagepfad\" width=\"$breite\" height=\"$hoehe\" border=\"0\" />";
?>
Daraufhin verlagerte ich mein Script aus den CMS, und führte es als einzelne Anwendung fort. Ich erweiterte den BBCode um die Werte X und Y die für Breite und Höhe stehen. Mein Script hatte die Aufgabe das Bild entsprechend den Maßen des Profils anzupassen und dieser über X/Y im IMG-Tag des BBCode an den Parser weiterzuleiten.
Ein Beispiel zur Verdeutlichung:
Code:
[IMG:X=400:Y=111]http://www.google.de/ig/images/skins/teahouse/2pm/header_bg.jpg[/IMG]
http://padercity.com/sizeme/
Parser-Script mit erweiterter Suchmaske:
Code:
<?php
function bbcode ($entry) {
global $query,$result2,$connect,$replace,$table_smilies;
/*
$query="SELECT * FROM $table_smilies";
$result2 = mysql_query($query, $connect);
while($replace=mysql_fetch_array($result2)){
$entry = preg_replace("/".preg_quote($replace[//code])."/","<img src=\"$replace[htmlreplace]\">",$entry);}
*/
$entry = eregi_replace("
","<br>",$entry);
$entry = eregi_replace("\[b\]([^\[]+)\[/b\]","<b>\\1</b>",$entry);
$entry = eregi_replace("\[i\]([^\[]+)\[/i\]","<i>\\1</i>",$entry);
$entry = eregi_replace("\[u\]([^\[]+)\[/u\]","<u>\\1</u>",$entry);
[COLOR=Black]//$entry = eregi_replace("\[img\]([^\[]+)\[/img\]","<img src=\"\\1\" border=\"0\">",$entry);$entry = eregi_replace("\[mail\]([^\[]+)\[/mail\]","<a href=\"mailto:\\1\">\\1</a>",$entry);
$entry = eregi_replace("\[url\]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_blank\">\\1</a>",$entry);
$entry = eregi_replace("\[url=\"([^\"]+)\"]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_blank\">\\2</a>",$entry);
[COLOR=Red]$entry = eregi_replace("\[IMG:X=([^\"]+):Y=([^\"]+)]([^\[]+)\[/IMG\]","<img src=\"\\3\" width=\"\\1\" height=\"\\2\" />",$entry);
return $entry; }
?>
Meine Lösungsansätze sollten nicht umsonst sein, ich schrieb ein PN an Florian mit kompletten Script sowie Lösungsvorschlägen. Es stellte sich leider heraus, dass mein Script auf ColdFusion in dieser Weise nicht umsetzbar sei.
So veröffentliche ich nun meine Erkenntnisse hier, falls jemand etwas damit anfangen kann. Sollten euch bessere Ideen einfallen, wie man das Problem mit den IMG-Tags in den Profilen lösen könnte: Ich bin für jeden Vorschlag offen und werde sie, sofern die Idee machbar ist, an die betreffende Stelle weiterleiten.