11package testSuite .classes .image_params_so_error ;
2+ import java .awt .image .RenderedImage ;
3+ import java .io .File ;
4+ import java .io .FileOutputStream ;
5+ import java .io .IOException ;
6+ import java .io .OutputStream ;
27import java .util .Locale ;
38
9+ import javax .imageio .IIOImage ;
10+ import javax .imageio .ImageIO ;
411import javax .imageio .ImageWriteParam ;
12+ import javax .imageio .ImageWriter ;
13+ import javax .imageio .stream .ImageOutputStream ;
14+ import java .util .Iterator ;
515
616class JpegExporter {
717
@@ -14,4 +24,26 @@ ImageWriteParam setCompressionPreferences() {
1424 }
1525 return param ;
1626 }
27+
28+ public String compressImage (File multipartFile , RenderedImage image ) throws IOException {
29+ String filePath = System .getProperty ("java.io.tmpdir" );
30+ File compressedImageFile = new File (filePath );
31+ OutputStream os = new FileOutputStream (compressedImageFile .getName ());
32+ String extension = multipartFile .getName ().substring (multipartFile .getName ().lastIndexOf ('.' ) + 1 );
33+ Iterator <ImageWriter > writers = ImageIO .getImageWritersByFormatName (extension );
34+ ImageWriter writer = writers .next ();
35+
36+ ImageOutputStream ios = ImageIO .createImageOutputStream (os );
37+ writer .setOutput (ios );
38+
39+ ImageWriteParam param = writer .getDefaultWriteParam ();
40+ param .setCompressionMode (ImageWriteParam .MODE_EXPLICIT ); // State Refinement Error
41+ param .setCompressionQuality (0.5f );
42+
43+ writer .write (null , new IIOImage (image , null , null ), param );
44+ os .close ();
45+ ios .close ();
46+ writer .dispose ();
47+ return String .valueOf (compressedImageFile );
48+ }
1749}
0 commit comments