Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 后端环境中的TYPO3 v10图像处理_Php_Image_Typo3_Typo3 10.x - Fatal编程技术网

Php 后端环境中的TYPO3 v10图像处理

Php 后端环境中的TYPO3 v10图像处理,php,image,typo3,typo3-10.x,Php,Image,Typo3,Typo3 10.x,我们最近开始了我们的第一个TYPO3 10项目,目前正在努力使用一个将数据移动到Algolia的自定义导入脚本。基本上,一切正常,但FAL图像有一个问题,特别是当它们需要处理时 从日志中,我可以找到一个名为“延迟后端图像处理器”(DeferredBackendImageProcessor)的东西,但文档没有提到这一点,或者我没有寻找正确的东西。我不确定 显然,后端环境中的图像不再只是处理。有一种叫做“processingUrl”的东西,它必须被调用一次才能处理图像 我试着用CURL调用那个url

我们最近开始了我们的第一个TYPO3 10项目,目前正在努力使用一个将数据移动到Algolia的自定义导入脚本。基本上,一切正常,但FAL图像有一个问题,特别是当它们需要处理时

从日志中,我可以找到一个名为“延迟后端图像处理器”(DeferredBackendImageProcessor)的东西,但文档没有提到这一点,或者我没有寻找正确的东西。我不确定

显然,后端环境中的图像不再只是处理。有一种叫做“processingUrl”的东西,它必须被调用一次才能处理图像

我试着用CURL调用那个url,但它不起作用。问题是,当我在浏览器中打开“processingUrl”时,它没有效果-但是如果我在浏览器中打开链接,在那里我登录到TYPO3后端,那么图像就会被处理

我在这里有点不知所措,因为我需要在导入脚本中处理图像,该脚本从后端通过调度程序运行(手动,而不是通过cron)

这就是问题发生的函数,很遗憾,卷曲部分在这里没有效果

protected function processImage($image, $imageProcessingConfiguration)
{
    if ($image) {
        $scalingOptions = array (
            'width' => 170
        );
                
        $result = $this->contentObject->getImgResource('fileadmin/'.$image, $scalingOptions);
                
        if (isset($result[3]) && $result[3]) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $result[3]);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($ch);
            curl_close($ch);
                    
            return '/fileadmin'.$result['processedFile']->getIdentifier();
        }
    }
            
    return '';
}
$result[3]
作为处理url。url的示例:

domain.com/typo3/index.phproute=%2Fimage%2Fprocess&token=6cbf8275c13623a0d90f15165b9ea1672fe5ad74&id=141

因此,我的问题是,如何处理该导入脚本中的图像?

我不确定是否有更优雅的解决方案,但您可以在作业期间禁用延迟处理:

$processorConfiguration = $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors']
unset ($GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors']['DeferredBackendImageProcessor'])

// ... LocalImageProcessor will be used

$GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors'] = $processorConfiguration;
参考资料:


我不确定是否有更优雅的解决方案,但您可以在作业期间禁用延迟处理:

$processorConfiguration = $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors']
unset ($GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors']['DeferredBackendImageProcessor'])

// ... LocalImageProcessor will be used

$GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['processors'] = $processorConfiguration;
参考资料:


您能否解释一下,为什么您需要在导入过程中处理图像?通常ContenoObject渲染器将基于单个源图像为输出通道处理具有不同质量和大小的图像。因此,只需获取图像,将其放入适当的文件夹,然后再进行处理就足够了。@JoHasenau我正在将图像url以及其他数据推送到Algolia。因此,输出不会发生在流体模板中,而是使用Algolia instantsearch.js-So javascript。在这里,我需要已经处理过的图像(url),裁剪到指定的维度。据我所知,Algolia API基于推送到服务的JSON数据处理内容-因此这仍然需要使用特定的前端模板来完成,该模板包含一个或另一个自定义视图帮助器,用于处理TYPO3端的数据。对我来说,这听起来像是两步走的方法:首先导入数据和/或图像,然后为Algolia生成JSON数据作为特定的前端输出。@JoHasenau,但我最终会遇到同样的问题。即使我将实际的图像路径(未处理)发送到Algolia并在以后处理(在某些Extbase环境中必须通过PHP完成),我仍然无法处理图像。使用instantsearch.js,您只需输出数据。没有额外的渲染,因为这是纯JS,而不是PHP。所以在渲染之前我需要经过处理的图像路径。您使用的函数是PHP函数,不是吗?因此,您将要实现的显然可以通过PHP实现。所以它也可以用流体来完成,因为这只会在引擎盖下创建PHP,然后它将输出您想要的任何东西。我想你只是被这样的假设所阻碍,即它不能作为一个简单的前端输出来完成,所以也许你可以更详细地描述这个过程的步骤。数据位于何处,必须传输到何处,交换数据的确切格式是什么?您能否解释一下,为什么在导入过程中需要处理图像?通常ContenoObject渲染器将基于单个源图像为输出通道处理具有不同质量和大小的图像。因此,只需获取图像,将其放入适当的文件夹,然后再进行处理就足够了。@JoHasenau我正在将图像url以及其他数据推送到Algolia。因此,输出不会发生在流体模板中,而是使用Algolia instantsearch.js-So javascript。在这里,我需要已经处理过的图像(url),裁剪到指定的维度。据我所知,Algolia API基于推送到服务的JSON数据处理内容-因此这仍然需要使用特定的前端模板来完成,该模板包含一个或另一个自定义视图帮助器,用于处理TYPO3端的数据。对我来说,这听起来像是两步走的方法:首先导入数据和/或图像,然后为Algolia生成JSON数据作为特定的前端输出。@JoHasenau,但我最终会遇到同样的问题。即使我将实际的图像路径(未处理)发送到Algolia并在以后处理(在某些Extbase环境中必须通过PHP完成),我仍然无法处理图像。使用instantsearch.js,您只需输出数据。没有额外的渲染,因为这是纯JS,而不是PHP。所以在渲染之前我需要经过处理的图像路径。您使用的函数是PHP函数,不是吗?因此,您将要实现的显然可以通过PHP实现。所以它也可以用流体来完成,因为这只会在引擎盖下创建PHP,然后它将输出您想要的任何东西。我想你只是被这样的假设所阻碍,即它不能作为一个简单的前端输出来完成,所以也许你可以更详细地描述这个过程的步骤。数据在哪里,它必须去哪里,交换数据的确切格式是什么?这很好!非常感谢。:)效果很好!非常感谢。:)