public function z_preview($id, $param = array(), $cropped = false) { try { if (is_numeric($id)) { $storage = new Z_File_Storage(); $file = $storage->getFile($id); if (!$file) { throw new Exception(); } $filename = $file->getFullName(); unset($storage); } elseif (is_string($id)) { $filename = $id; } else { throw new Exception('Идентификатор файла не является чистом или строкой'); } if (isset($param['mark']) && is_numeric($param['mark'])) { $storage = new Z_File_Storage(); $file = $storage->getFile($param['mark']); if (!$file) { throw new Exception(); } $param['mark'] = $file->getFullName(); unset($storage); } $tn = new Z_File_Image_Thumbnail($filename); $fileSitename = str_replace(SITE_PATH, '', $filename); //превращаем полный путь к файлу в относительный путь в бразуере $preResult = false; if ($cropped) { $preResult = $tn->getCroppedPreview($param); //метод ищет в папке картинки вручную обрезанную версию картинки и выдает путь к ней } if (!$preResult) { if ($tn->isPreviewActual($param)) { $preResult = $tn->getPreviewName($param); } else { $param['file'] = $fileSitename; $preResult = '/sys/generatepreview.php?' . http_build_query($param, false); //внешний запрос генерирующий превью в автоматическом режиме, в ручном режиме превью генерируется только в админке } } } catch (Exception $e) { return ''; } return str_replace(SITE_PATH, '', $preResult); }
public function z_preview($id, $param = array()) { try { if (is_numeric($id)) { $storage = new Z_File_Storage(); $file = $storage->getFile($id); if (!$file) { throw new Exception(); } $filename = $file->getFullName(); unset($storage); } elseif (is_string($id)) { $filename = $id; } else { throw new Exception('Идентификатор файла не является чистом или строкой'); } if (isset($param['mark']) && is_numeric($param['mark'])) { $storage = new Z_File_Storage(); $file = $storage->getFile($param['mark']); if (!$file) { throw new Exception(); } $param['mark'] = $file->getFullName(); unset($storage); } $tn = new Z_File_Image_Thumbnail($filename); $fileSitename = str_replace(SITE_PATH, '', $filename); if ($tn->isPreviewActual($param)) { $preResult = $tn->getPreviewName($param); } else { $param['file'] = $fileSitename; $preResult = '/sys/generatepreview.php?' . http_build_query($param, false); } } catch (Exception $e) { return ''; } return str_replace(SITE_PATH, '', $preResult); }
protected function cropImage($data) { $image = $preview_w = $preview_h = $x = $y = $w = $h = null; list($image, $preview_w, $preview_h, $x, $y, $w, $h) = $data; if ($image == 0 || $preview_w == 0 || $preview_h == 0 || $w == 0 || $h == 0) { return false; } $params = array('w' => $preview_w, 'h' => $preview_h); $storage = new Z_File_Storage(); $file = $storage->getFile($image); if (!$file) { return false; } $filePathName = $file->getFullName(); if (!$filePathName) { return false; } $filePreviewObject = new Z_File_Image_Thumbnail($filePathName); $cropped_params = array('w' => (double) $w, 'h' => (double) $h, 'x' => (double) $x, 'y' => (double) $y); $filePreviewPathName = $filePreviewObject->createThumbnail($params, $cropped_params); }