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

Create Images with watermark in extbase

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

我认为最简单的方法是使用打字解决方案。这一定不是纯粹的拼写错误,但拼写错误的数据结构可能需要作为 GifBuilder class 核心功能的参数。 TYPO3 7.6 API

也可以使用GifBuilder class is inherited from the class GraphicalFunctions,因为只添加了一些内容,主要功能就在这里。

最后一个问题是根据此任务在网络中的示例:它们是基于 pi 的,所有这些都以类似

的形式结束
$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(); 
} 

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

流体:

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

打字错误:

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
        }
    }
}

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