【问题标题】:Images in Extbase - FluidExtbase 中的图像 - 流体
【发布时间】:2013-03-08 09:43:31
【问题描述】:

我在 TYPO3 后端有一个标准图片上传,允许上传超过 1 张图片。

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

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

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

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

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

【问题讨论】:

    标签: typo3 fluid extbase


    【解决方案1】:

    逗号列表转数组:

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

    提示:为避免传递额外的参数(尤其是当您有许多逗号分隔的字段和/或使用许多 Partials 来呈现视图时)我正在向我的模型添加一个 public 字段.如果在 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 散列调整后图像的名称并将其默认存储在临时文件夹中,因此如果在代码预览中您看到如下路径:typo3temp/pics/cd27baa408.jpg 而不是 uploads/tx_myext/photo123.jpg,这意味着它是使用 IM 转换的。是的,图片 ViewHelper 使用 IM。

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

    【讨论】:

    • 非常感谢您验证我的第一种方法,不确定这是否复杂。我无法检查 ImageMagick,因为我还没有编写代码 - 并且正在考虑一些老式的 cObj->IMAGE 代码。
    • 图片点击放大的JSWindow怎么样?
    【解决方案2】:

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

    我为 JS Window 添加了 imageLinkWrap。

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

    【讨论】:

      猜你喜欢
      • 2012-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多