Typo3 Extbase-Fluid中的图像

Typo3 Extbase-Fluid中的图像,typo3,fluid,extbase,Typo3,Fluid,Extbase,我有一个标准的图像上传在TYPO3后端,允许超过1个图像上传 所以我有一个图像数据库字段,数据如下:“image1.jpg,image2.jpg” 在前端,我可以分解场,将阵列发送到流体,并以流体形式输出:对于每个这样的情况: <f:image src="uploads/tx_myext/{image}" /> 第一个问题是:是否有一些新奇的Extbase或Fluid Magic可以直接从数据库创建图像对象 第二个问题:如果我有一个2MB的大图像,并制作一个宽度为100的流体

我有一个标准的图像上传在TYPO3后端,允许超过1个图像上传

所以我有一个图像数据库字段,数据如下:“image1.jpg,image2.jpg”

在前端,我可以分解场,将阵列发送到流体,并以流体形式输出:对于每个这样的情况:

<f:image src="uploads/tx_myext/{image}"  />

第一个问题是:是否有一些新奇的Extbase或Fluid Magic可以直接从数据库创建图像对象

第二个问题:如果我有一个2MB的大图像,并制作一个宽度为100的流体:图像输出,它只是在浏览器中缩放,还是真的使用ImageMagick缩小

逗号列表到数组: 不幸的是,正如我在Extbase 4.7中看到的,仍然没有用于迭代逗号分隔字符串的ViewHelper。您有两个选项:编写自定义ViewHelper或保持使用方式

提示:为了避免传递额外的参数(特别是当您有许多逗号分隔的字段和/或使用许多
部分
渲染视图时),我将在模型中添加一个公共字段。如果在TCA中没有表示,则视为瞬态,即:

然后在分配之前将其填充到控制器中,这样我就可以在视图中作为
{project.imagesArray}
访问它:

public function showAction(Tx_Myext_Domain_Model_Project $project) {
    $project->imagesArray = explode(',', $project->getImage());
    $this->view->assign('project', $project);
}
看法


很可能您正在使用非常类似的方法

图像大小调整: 最简单的就是。。。检查
ImageMagick
默认情况下对大小调整后的图像的名称进行哈希运算并将其存储在临时文件夹中,因此如果在代码预览中,您会看到如下路径:
typo3temp/pics/cd27baa408.jpg
而不是
uploads/tx_myext/photo123.jpg
,这意味着它是用IM转换的。是的,image
ViewHelper
使用IM


您甚至可以从viewhelper的phpdoc:

中添加值并执行简单的计算,如
width=“200m”
width=“200c”
,现在我在Typo3 Forge中创建了一个viewhelper,因为我认为处理来自数据库的图像会非常有用

我为JS窗口添加了imageLinkWrap


非常感谢您验证我的第一种方法,我不确定这是否太复杂。我无法检查ImageMagick,因为我还没有对它进行编码——并且正在考虑一些老式的cObj->图像代码。那么JSWindow for IMAGE click放大怎么样?
public function showAction(Tx_Myext_Domain_Model_Project $project) {
    $project->imagesArray = explode(',', $project->getImage());
    $this->view->assign('project', $project);
}
<f:for each="{project.imagesArray}" as="image">
    <f:image src="uploads/tx_myext/{image}" width="200" height="200m" alt="" />
</f:for>