Profil-Bilder auf Cynamite

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:
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\" />";

?>
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:
Code:
 [IMG:X=400:Y=111]http://www.google.de/ig/images/skins/teahouse/2pm/header_bg.jpg[/IMG]
Das Script in Aktion (nur IMG und Abschicken Buttons funktionieren):
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.:)
 
Ist vielleicht sogar jemand hier, der Coldfusion beherrscht und einen Workaround kennt? Uns fehlt im Moment leider die Zeit, um uns da reinzuwurschteln :heul:
 
Coldfusion kostet in der Standard Version ca. 1.500€, verglichen mit der Enterprise ist das ein echtes Schnäppchen. Wenigstens gibt es eine kostenlose Testversion, ob sich aber jemand damit vertraut gemacht hat ist unwahrscheinlich.

Meine Ideen sind mir aber immer noch nicht ausgegangen (von einfach bis schwer):
- Mein IMG-Button als Link unter dem Bild-Upload Tool
- ein iframe unter den Editor setzen was mein Script aufruft
- neben dem Standard-Editor eine erweiterte Version basteln, der auf Knopfdruck gewechselt werden kann (WYSIWYG)
(Voraussetzung ist immer der erweiterte BBCode)

Edit:
Die Lösung von den Blogs könnte man theoretisch auch übernehmen. D.h. anstatt das Bild hochzuladen, wird lediglich die Bild-Adresse übertragen, vom PHP-Script in der passenden Größe gebracht und in der Datenbank gespeichert. Über [Bild1] etc. schließlich in den Text übertragen.
 
Zuletzt bearbeitet:
wieso "iframe"? Für was gibt es PHP-include?
 
ich98 schrieb:
wieso "iframe"? Für was gibt es PHP-include?
Die Hauptseite barsiert auf Coldfusion und benutzt eine eigene Sprache (CFML), wichtige PHP-Funktionen für das Script fehlen leider. :heul:
 
da muss es doch einen Ersatz für iframe geben.
 
Das schon, dafür fehlen aber anderen Funktionen wzb. getimagesize() mit dem ich die Größe des Bildes abfrage.
 
Wenn die wichtigen Sachen fehlen, dann muss es doch einen Ersattfunktion geben, dass wäre ja sonst ein indirekter rückschritt. :o
 
Eine ähnliche Funktion muss es geben, zumindest habe ich eine Script gefunden, was jemand als Ersatz für getimagesize() geschrieben hat.

Ich frage mich manchmal wirklich welche Vorteile ColdFusion gegenüber PHP bieten soll. Alle mir bekannten Websites (ausgenommen Cynamite) die auf ColdFusion setzen, haben entweder viele Einschränkungen oder stecken voller Fehler *hust... Computec...*. Andererseits fehlte mir bisher das nötige Kleingeld für ein Vergleich zwischen ColdFusion und PHP.
 
Computec ist ja nicht mal in der Lage, einen korrekten Doctype anzugeben :D
 
Zurück