Zum Inhalt springen

Eigene Thumbsnails erstellen und in _processed_ abspeichern - wie?

Erstellt am 27. März 2015 · 3 Antworten · letzte Antwort am 9. Oktober 2015

Tags: ViewHelper, Dateien & FAL, Frage

marcom-YT ·

Kurze Zusammenfassung:
--------------------------
Was ich habe: FileReference Objekt meiner PDF-Datei

class ...Pdf2imageViewHelper extends Tx_Fluid_ViewHelpers_ImageViewHelper {
public function render(...){
$image = $this->imageService->getImage($src, $image, $treatIdAsReference);
}
}

Was ich gerne hätte: Eine darauf basierte Kopie, in fileadmin/_processed_ gespeichert, die beim nächsten Clear-Cache auch mitgelöscht wird und sich somit sauber in FAL integriert

Hintergrund:
--------------------------
Ich arbeite an einer Extension wo Benutzer ein PDF hochladen können, das dann auf der Website als Bild angezeigt wird (relevant z. B. für EPS-Daten).

Eigentlich läuft schon alles:
1) Benutzer legen als FAL Content Element das PDF an
2) Fluid Template ruft eigenen ViewHelper auf
3) ViewHelper liest das PDF ein, konvertiert es, speichert Bild ab, gibt den HTML-Code zurück

Allerdings bin ich mit Schritt 3 unzufrieden, weil ich direkt im user_upload Ordner eine neue Datei (datei.pdf.jpg) erstelle. Die liegt da natürlich alle Ewigkeit.

Habe versucht mich in die Struktur von ProcessedFile, TaskInterface und ProcessorInterface einzulesen, komme aber mangels Doku kaum weiter.

Über jeden Lösungsansatz wäre ich dankbar :-)

toifel ·

getImage holt dir nur das Original. Der imageService bietet noch die Funktion applyProcessingInstructions:

$processingInstructions = array(
                'width' => $width . 'c',
                'height' => $height . 'c',
                'minWidth' => $width,
                'minHeight' => $height,
                'maxWidth' => $width,
                'maxHeight' => $height,
        );
$processedImage = $this->imageService->applyProcessingInstructions($image, $processingInstructions);
$processedImageUri = $this->imageService->getImageUri($processedImage);
marcom-YT ·

Wenn ich das richtig sehe bringt mir applyProcessinginstructions hier aber nichts, oder? Mein Problem ist ja nicht das Erstellen eines Thumbnails sondern das Cache-konforme Speichern eines Thumbsnails.

terrorhamster ·

Wenn ich mich da kurz einklinken darf (sofern die Frage bereits so beantwortet wurde).

Ich versuche gerade verzweifelt auf den ImageService zuzugreifen, erhalte aber immer nur die Meldung
Call to a member function getImage() on a non-object

Wie muss ich den Zugriff auf den ImageService einbinden? Muss ich dafür etwas besonderes beachten?