mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-01 05:50:35 +03:00
✨ Supported dynamic image resizing for LocalFileStorage(#10184)
refs #10181 * Added initial handleImageSizes middleware * Implemented saveRaw method on local file storage * Wired up handleImageSizes middleware * Implemented delete for LocalFileStorage * Removed delete method from theme Storage class * Deleted sizes directory when theme is activated * Ensured that smaller images are not enlarged * Renamed sizes -> size * Exited middleware as early as possible * Called getStorage as late as possible * Updated image sizes middleware to handle dimension paths * Revert "Deleted sizes directory when theme is activated" This reverts commit 9204dfcc73a6a79d597dbf23651817bcbfc59991. * Revert "Removed delete method from theme Storage class" This reverts commit b45fdb405a05faeaf4bd87e977c4ac64ff96b057. * Revert "Implemented delete for LocalFileStorage" This reverts commit a587cd6bae45b68a293b2d5cfd9b7705a29e7bfa. * Fixed typo Co-Authored-By: allouis <fabien@allou.is> * Redirected to original image if no image_sizes config * Refactored redirection because rule of three * Updated comments * Added rubbish tests * Added @TODO comment for handleImageSizes tests * Added safeResizeImage method to image manipulator * Used image manipulator lib in image_size middleware
This commit is contained in:
parent
29991c6718
commit
4078dd7959
@ -61,4 +61,27 @@ const process = (options = {}) => {
|
||||
});
|
||||
};
|
||||
|
||||
const resizeImage = (originalBuffer, {width, height} = {}) => {
|
||||
const sharp = require('sharp');
|
||||
return sharp(originalBuffer)
|
||||
.resize(width, height, {
|
||||
// CASE: dont make the image bigger than it was
|
||||
withoutEnlargement: true
|
||||
})
|
||||
// CASE: Automatically remove metadata and rotate based on the orientation.
|
||||
.rotate()
|
||||
.toBuffer()
|
||||
.then((resizedBuffer) => {
|
||||
return resizedBuffer.length < originalBuffer.length ? resizedBuffer : originalBuffer;
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.process = process;
|
||||
module.exports.safeResizeImage = (buffer, options) => {
|
||||
try {
|
||||
require('sharp');
|
||||
return resizeImage(buffer, options);
|
||||
} catch (e) {
|
||||
return Promise.resolve(buffer);
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user