0

我在 TYPO3 后端有一个标准图像上传,允许上传多个图像。

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

在前端,我可以爆炸场,将数组发送到流体,并以流体的形式输出:对于每个这样的:

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

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

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

4

2 回答 2

0

逗号列表到数组:

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

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

/**
 * @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散列调整大小图像的名称并将其默认存储在 temp 文件夹中,因此如果在代码预览中您看到如下路径:typo3temp/pics/cd27baa408.jpg而不是uploads/tx_myext/photo123.jpg表示它是使用 IM 转换的。是的,图像ViewHelper使用 IM。

您甚至可以通过在 viewhelper 的 phpdoc 中提供值来添加执行简单的计算width="200m"width="200c"参阅 imgResource.width 以获取可能的选项

于 2013-03-08T11:33:04.953 回答
0

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

我为 JS Window 添加了 imageLinkWrap。

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

于 2013-03-12T19:07:38.167 回答