+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Kann man Bilder über einen Komponententask ausgeben?

  1. #1
    Neu an Board
    Registriert seit
    02.04.2010
    Ort
    Frankfurt am Main
    Alter
    35
    Beiträge
    2
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Kann man Bilder über einen Komponententask ausgeben?

    Hallo,

    ich habe ein Plugin geschrieben, welches Bilder in Beiträgen einfügt. Das Plugin parst den Text nach folgenden Beispiel:
    Code:
    {loadimage beispiel.png:200:150:5}
    und ersetzt es durch einen IMG-Tag. Das IMG-Tag ruft ein PHP-Script auf, welches dann dynamische Thumbnails erstellt (nach dem Beispiel width=200, height=150 und 5° gedreht).
    HTML-Code:
    <img src="thumbnail.php?image=beispiel.png&width=200&height=150&degree=5" />
    Soweit funktioniert es auch alles wunderbar. Indem ich den Content-Type in z.B. image/png ändere, gibt ja das Script dann ein png-Image aus. Ich finde das ganze aber nicht so toll, da ich ja ein Framework-fremdes Script im Joomla-System hinterlegen muss und daher würde ich dies gerne über z.B. einer Komponente erledigen.

    HTML-Code:
    <img src="index2.php?option=com_thumbnail&task=thumbnail&width=200&height=150&degree=5&image=beispiel.png" />
    Aber ich weiss nicht, wie ich den Content-Typ ändern kann und ausserdem darf ja nicht das HTML-Grundgerüst ausgegeben werden.

    Hat jemand vielleicht eine Idee oder das ganze vielleicht schon einmal realisiert?

    Danke im vorraus und Gruß
    Geändert von ffmSoft (03.04.2010 um 22:00 Uhr)

  2. #2
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen

    Standard

    Hallo ffmSoft,
    ja - man kann Bilder über einen Komponententask ausgeben - hätte bei dem Titel fast nicht weitergelesen... gab letztens einen Titel wie man PHP Code in CSS Dateien ausführen kann...

    Sorry - erst einmal - Willkommen im Forum

    Nun: Die Komponente ohne zusätzliches "drumherum" ausgeben kannst Du mit der Option tmpl=component was noch ein html Gerüst beinhaltet oder mit format=raw was eben genau dies tut..
    Der Aufruf wäre also:
    Code:
    index.php?option=com_KOMPONENTE&format=raw&task=bildAusgeben
    Hinweis: Die index2.php musst Du nicht aufrufen - schau sie Dir mal an..

    Weiter.. Da Du zum Ausgeben des Bildes eigentlich recht wenig Code und noch weniger Template brauchst, würde ich das ganze der Einfachheit halber gleich im Controller abhandeln. Ansonsten brauchst Du eine zusätzliche Viewklasse die automatisch aufgerufen wird (view.raw.php) und eben ein Template..

    Nehmen wir also eine Funktion im Controller, beziehen ein JDocument Objekt und rufen die Methode setMimeEncoding() auf und geben ihr z.B. den Parameter: 'image/png' - that's all..
    PHP-Code:
    class KOMPONENTEController extends JController
    {
       function 
    bildAusgeben()
       {
          
    //-- Bild generieren...

          //-- PHP 4
          
    $document JFactory::getDocument();
          
    $document->setMimeEncoding('image/png');

          
    //-- PHP 5
          
    JFactory::getDocument()->setMimeEncoding('image/png');

          return;
       }

    Viel Spass mit den Bildern
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

  3. Erhielt Danksagungen von:


  4. #3
    Neu an Board
    Registriert seit
    02.04.2010
    Ort
    Frankfurt am Main
    Alter
    35
    Beiträge
    2
    Bedankte sich
    1
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Danke, format=raw war genau das was ich gesucht habe. Das mit dem setMimeEncoding hatte ich schon selber in der API gefunden, allerdings kam eben trotzdem das Grundgerüst mit raus.

    Gruß ffmSoft

  5. #4
    Neu an Board
    Registriert seit
    28.04.2010
    Beiträge
    1
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Ähnliches Problem

    Ich habe ein ganz ähnliches Problem.
    User können verschiedene Dateien hochladen. z.B. Bilder verschiedener Art oder PDFs.
    Um den Link zum Filesystem nicht nach aussen zu geben und noch Rechteprüfungen machen zu können möchte ich die Zugriffe darauf über eine eigene Funktion laufen lassen.

    Mein Code sieht sehr ähnlich aus:

    $id = JRequest::getVar('UidID');
    $model =& $this->getModel();
    $UserItemDoc = $model->getDocument($id);


    $doc =& JFactory::getDocument();
    $doc->setMimeEncoding($UserItemDoc->UidMimeType);
    readfile($UserItemDoc->UidPath.$UserItemDoc->UidFilename);

    $UserItemDoc = Dokument in der DB mit Feldern für MimeType und pfad zum File.

    readfile schreibt den Inhalt des Files in den outputstream.
    format=raw wird mitgegeben.

    Interessanterweise funktioniert das bei pdf files absolut problemlos. Bei Bildern allerdings wird mit eine html Seite gerendert die ein leeres img Tag enthält. Sehr seltsam. Setze ich den Mimetyp nicht, wird das bild zwar raus geschrieben aber eben als text...

    Weiß jemand RaT?

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein