public function FileCommited::resizeImage in N1ED - Visual editor as CKEditor plugin with Bootstrap support 8.2
Resizes an image.
1 call to FileCommited::resizeImage()
- FileCommited::applySizes in src/
Flmngr/ FileUploaderServer/ lib/ file/ FileCommited.php - Apply sized method.
File
- src/
Flmngr/ FileUploaderServer/ lib/ file/ FileCommited.php, line 172
Class
- FileCommited
- Commited file (data structure about the file of finished upload transaction). Has method for resizing images (applying sizes when finishing transaction).
Namespace
Drupal\n1ed\Flmngr\FileUploaderServer\lib\fileCode
public function resizeImage($targetSize) {
if ($this->config
->getMaxImageResizeWidth() > 0 && $targetSize->width > $this->config
->getMaxImageResizeWidth()) {
throw new MessageException(Message::createMessage(Message::MAX_RESIZE_WIDTH_EXCEEDED, "" . $targetSize->width, $this
->getName(), "" . $this->config
->getMaxImageResizeWidth()));
}
if ($this->config
->getMaxImageResizeHeight() > 0 && $targetSize->height > $this->config
->getMaxImageResizeHeight()) {
throw new MessageException(Message::createMessage(Message::MAX_RESIZE_HEIGHT_EXCEEDED, "" . $targetSize->height, $this
->getName(), "" . $this->config
->getMaxImageResizeHeight()));
}
$fileSrc = $this;
// If this is just a size of main file.
if ($this->mainFile != NULL) {
$fileSrc = $this->mainFile;
}
$fileOriginal = $fileSrc
->getFileOriginal();
if ($fileOriginal
->exists()) {
$fileSrc = $fileOriginal;
}
$imageWidth = $this
->getImageWidth();
$imageHeight = $this
->getImageHeight();
if ($targetSize->width == 0 && $targetSize->height == 0) {
return FALSE;
}
if ($targetSize->width == 0 && $targetSize->height == $imageHeight) {
return FALSE;
}
if ($targetSize->height == 0 && $targetSize->width == $imageWidth) {
return FALSE;
}
if ($targetSize->width > 0 && $targetSize->height > 0 && $targetSize->width == $imageWidth && $targetSize->height == $imageHeight) {
return FALSE;
}
// Calc full target size of image (with paddings)
$scaleWWithPadding = -1;
$scaleHWithPadding = -1;
if ($targetSize->width > 0 && $targetSize->height > 0) {
$scaleWWithPadding = $targetSize->width;
$scaleHWithPadding = $targetSize->height;
}
else {
if ($targetSize->width > 0) {
$scaleWWithPadding = $targetSize->width;
$scaleHWithPadding = floor($scaleWWithPadding / $imageWidth * $imageHeight);
}
else {
if ($targetSize->height > 0) {
$scaleHWithPadding = $targetSize->height;
$scaleWWithPadding = floor($scaleHWithPadding / $imageHeight * $imageWidth);
}
}
}
if (($scaleWWithPadding > $imageWidth || $scaleHWithPadding > $imageHeight) && !$targetSize->enlarge) {
$scaleWWithPadding = $imageWidth;
$scaleHWithPadding = $imageHeight;
}
// Check we have not exceeded max width/height.
if ($this->config
->getMaxImageResizeWidth() > 0 && $scaleWWithPadding > $this->config
->getMaxImageResizeWidth() || $this->config
->getMaxImageResizeHeight() > 0 && $scaleHWithPadding > $this->config
->getMaxImageResizeHeight()) {
$coef = max($scaleWWithPadding / $this->config
->getMaxImageResizeWidth(), $scaleHWithPadding / $this->config
->getMaxImageResizeHeight());
$scaleWWithPadding = floor($scaleWWithPadding / $coef);
$scaleHWithPadding = floor($scaleHWithPadding / $coef);
}
// Calc actual size of image (without paddings)
$scaleW = -1;
$scaleH = -1;
if ($scaleWWithPadding / $imageWidth < $scaleHWithPadding / $imageHeight) {
$scaleW = $scaleWWithPadding;
$scaleH = floor($scaleW / $imageWidth * $imageHeight);
}
else {
$scaleH = $scaleHWithPadding;
$scaleW = floor($scaleH / $imageHeight * $imageWidth);
}
if ($scaleWWithPadding == $imageWidth && $scaleW == $imageWidth && $scaleHWithPadding == $imageHeight && $scaleH == $imageHeight) {
return FALSE;
}
// no resize is needed
$fitMode = FileCommited::FIT_EXACT;
if ($targetSize->width == 0) {
$fitMode = FileCommited::FIT_TO_HEIGHT;
}
else {
if ($targetSize->height == 0) {
$fitMode = FileCommited::FIT_TO_WIDTH;
}
}
$image = FileCommited::resizeImageNative($this
->getImage(), $scaleW, $scaleH, $fitMode);
if ($scaleWWithPadding > $scaleW || $scaleHWithPadding > $scaleH) {
$image = $this
->addPaddingsToImageNative($image, $scaleW, $scaleH, $scaleWWithPadding, $scaleHWithPadding);
}
$this
->writeImage($image);
return TRUE;
}