diff --git a/src/Uploads/UploadsContext.php b/src/Uploads/UploadsContext.php index 6363392..7e41351 100644 --- a/src/Uploads/UploadsContext.php +++ b/src/Uploads/UploadsContext.php @@ -108,11 +108,27 @@ class UploadsContext { $imagick = new Imagick; if($uploadInfo->isImage()) { - $imagick->readImageBlob(file_get_contents($filePath)); - } elseif($uploadInfo->isAudio()) - $imagick->readImageBlob(FFMPEG::grabAudioCover($filePath)); - elseif($uploadInfo->isVideo()) - $imagick->readImageBlob(FFMPEG::grabVideoFrame($filePath)); + try { + $file = fopen($filePath, 'rb'); + $imagick->readImageFile($file); + } finally { + if(isset($file) && is_resource($file)) + fclose($file); + } + } elseif($uploadInfo->isAudio()) { + // Index\IO\Stream needs some way to grab the underlying handle so we can use readImageFile + $stream = (string)FFMPEG::grabAudioCover($filePath); + if($stream === '') + return ''; + + $imagick->readImageBlob($stream); + } elseif($uploadInfo->isVideo()) { + $stream = (string)FFMPEG::grabVideoFrame($filePath); + if($stream === '') + return ''; + + $imagick->readImageBlob($stream); + } $imagick->setImageFormat('jpg'); $imagick->setImageCompressionQuality($this->config->getInteger('thumb:quality', 40));