/** * Hydrate model with the provided $data * from file upload. * * @param array $data * @param ImageModel $object * @return object */ public function hydrate(array $data, $object) { $size = getImageSize($data['tmp_name']); $object->setFileName($data['name'])->setType($data['type'])->setSize($data['size'])->setTempName($data['tmp_name'])->setWidth($size[0])->setHeight($size[1])->setMimeType($size[2])->setError($data['error']); return $object; }
/** * @param ImageModel $model * @return ImageModel * @throws UthandoFileManagerException */ public function resizeImage(ImageModel $model) : ImageModel { $options = $this->getOptions(); $image = $model->getTempName(); $oldX = $model->getWidth(); $oldY = $model->getHeight(); switch ($model->getMimeType()) { case IMAGETYPE_JPEG: $imageIn = imageCreateFromJpeg($image); break; case IMAGETYPE_PNG: $imageIn = imageCreateFromPng($image); break; case IMAGETYPE_GIF: $imageIn = imageCreateFromGif($image); break; default: throw new UthandoFileManagerException($this->error(self::MIME_NOT_SUPPORTED, $model->getMimeType())); } if ($model->getWidth() > $options->getMaxWidth()) { $model->setHeight(round($options->getMaxWidth() * $model->getHeight() / $model->getWidth())); $model->setWidth($options->getMaxWidth()); } if ($model->getHeight() > $options->getMaxHeight()) { $model->setWidth(round($model->getWidth() * $options->getMaxHeight() / $model->getHeight())); $model->setHeight($options->getMaxHeight()); } $imageOut = imageCreateTrueColor($model->getWidth(), $model->getHeight()); imageCopyResampled($imageOut, $imageIn, 0, 0, 0, 0, $model->getWidth(), $model->getHeight(), $oldX, $oldY); switch ($model->getMimeType()) { case IMAGETYPE_JPEG: imageJpeg($imageOut, $image); break; case IMAGETYPE_PNG: imagePng($imageOut, $image); break; case IMAGETYPE_GIF: imageGif($imageOut, $image); break; } imageDestroy($imageIn); imageDestroy($imageOut); return $model; }