在extbase中创建带有水印的图像

时间:2017-05-31 07:00:08

标签: image typo3 extbase watermark

我有一个存储FileReference的模型。现在我想在Extbase控制器中创建一个带有水印的图像。有人知道我要去哪里吗?我只找到了带有typoscript的解决方案。

2 个答案:

答案 0 :(得分:2)

我选择了TypoScript方式并且效果很好。

流体:

<f:cObject typoscriptObjectPath="lib.tx_myext.watermarkedImage" data="{imageUid:'{image.uid}',copyright:'{image.copyright}')}'}"/>

的TypoScript:

lib.tx_myext.watermarkedImage = IMAGE
lib.tx_myext.watermarkedImage {
    file = GIFBUILDER
    file {
        XY = [10.w],[10.h]
        format = jpg

        10 = IMAGE
        10 {
            file {
                import.field = imageUid
                treatIdAsReference = 1
                width = 1162
                height = 580c
            }
        }

        20 = BOX
        20 {
            color = #FFFFFF
            opacity = 70
            dimensions = [10.w]-[30.w]-10,[10.h]-20,[30.w]+20,[30.h]+20
        }

        30 = TEXT
        30 {
            text.data = field:copyright
            fontSize = 15
            fontColor = #000000
            fontFile = path/to/my/font.ttf
            offset = [10.w]-[30.w]-5,[10.h]-5
        }
    }
}

结果是带有白框的图像,右下角有版权文字。

答案 1 :(得分:1)

我认为最简单的方法是使用typoscript解决方案。这不一定是纯粹的typoscript,但是typoscript的数据结构可能需要作为GifBuilder类的核心函数的参数。 TYPO3 7.6 API

GifBuilder类继承自可以使用的类GraphicalFunctions,因为只有少数添加,主要功能在这里。

最后一个问题是根据这项任务在网络中的例子:它们是有效的,所有这些都以类似

的方式结束
$img = $this->cObj->IMAGE($typoScriptArray);

在使用当前API的现代(命名空间)表示法中,这将是:

$gifCreator = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\GifBuilder::class);    
$gifCreator->init();     
$theImage=''; 
if ($GLOBALS['TYPO3_CONF_VARS']['GFX']['gdlib']) {     
    $gifCreator->start($fileArray, $typoScriptArray); 
    $theImage = $gifCreator->gifBuild(); 
}