/** * Create a picture instance from the given image path and size * * @param string|File $file The image path or File instance * @param array|integer $size The image size as array (width, height, resize mode) or an tl_image_size ID * * @return static The created picture instance */ public static function create($file, $size = null) { if (is_string($file)) { $file = new \File(rawurldecode($file)); } $imageSize = null; $picture = new static($file); // tl_image_size ID as resize mode if (is_array($size) && !empty($size[2]) && is_numeric($size[2])) { $size = (int) $size[2]; } $imageSize = null; if (!is_array($size)) { $imageSize = \ImageSizeModel::findByPk($size); if ($imageSize === null) { $size = array(); } } if (is_array($size)) { $size = $size + array(0, 0, 'crop'); $imageSize = new \stdClass(); $imageSize->width = $size[0]; $imageSize->height = $size[1]; $imageSize->resizeMode = $size[2]; $imageSize->zoom = 0; } $picture->setImageSize($imageSize); if ($imageSize !== null && !empty($imageSize->id)) { $picture->setImageSizeItems(\ImageSizeItemModel::findVisibleByPid($imageSize->id, array('order' => 'sorting ASC'))); } $fileRecord = \FilesModel::findByPath($file->path); if ($fileRecord !== null && $fileRecord->importantPartWidth && $fileRecord->importantPartHeight) { $picture->setImportantPart(array('x' => (int) $fileRecord->importantPartX, 'y' => (int) $fileRecord->importantPartY, 'width' => (int) $fileRecord->importantPartWidth, 'height' => (int) $fileRecord->importantPartHeight)); } return $picture; }