66import cn .hutool .http .HttpUtil ;
77import cn .hutool .log .StaticLog ;
88import com .luooqi .ocr .model .TextBlock ;
9- import com .sun .image .codec .jpeg .JPEGCodec ;
10- import com .sun .image .codec .jpeg .JPEGEncodeParam ;
11- import com .sun .image .codec .jpeg .JPEGImageEncoder ;
129import javafx .scene .control .Button ;
1310import javafx .scene .control .Tooltip ;
1411
12+ import javax .imageio .IIOImage ;
1513import javax .imageio .ImageIO ;
14+ import javax .imageio .ImageWriteParam ;
15+ import javax .imageio .ImageWriter ;
16+ import javax .imageio .stream .MemoryCacheImageOutputStream ;
1617import java .awt .*;
1718import java .awt .image .BufferedImage ;
1819import java .io .ByteArrayOutputStream ;
1920import java .io .IOException ;
20- import java .util .ArrayList ;
21- import java .util .Collections ;
22- import java .util .Comparator ;
2321import java .util .List ;
22+ import java .util .*;
2423
2524public class CommUtils {
2625
@@ -31,15 +30,20 @@ public class CommUtils {
3130 public static final String SPECIAL_CHARS = "[\\ s`~!@#$%^&*()_\\ -+=|{}':;,\\ [\\ ].<>/?!¥…()【】‘;:”“’。,、?]+" ;
3231
3332 public static byte [] imageToBytes (BufferedImage img ) {
34- ByteArrayOutputStream outputStream = new ByteArrayOutputStream ();
33+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream ();
34+ MemoryCacheImageOutputStream outputStream = new MemoryCacheImageOutputStream (byteArrayOutputStream );
3535 try {
36- ImageIO .write (img , "jpeg" , outputStream );
37- JPEGImageEncoder encoder = JPEGCodec .createJPEGEncoder (outputStream );
38- JPEGEncodeParam jep = JPEGCodec .getDefaultJPEGEncodeParam (img );
39- jep .setQuality (IMAGE_QUALITY , true );
40- encoder .encode (img , jep );
41- byte [] result = outputStream .toByteArray ();
42- System .out .println (result .length );
36+ Iterator iter = ImageIO .getImageWritersByFormatName ("jpeg" );
37+ ImageWriter writer = (ImageWriter )iter .next ();
38+ ImageWriteParam iwp = writer .getDefaultWriteParam ();
39+ iwp .setCompressionMode (ImageWriteParam .MODE_EXPLICIT );
40+ iwp .setCompressionQuality (IMAGE_QUALITY );
41+ writer .setOutput (outputStream );
42+ IIOImage image = new IIOImage (img , null , null );
43+ writer .write (null , image , iwp );
44+ writer .dispose ();
45+ byte [] result = byteArrayOutputStream .toByteArray ();
46+ byteArrayOutputStream .close ();
4347 outputStream .close ();
4448 return result ;
4549 } catch (IOException e ) {
0 commit comments