Изображения в Extbase - Fluid

У меня есть стандартная загрузка изображений в TYPO3 Backend, которая позволяет загружать более одного изображения.

Итак, у меня есть поле базы данных изображений с такими данными: «image1.jpg, image2.jpg».

Во Frontend я могу взорвать поле, отправить массив в жидкость и вывести его в жидкости: для каждого такого:

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

Первый вопрос: есть ли какие-нибудь новые причудливые Extbase или Fluid Magic, которые создают объекты изображений прямо из базы данных?

Второй вопрос: если у меня есть огромное изображение размером 2 МБ и я делаю вывод изображения с шириной = 100, он просто масштабируется в браузере или действительно уменьшается с помощью ImageMagick?


person Andrea Schmuttermair    schedule 08.03.2013    source источник


Ответы (2)


Список запятых в массив:

К сожалению, как я вижу в 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.

Вы даже можете добавить выполнение простых вычислений, задав значение как width="200m" или width="200c" из phpdoc viewhelper: Возможные варианты см. в imgResource.width

person biesior    schedule 08.03.2013
comment
Большое спасибо за проверку моего первого подхода, не был уверен, что это слишком сложно. Я не мог проверить ImageMagick, так как еще не закодировал его - а также думал о каком-то олдскульном коде cObj- ›IMAGE. - person Andrea Schmuttermair; 08.03.2013
comment
Как насчет JSWindow для увеличения изображения по клику? - person Andrea Schmuttermair; 12.03.2013

Теперь я создал ViewHelper в Typo3 Forge, поскольку считаю, что обработка изображений, поступающих из базы данных, была бы весьма полезной.

И я добавил imageLinkWrap для JS Window.

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

person Andrea Schmuttermair    schedule 12.03.2013