Extbase中的图像 - 流体

时间:2013-03-08 09:43:32

标签: typo3 fluid extbase

我在TYPO3后端上传了标准图片,可以上传超过1张图片。

所以我有一个像这样的数据的图像数据库字段:“image1.jpg,image2.jpg”。

在前端,我可以爆炸场,将阵列发送到流体,然后输出流体:对于每个人都这样:

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

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

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

2 个答案:

答案 0 :(得分:0)

逗号列表到数组:

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

提示:为了避免传递额外的参数(特别是当你在那里有许多逗号分隔的字段和/或使用许多Partials来渲染视图时)我正在添加公共字段到我的模特。如果没有在TCA中的表示,它将被视为 transient ,即:

/**
 * @var array
 */
public $imagesArray;

然后在分配之前将其填入控制器中,以便我可以在视图中以{project.imagesArray}的形式访问它:

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>

很可能你正在使用非常相似的方法...

图像大小调整:

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

您甚至可以通过从viewhelper的phpdoc中提供值width="200m"width="200c"来添加执行简单计算: See imgResource.width for possible options

答案 1 :(得分:0)

现在我在Typo3 Forge中创建了一个ViewHelper,因为我认为处理来自数据库的图像非常有用。

我为JS Window添加了imageLinkWrap。

http://forge.typo3.org/issues/46218