如何从Concrete5中的文件路径获取文件对象?

时间:2016-03-22 02:20:28

标签: concrete5 concrete5-5.7

我想从主题目录中的文件中获取缩略图,但getThumbnail()函数要求我传递文件对象。

这显然不起作用:

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

那么可以从文件路径中获取文件对象吗?

1 个答案:

答案 0 :(得分: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)