我在TYPO3后端上传了标准图片,可以上传超过1张图片。
所以我有一个像这样的数据的图像数据库字段:“image1.jpg,image2.jpg”。
在前端,我可以爆炸场,将阵列发送到流体,然后输出流体:对于每个人都这样:
<f:image src="uploads/tx_myext/{image}" />
第一个问题是:是否有一些花哨的新Extbase或Fluid Magic,可以直接从数据库创建图像对象?
第二个问题:如果我有一个巨大的2MB图像并制作流畅的图像输出宽度= 100,它是在浏览器中缩放,还是使用ImageMagick缩小尺寸?
答案 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。