[StoreRemoteMedia] Gracefully recover from poorly encoded images

This commit is contained in:
Diogo Peralta Cordeiro 2021-04-12 03:09:18 +01:00
parent edc9fd203d
commit 5b23781e68
1 changed files with 17 additions and 12 deletions

View File

@ -300,20 +300,25 @@ class StoreRemoteMediaPlugin extends Plugin
// If the image is not of the desired size, resize it // If the image is not of the desired size, resize it
if (!$this->store_original && $this->crop && ($info[0] > $this->thumbnail_width || $info[1] > $this->thumbnail_height)) { if (!$this->store_original && $this->crop && ($info[0] > $this->thumbnail_width || $info[1] > $this->thumbnail_height)) {
// Temporary object, not stored in DB try {
$img = new ImageFile(-1, $fullpath); // Temporary object, not stored in DB
list($width, $height, $x, $y, $w, $h) = $img->scaleToFit($this->thumbnail_width, $this->thumbnail_height, $this->crop); $img = new ImageFile(-1, $fullpath);
list($width, $height, $x, $y, $w, $h) = $img->scaleToFit($this->thumbnail_width, $this->thumbnail_height, $this->crop);
// The boundary box for our resizing // The boundary box for our resizing
$box = [ $box = [
'width' => $width, 'height' => $height, 'width' => $width, 'height' => $height,
'x' => $x, 'y' => $y, 'x' => $x, 'y' => $y,
'w' => $w, 'h' => $h, 'w' => $w, 'h' => $h,
]; ];
$width = $box['width']; $width = $box['width'];
$height = $box['height']; $height = $box['height'];
$img->resizeTo($fullpath, $box); $img->resizeTo($fullpath, $box);
} catch (\Intervention\Image\Exception\NotReadableException $e) {
common_log(LOG_ERR, "StoreRemoteMediaPlugin::storeRemoteThumbnail was unable to decode image with Intervention: $e");
// No need to interrupt processing
}
} }
} else { } else {
throw new AlreadyFulfilledException('A thumbnail seems to already exist for remote file' . throw new AlreadyFulfilledException('A thumbnail seems to already exist for remote file' .