图片转为为流的处理

方法一:
response.setContentType("image/png");
// try {
// // 步骤 1:创建 URL 对象
// URL url = new URL(imageUrl);
//
// // 步骤 2:打开连接
// HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// connection.setRequestMethod("GET"); // 设置请求方法为 GET
//
// // 步骤 3:获取输入流
// InputStream inputStream = connection.getInputStream();
// BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
// String line;
//
// // 读取数据
// while ((line = reader.readLine()) != null) {
// System.out.println(line); // 输出获取到的数据
// //outputStream.write(buffer, 0, bytesRead);
// }
// response.setContentType("image/png");
// //response.setContentType("text/plan");
// response.getWriter();
// // 关闭流
// reader.close();
// inputStream.close();
// connection.disconnect();
// } catch (Exception e) {
// e.printStackTrace();
// }



方法二:
if (imageUrl == null || imageUrl.isEmpty()) {
return;
}
InputStream inputStream = null;
ByteArrayOutputStream outputStream = null;
try {
// 禁用SSL证书验证
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}

@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}

@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
}};

// 创建SSLContext,使用禁用SSL证书验证的TrustManager
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

// 设置全局默认的SSLSocketFactory,使RestTemplate使用禁用SSL证书验证的SSLContext
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());


URL url = new URL(imageUrl);
URLConnection connection = url.openConnection();
inputStream = connection.getInputStream();
outputStream = new ByteArrayOutputStream();
//response.setHeader("Content-Disposition","attchment;filename="+ URLEncoder.encode("TEST.png","utf-8"));
//OutputStream outputStream=response.getOutputStream();

byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
//System.out.write(buffer,0,bytesRead);
outputStream.write(buffer, 0, bytesRead);
//response.getOutputStream().write(bytesRead);
}

//response.getOutputStream().close();
byte[] bytes = outputStream.toByteArray();
if (bytes.length > 0) {
response.reset();
response.setContentType("image/jpeg");
response.getOutputStream().write(bytes);
response.getOutputStream().flush();
//return;
}
//response.getWriter(bytes);
//outputStream.write(System.out);
//outputStream.flush();
// inputStream.close();
// outputStream.close();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} finally {
// Close resources
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
// Log error if needed
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
// Log error if needed
}
}
}

方法三:


// Web request setup
HttpURLConnection connection = null;
InputStream inputStream = null;
ByteArrayOutputStream outputStream = null;

try {

// 禁用SSL证书验证
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}

@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}

@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
}};

// 创建SSLContext,使用禁用SSL证书验证的TrustManager
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

// 设置全局默认的SSLSocketFactory,使RestTemplate使用禁用SSL证书验证的SSLContext
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

URL url = new URL(imageUrl);
connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("GET");
connection.setConnectTimeout(1000 * 60 * 3); // 3 minutes timeout
connection.setReadTimeout(1000 * 60 * 3);
connection.setInstanceFollowRedirects(false); // Disable auto redirect

int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
inputStream = connection.getInputStream();
outputStream = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}

byte[] imageBytes = outputStream.toByteArray();
if (imageBytes.length > 0) {
response.reset();
response.setContentType("image/jpeg");
response.getOutputStream().write(imageBytes);
response.getOutputStream().flush();
return;
}
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} finally {
// Close resources
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
// Log error if needed
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
// Log error if needed
}
}
if (connection != null) {
connection.disconnect();
}
}
}
}
posted @ 2025-05-19 10:21  筱老邪  阅读(29)  评论(0)    收藏  举报