Как получить объект файла из пути к файлу в Concrete5?

Я хочу получить миниатюру из файла в каталоге тем, но getThumbnail() Функция требует от меня передать объект файла.

Это, очевидно, не работает:

$v = View::getInstance();
$themePath = $v->getThemePath();    
$thumbnail = $imageHelper->getThumbnail($themePath.'/images/abc.jpg', 100, 100, true);

Так возможно ли получить объект файла из пути к файлу?

1 ответ

Решение

Если файл существует только в структуре папок, но не как конкретный5 Файловый объект, вам нужно FileImporter первый:

use Concrete\Core\File\Importer;
$fi = new Importer();
if($fv = $fi->importIncomingFile($themePath . '/' . $filename)){
    $returnFile = \Concrete\Core\File\File::getByID($fv->getFileID());
}

Затем вы можете передать этот файловый объект getThumbNail() функция. getThumbNail() не принимает путь, но объект изображения в качестве первого параметра:

$imageHelper = Core::make('helper/image');    
$thumbnail = $imageHelper->getThumbnail($returnFile, 300, 9999, false);

Вот все параметры, которые взяты (из API):

/**
 * Returns a path to the specified item, resized and/or cropped to meet max width and height. $obj can either be
 * a string (path) or a file object.
 * Returns an object with the following properties: src, width, height
 * @param mixed $obj
 * @param int $maxWidth
 * @param int $maxHeight
 * @param bool $crop
 */
public function getThumbnail($obj, $maxWidth, $maxHeight, $crop = false)
Другие вопросы по тегам