File tree Expand file tree Collapse file tree 1 file changed +13
-7
lines changed
src/main/java/app/fyreplace/api/services Expand file tree Collapse file tree 1 file changed +13
-7
lines changed Original file line number Diff line number Diff line change @@ -61,23 +61,29 @@ public void validate(final byte[] data) throws UnsupportedMediaTypeException {
61
61
}
62
62
63
63
public byte [] shrink (final byte [] data ) {
64
- final var softMaxSize = fileMaxSize .asLongValue ();
64
+ return shrink (data , 1.5 );
65
+ }
66
+
67
+ private byte [] shrink (final byte [] data , final double scaleFactorIncrease ) {
68
+ final var maxSize = fileMaxSize .asLongValue ();
65
69
66
- if (data .length <= softMaxSize ) {
70
+ if (data .length <= maxSize ) {
67
71
return data ;
68
72
}
69
73
70
74
final var inputImage = new Image (data );
71
- final var scaleFactor = Math .sqrt ((double ) softMaxSize / data .length ) ;
72
- inputImage .resize ((int ) (inputImage .getWidth () * scaleFactor ), (int ) (inputImage .getHeight () * scaleFactor ));
75
+ final var scaleFactor = Math .sqrt ((double ) data .length / maxSize ) * scaleFactorIncrease ;
76
+ inputImage .resize ((int ) (inputImage .getWidth () / scaleFactor ), (int ) (inputImage .getHeight () / scaleFactor ));
73
77
inputImage .rotate ();
74
78
final var output = inputImage .getByteArray ();
75
79
76
- if (output .length > softMaxSize * 3 ) {
80
+ if (output .length <= maxSize ) {
81
+ return output ;
82
+ } else if (scaleFactorIncrease >= 3 ) {
77
83
throw new RequestEntityTooLargeException ();
84
+ } else {
85
+ return shrink (data , scaleFactorIncrease + 0.5 );
78
86
}
79
-
80
- return output ;
81
87
}
82
88
83
89
private ImageReader getFirstValidReader (final byte [] data ) throws IOException {
You can’t perform that action at this time.
0 commit comments