Hallo Liebes Forum
Wieder mal melde ich mich mit einen Problem 😃
Und zwar geht es um die Bildverarbeitung in einem Backend-Modul, beispielsweise für eine Thumbnailgenerierung.
Bislang habe ich dies nur in Frontend-Plugins verwendet, und zwar habe ich immer ein cObj instanziert und dessen IMAGE-Methode benutzt.
Die Funktion sieht dann ungefähr so aus:
function renderImage($str_imagename,$maxW="100px") {
unset($imgconf);
$imgconf["file"] = "uploads/tx_memorygame/".$str_imagename;
$imgconf["file."]["ext"] = "png";
$imgconf["file."]["quality"] = "100";
$imgconf["file."]["maxW"] = $maxW;
$cObj = new tslib_cObj();
$str_imagecode = $cObj->IMAGE($imgconf);
return $str_imagecode;
}
Jetzt geht es aber darum ein Thumbnail in einem Backend-Modul generieren zu lassen.
Dort steht allerdings die Klasse cObj nicht zur Verfügung 😢
Hat jemand einen Lösungsansatz zu diesem Problem?
Gibt es einen bestimmten weg, wie es "richtig" gemacht werden sollte, oder muss ich beginnen zu basteln?
Beste Grüsse und Danke schon im Voraus für die Hilfe!
Für Thumbnail-Generierung im Backend gibt es folgende Funktion:
t3lib_befunc::getThumbnail()
Besten Dank für den Tipp!
Ich habs gleich mal ausprobiert, jedoch werden die Vorschaubilder nicht generiert 😢
Ich rufe die Funktion im Backend-Modul wie folgt auf:
t3lib_BEfunc::getThumbNail('../../../../t3lib/thumbs.php','../../../../uploads/tx_memorygame/'.$arr_res[0]['card']);
Im Quelltext sieht's dann so aus:
<img src="t3lib/thumbs.php?&dummy=1238659047&file=..%2F..%2F..%2F..%2Fuploads%2Ftx_memorygame%2F018_02.jpg&md5sum=64e347981f" title="018_02.jpg" alt="">
Dass das File "thumbs.php" sowie das zu verarbeitende Bild auch tatsächlich existiert habe ich wie folgt nachgeprüft:
if(file_exists('../../../../t3lib/thumbs.php')) {
echo "thumbs.php existiert!";
}
if(file_exists("../../../../uploads/tx_memorygame/".$arr_res[0]['card'])) {
echo "bild existiert!";
}
Da beide "echos" ausgegeben werden kann ich davon ausgehen, dass das "thumbs.php"-Skript und die zu verabreitende Bilddatei tatsächlich existieren.
Allerdings bereiten mir die "%2F"'s im Quelltext ein bisschen Kopfschmerzen.
Wenn ich das Script direkt aufrufe (einmal mit "%2F" und einmal mit "/" anstatt "%2F") erhalte ich folgende Fehlermeldung:
Error: Image does not exist and/or MD5 checksum did not match.
[/quote]
Was mache ich falsch?
Ich nutze die Funktion in einer meiner Extensions so:
t3lib_befunc::getThumbnail('thumbs.php',PATH_site.$uploadfolder.'/'.basename($image),'',$imgsize);
Also thumbs.php ohne weitere Pfadangabe und der Pfad zur Grafik absolut und nicht relativ. Der String 'thumbs.php' wird ja in die "src-URL" übernommen, gilt also relativ zum Aufruf der betrachteten Seite ("typo3/index.php"), daher kann das in Deiner Verwendung schon gar nicht funktionieren. $imgsize enthält ein String à la "800x600" für die Größenangabe.
Die "%2F" sind aber in URLs unproblematisch, ja sogar gewollt.
Danke für deine Bemühungen ThBodi!
Mit deinem Ansatz hats zwar noch nicht ganz geklappt, aber es brauchte nicht mehr viel zusätzliche Google-Recherche und ich bin zur Lösung gekommen. 🙂
Vor "thumbs.php" musste ich nur noch $this->doc->backPath einfügen. 🙂
/**
* Renders Memory Card Image
*
* @param int Card UID
* @return string HTML Code
*/
function getMemoryCardImage($int_cardId) {
$selectFields = "card";
$table = "tx_memorygame_cards";
$whereClause = "uid = '".$int_cardId."' AND deleted = 0 AND hidden = 0";
$arr_res = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($selectFields,$table,$whereClause);
$uploadfolder = "uploads/tx_memorygame/";
$imgsize = "80x80";
return t3lib_BEfunc::getThumbnail($this->doc->backPath.'thumbs.php',PATH_site.$uploadfolder.basename($arr_res[0]["card"]),'null',$imgsize);
}