惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
J
Java Code Geeks
C
Check Point Blog
Last Week in AI
Last Week in AI
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
L
LangChain Blog
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 司徒正美
IT之家
IT之家
Martin Fowler
Martin Fowler
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
U
Unit 42
Jina AI
Jina AI
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ

博客园 - 筱老邪

2026年读书清单,及java技术的巩固 请求处理 编码和解码 SHA1签名算法,JAVA和C# C#与Java互通AES算法加密解密 在Java和C#中计算SHA-1哈希 .net5读取xml文件 部署linux 踩坑 多线程 .net知识点 下载文件,204问题 debug和release的web.config分开配置 数据库的索引查找 sql 查询出符合条件的表增加字段 HTTP状态码:400\500 错误代码 - 筱老邪 - 博客园 linq 两个list交集差集处理 rabbitMQ的使用 rabbitMQ的部署安装 sql 游标循环
图片转为为流的处理
筱老邪 · 2025-05-19 · via 博客园 - 筱老邪
方法一:
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();
}
}
}
}