Îðëà
Îáëàñòè
Êîìïàíèé
Ïîëüçîâàòåëè
Ãàëåðåÿ
Ôèêñèðîâàííûå íîâîñòè
Îðëà
Îòçûâû î ôèðìàõ
Òàðèôû
Ïîëüçîâàòåëè
Îáëàñòè
Áàíêîìàòû
Òîðãîâûå òî÷êè
Äîñêà îáúÿâëåíèé
Êóðñû âàëþò
Ñêèäêè
îðãàíèçàöèè Îðëà
îðãàíèçàöèè îáëàñòè
òîâàðû
ñàéòû
ñàéòû Îðåë
Äàííûå
Ðàçäåëû
Ïîèñê
Ïîèñê çàïðîñû
Ñòàòèñòèêà
Ïîêàçû êàòàëîãà îðãàíèçàöèé
Ñòàòèñòèêà êëèåíòû
Ïîëüçîâàòåëè
Ñàéòû
Óïðàâëåíèå ñàéòîì
Àíêåòà
Àïòåêè
Àôèøà
Àôèøà íîâàÿ
Áàííåðû
Áèçíåñ >
Âèêòîðèíà
Ãîëîñîâàíèå
Ãîñòü íà ñàéòå
Èñòîðèè
Êàëåíäàðü ñîáûòèé
Êàòàëîãè >
Êîíêóðñ êðàñîòû
Êîíêóðñ àóäèî
Êîíñóëüòàöèè
Ìåíþ
Íîâîå íà ñàéòå
Íîâîñòè >
Îðãàíèçàöèè >
Ïðîãðàììà ÒÂ
Ïóáëèêàöèè
Ðàçäåëû ñàéòà
Ðàññûëêà
Ðåñòîðàíû
Ñåêðåò ôèðìû >
Ñåðâèñû >
Ññûëêè
Òåñòû
Ôàéëîâûé ìåíåäæåð
Ôîðóì
Ôîòîãàëåðåÿ
Îáðàòíàÿ ñâÿçü
Íåäâèæèìîñòü
Íîâûé ãîä
Òåêñòû
Ïîëüçîâàòåëè
Þðèäè÷åñêèé ðåéòèíã
Îòçûâû íà òîâàðû
Áàí ïîëüçîâàòåëåé
Æàëîáû
Íîâûå òåñòû
Êîðîíàâèðóñ
Ôàéëîâûé ìåíåäæåð
Èìÿ ôàéëà
FileUploader.php
Ñîäåðæèìîå
<?php namespace app\core\storage; use App; /** * Кла�� дл� загрузки изображений * Class FileUploader * @package app\core\storage */ class FileUploader { private $_uploadDir; private $_allowExtensions = []; private $_sourceImageFilePath; private $_type; private $_sourceWidth; private $_sourceHeight; private $_sourceImage; private $_newWidth = 0; private $_newHeight = 0; private $_newFileName; private $_extension = null; private $_saveAsType = null; /** * FileUploader constructor. * @param $uploadDir - директори�, в которую загружаем файлы. Должна быть � отно�ительным путем от корн� �ервера, * например user/user_photos/ * * @param array $allowExtensions - разрешеныне к загрузке ра�ширени� файлов. �о зде�ь не �ами ра�ширени�, * а ма��ив типов, к примеру: [IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF] */ public function __construct($uploadDir, array $allowExtensions = [IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF]) { $this->_uploadDir = $uploadDir; $this->_allowExtensions = $allowExtensions; return $this; } /** * Функци� у�танавливает и�ходный путь к файлу * @param $filePath * @return $this */ public function setSourceImageFilePath($filePath) { $this->_sourceImageFilePath = $filePath; return $this; } /** * Функци� у�танавливает новое название файла * @param $fileName * @return $this */ public function setFileName($fileName) { $this->_newFileName = $fileName; return $this; } /** * При вызове �той функции изображение �охранит�� как PNG * @return $this */ public function asPng() { $this->_saveAsType = IMAGETYPE_PNG; return $this; } /** * При вызове �той функции и�ходное изображение �охранит�� как JPG * @return $this */ public function asJpg() { $this->_saveAsType = IMAGETYPE_JPEG; return $this; } /** * при вызове �той функции и�ходное изображение будет �охранено как GIF * @return $this */ public function asGif() { $this->_saveAsType = IMAGETYPE_GIF; return $this; } /** * Функци� делает ре�айз изображени�, при �том она или его реально ре�айзит, * е�ли пропорции �овпадают или она вырезает по размерам $width, $height * * @param $width * @param $height * @return $this */ public function crop($width, $height) { $this->_newWidth = $width; $this->_newHeight = $height; return $this; } public function save() { if ($this->_newFileName == null) { throw new \Exception("�азвание нового файла не передано!"); } $imageInfo = getimagesize($this->_sourceImageFilePath); $this->_sourceWidth = $imageInfo[0]; $this->_sourceHeight = $imageInfo[1]; $this->_type = $imageInfo[2]; if (in_array($this->_type, $imageInfo) == false) { throw new \Exception("Запрещено загружать изображение � данным типом"); } // �оздаем и�ходное изображение switch ($this->_type) { case IMAGETYPE_GIF: $this->_sourceImage = imagecreatefromgif($this->_sourceImageFilePath); break; case IMAGETYPE_JPEG: $this->_sourceImage = imagecreatefromjpeg($this->_sourceImageFilePath); break; case IMAGETYPE_PNG: $this->_sourceImage = imagecreatefrompng($this->_sourceImageFilePath); break; } if ($this->_sourceImage == null) { throw new \Exception("�е удало�ь �оздать и�ходное изображение"); } // �мотрим, будем ли кропать изображение или нет if ($this->_newWidth <= 0 || $this->_newHeight <= 0) { $this->_newWidth = $this->_sourceWidth; $this->_newHeight = $this->_sourceHeight; } // �мотрим, е�ли пропорции �овпадают - то про�то уменьшаем изображение, $sourceScale = round($this->_sourceWidth / $this->_sourceHeight, 2); $destScale = round($this->_newWidth / $this->_newHeight, 2); $newImage = null; // е�ли размеры загруженного изображени� // меньше, чем мы передали if ($this->_sourceWidth <= $this->_newWidth && $this->_sourceHeight <= $this->_newHeight) { return $this->saveFile($this->_sourceImage); } if ($sourceScale == $destScale) { // у изображений �овпадают пропорции, в �том �лучае про�то уменьшаем изображение до нужного размера $newImage = imagecreatetruecolor($this->_newWidth, $this->_newHeight); imagecopyresampled($newImage, $this->_sourceImage, 0, 0, 0, 0, $this->_newWidth, $this->_newHeight, $this->_sourceWidth, $this->_sourceHeight); return $this->saveFile($newImage); } else { // прпорции не �овпадают, уменьшаем и�ходное изображение, чтобы потом изменить разрешение // алгоритм уменьшени� изображени�: // определ�ем, что под что под�траивать ширину или вы�оту. // дл� �то �начала вы�читываем проп. ширину, потом вы�оту. и �равниваем $newWidth = floor($this->_sourceWidth * $this->_newHeight / $this->_sourceHeight); $newHeight = $newHeight = floor($this->_sourceHeight * $this->_newWidth / $this->_sourceWidth); if ($newWidth < $this->_newWidth) { $newWidth = $this->_newWidth; $horizontal = false; } else { $newHeight = $this->_newHeight; $horizontal = true; } $x = 0; // x - откуда вырезаем $y = 0; // y - откуда вырезаем if ($horizontal == true) { $x = floor(($newWidth - $this->_newWidth) / 2); } else { $y = floor(($newHeight - $this->_newHeight) / 2); } $newImage = imagecreatetruecolor($newWidth, $newHeight); // уменьшенное изображение, из которого мы потом вырежем нужную ча�ть imagecopyresampled($newImage, $this->_sourceImage, 0, 0, 0, 0, $newWidth, $newHeight, $this->_sourceWidth, $this->_sourceHeight); // вырезаем нужную ча�ть $destImage = imagecreatetruecolor($this->_newWidth, $this->_newHeight); imagecopy($destImage, $newImage, 0, 0, $x, $y, $newWidth, $newHeight); imagedestroy($newImage); return $this->saveFile($destImage); } } private function saveFile($image) { $sourceType = $this->_type; if ($this->_saveAsType !== null) { $this->_type = $this->_saveAsType; } switch ($this->_type) { case IMAGETYPE_GIF: $this->_type = $sourceType; $this->_extension = '.gif'; return imagegif($image, $this->_uploadDir . '/' . $this->_newFileName . '.gif'); break; case IMAGETYPE_JPEG: $this->_type = $sourceType; $this->_extension = '.jpg'; return imagejpeg($image, $this->_uploadDir . '/' . $this->_newFileName . '.jpg', 90); break; case IMAGETYPE_PNG: $this->_type = $sourceType; $this->_extension = '.png'; return imagepng($image, $this->_uploadDir . '/' . $this->_newFileName . '.png'); break; } throw new \Exception("�еизве�тный тип файла. �е удало�ь �охранить изображение"); } public function getImageType() { return $this->_type; } public function getSourceWidth() { return $this->_sourceWidth; } public function getSourceHeight() { return $this->_sourceHeight; } public function getImageExtension() { return $this->_extension; } }
/app/core/storage/
Èìÿ
Äàòà
Ðàçìåð
..
2019-02-12
File.php
2016-12-28
402 áàéò
FileUploader.php
2020-01-27
9 êá.
ImageDownloader.php
2016-12-22
1 êá.
ImageInfo.php
2019-01-28
444 áàéò
ImageUploader.php
2017-06-13
10 êá.
ImageWatermark.php
2019-01-28
3 êá.
UploadedTmpFiles.php
2016-12-28
2 êá.
/app/core/storage
Çàãðóçèòü ôàéëû
Ôàéë 1
Ôàéë 2
Ôàéë 3