智慧保安后台管理-外网项目备份
Administrator
2021-11-11 7f3f23d57a92b4c1a79c2629562936c81beae8ca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
package org.springblade.common.utils;
 
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
 
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
 
 
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.Transparency;
import java.net.HttpURLConnection;
import java.net.URL;
 
 
public class ImageUtils {
 
 
 
    public static String getBase64ByImgUrl(String url){
        String suffix = url.substring(url.lastIndexOf(".") + 1);
        try {
            URL urls = new URL(url);
            ByteArrayOutputStream  baos = new ByteArrayOutputStream();
            Image image = Toolkit.getDefaultToolkit().getImage(urls);
            BufferedImage  biOut = toBufferedImage(image);
            ImageIO.write(biOut, suffix, baos);
            String base64Str = Base64Util.encode(baos.toByteArray());
            return base64Str;
        } catch (Exception e) {
            return "";
        }
 
    }
 
    public static BufferedImage toBufferedImage(Image image) {
        if (image instanceof BufferedImage) {
            return (BufferedImage) image;
        }
        // This code ensures that all the pixels in the image are loaded
        image = new ImageIcon(image).getImage();
        BufferedImage bimage = null;
        GraphicsEnvironment ge = GraphicsEnvironment
            .getLocalGraphicsEnvironment();
        try {
            int transparency = Transparency.OPAQUE;
            GraphicsDevice gs = ge.getDefaultScreenDevice();
            GraphicsConfiguration gc = gs.getDefaultConfiguration();
            bimage = gc.createCompatibleImage(image.getWidth(null),
                image.getHeight(null), transparency);
        } catch (HeadlessException e) {
            // The system does not have a screen
        }
        if (bimage == null) {
            // Create a buffered image using the default color model
            int type = BufferedImage.TYPE_INT_RGB;
            bimage = new BufferedImage(image.getWidth(null),
                image.getHeight(null), type);
        }
        // Copy image to buffered image
        Graphics g = bimage.createGraphics();
        // Paint the image onto the buffered image
        g.drawImage(image, 0, 0, null);
        g.dispose();
        return bimage;
    }
    /**
     * 通过图片的url获取图片的base64字符串
     * @param imgUrl    图片url
     * @return    返回图片base64的字符串
     */
    public static String imageUrlToBase64(String imgUrl) {
 
        URL url = null;
 
        InputStream is = null;
 
        ByteArrayOutputStream outStream = null;
 
        HttpURLConnection httpUrl = null;
 
        try{
 
            url = new URL(imgUrl);
 
            httpUrl = (HttpURLConnection) url.openConnection();
 
            httpUrl.connect();
 
            httpUrl.getInputStream();
 
            is = httpUrl.getInputStream();
 
 
 
            outStream = new ByteArrayOutputStream();
 
            //创建一个Buffer字符串
 
            byte[] buffer = new byte[1024];
 
            //每次读取的字符串长度,如果为-1,代表全部读取完毕
 
            int len = 0;
 
            //使用一个输入流从buffer里把数据读取出来
 
            while( (len=is.read(buffer)) != -1 ){
 
                //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
 
                outStream.write(buffer, 0, len);
 
            }
 
            // 对字节数组Base64编码
 
            return Base64Util.encode(outStream.toByteArray());
 
        }catch (Exception e) {
 
            e.printStackTrace();
 
        }
 
        finally{
 
            if(is != null)
 
            {
 
                try {
 
                    is.close();
 
                } catch (IOException e) {
 
                    e.printStackTrace();
 
                }
 
            }
 
            if(outStream != null)
 
            {
 
                try {
 
                    outStream.close();
 
                } catch (IOException e) {
 
                    e.printStackTrace();
 
                }
 
            }
 
            if(httpUrl != null)
 
            {
 
                httpUrl.disconnect();
 
            }
 
        }
 
        return imgUrl;
 
    }
}