[release-2.19] refactor: preserve original image if smaller than requested thumbnail size (#6583)

This is an automated cherry-pick of #6582

/assign ruibaby

```release-note
当生成缩略图时如果原图尺寸小于请求尺寸则返回原图以保持其质量
```
pull/6588/head v2.19.1
Halo Dev Bot 2024-09-04 14:21:43 +08:00 committed by GitHub
parent 32f563bd30
commit 30d054a009
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 2 deletions

View File

@ -1,5 +1,7 @@
package run.halo.app.core.attachment;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@ -74,10 +76,14 @@ public class ThumbnailGenerator {
throw new UnsupportedOperationException(
"Unsupported image format for: " + formatNameOpt.orElse("unknown"));
}
var thumbnail = Scalr.resize(img, Scalr.Method.AUTOMATIC, Scalr.Mode.FIT_TO_WIDTH,
size.getWidth());
var formatName = formatNameOpt.orElse("jpg");
var thumbnailFile = getThumbnailFile(formatName);
if (img.getWidth() <= size.getWidth()) {
Files.copy(tempImagePath, thumbnailFile.toPath(), REPLACE_EXISTING);
return;
}
var thumbnail = Scalr.resize(img, Scalr.Method.AUTOMATIC, Scalr.Mode.FIT_TO_WIDTH,
size.getWidth());
ImageIO.write(thumbnail, formatName, thumbnailFile);
}