6
6
import cn .hutool .http .HttpUtil ;
7
7
import cn .hutool .log .StaticLog ;
8
8
import 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 ;
12
9
import javafx .scene .control .Button ;
13
10
import javafx .scene .control .Tooltip ;
14
11
12
+ import javax .imageio .IIOImage ;
15
13
import javax .imageio .ImageIO ;
14
+ import javax .imageio .ImageWriteParam ;
15
+ import javax .imageio .ImageWriter ;
16
+ import javax .imageio .stream .MemoryCacheImageOutputStream ;
16
17
import java .awt .*;
17
18
import java .awt .image .BufferedImage ;
18
19
import java .io .ByteArrayOutputStream ;
19
20
import java .io .IOException ;
20
- import java .util .ArrayList ;
21
- import java .util .Collections ;
22
- import java .util .Comparator ;
23
21
import java .util .List ;
22
+ import java .util .*;
24
23
25
24
public class CommUtils {
26
25
@@ -31,15 +30,20 @@ public class CommUtils {
31
30
public static final String SPECIAL_CHARS = "[\\ s`~!@#$%^&*()_\\ -+=|{}':;,\\ [\\ ].<>/?!¥…()【】‘;:”“’。,、?]+" ;
32
31
33
32
public static byte [] imageToBytes (BufferedImage img ) {
34
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream ();
33
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream ();
34
+ MemoryCacheImageOutputStream outputStream = new MemoryCacheImageOutputStream (byteArrayOutputStream );
35
35
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 ();
43
47
outputStream .close ();
44
48
return result ;
45
49
} catch (IOException e ) {
0 commit comments