java如何从服务器获取图片

fiy 其他 61

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Java可以使用网络编程的相关API,如URLConnection、HttpURLConnection、HttpClient等来从服务器获取图片。

    1. 使用URLConnection获取图片
    import java.io.*;
    import java.net.URL;
    import java.net.URLConnection;
    
    public class ImageDownloader {
        public static void main(String[] args) {
            String imageUrl = "http://www.example.com/image.jpg";
            String savePath = "C:/path/to/save/image.jpg";
    
            try {
                URL url = new URL(imageUrl);
                URLConnection conn = url.openConnection();
                InputStream in = conn.getInputStream();
    
                FileOutputStream out = new FileOutputStream(savePath);
                byte[] buffer = new byte[1024];
                int len;
                while ((len = in.read(buffer)) != -1) {
                    out.write(buffer, 0, len);
                }
                out.close();
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    1. 使用HttpURLConnection获取图片
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class ImageDownloader {
        public static void main(String[] args) {
            String imageUrl = "http://www.example.com/image.jpg";
            String savePath = "C:/path/to/save/image.jpg";
    
            try {
                URL url = new URL(imageUrl);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    
                int responseCode = conn.getResponseCode();
                if (responseCode == HttpURLConnection.HTTP_OK) {
                    InputStream in = conn.getInputStream();
                    FileOutputStream out = new FileOutputStream(savePath);
                    byte[] buffer = new byte[1024];
                    int len;
                    while ((len = in.read(buffer)) != -1) {
                        out.write(buffer, 0, len);
                    }
                    out.close();
                    in.close();
                }
                conn.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    1. 使用HttpClient获取图片
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class ImageDownloader {
        public static void main(String[] args) {
            String imageUrl = "http://www.example.com/image.jpg";
            String savePath = "C:/path/to/save/image.jpg";
    
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(imageUrl);
    
            try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
                byte[] imageBytes = EntityUtils.toByteArray(response.getEntity());
                FileOutputStream out = new FileOutputStream(savePath);
                out.write(imageBytes);
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    以上就是Java从服务器获取图片的几种常用方法,可以根据实际情况选择合适的方法来实现。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Java可以通过以下几种方法从服务器获取图片:

    1.使用Java标准库的URL类:可以通过URL类的openStream()方法打开一个与服务器上图片资源的连接,并从该连接中获取图片的输入流。然后可以使用Java IO流来读取输入流中的数据,并将其保存为图片文件。

    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.net.URL;
    
    public class ImageDownloader {
        public static void downloadImage(String imageUrl, String savePath) {
            try {
                URL url = new URL(imageUrl);
                InputStream inputStream = url.openStream();
                
                // 读取输入流中的数据并写入到文件中
                FileOutputStream outputStream = new FileOutputStream(savePath);
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, bytesRead);
                }
                
                // 关闭输入流和输出流
                inputStream.close();
                outputStream.close();
                
                System.out.println("图片下载完成.");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args) {
            // 传入图片的URL和保存路径
            String imageUrl = "http://www.example.com/image.jpg";
            String savePath = "C:/path/to/save/image.jpg";
            
            downloadImage(imageUrl, savePath);
        }
    }
    

    2.使用Apache HttpClient库:Apache HttpClient是一个功能强大的HTTP客户端库,它可以处理HTTP请求和响应。可以使用HttpClient发送HTTP GET请求获取服务器上的图片,并将其保存到本地文件。

    import java.io.FileOutputStream;
    import java.io.InputStream;
    import org.apache.http.HttpEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    
    public class ImageDownloader {
        public static void downloadImage(String imageUrl, String savePath) {
            try {
                CloseableHttpClient httpClient = HttpClients.createDefault();
                
                // 创建HTTP GET请求
                HttpGet httpGet = new HttpGet(imageUrl);
                
                // 执行请求并获取响应
                CloseableHttpResponse response = httpClient.execute(httpGet);
                
                // 获取响应中的响应体
                HttpEntity entity = response.getEntity();
                
                // 获取响应体中的输入流
                InputStream inputStream = entity.getContent();
                
                // 读取输入流中的数据并写入到文件中
                FileOutputStream outputStream = new FileOutputStream(savePath);
                byte[] buffer = new byte[1024];
                int bytesRead;
                while ((bytesRead = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, bytesRead);
                }
                
                // 关闭输入流、输出流和响应
                inputStream.close();
                outputStream.close();
                response.close();
                httpClient.close();
                
                System.out.println("图片下载完成.");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public static void main(String[] args) {
            // 传入图片的URL和保存路径
            String imageUrl = "http://www.example.com/image.jpg";
            String savePath = "C:/path/to/save/image.jpg";
            
            downloadImage(imageUrl, savePath);
        }
    }
    

    以上是从服务器获取图片的两种常见方法,可以根据具体的需求选择合适的方法来使用。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要从服务器获取图片,在Java中可以使用URLConnection或HttpClient这样的类来进行网络请求。具体的操作流程如下:

    1. 导入相关的类库
      首先需要导入相关的类库以便能够使用URLConnection或HttpClient类。如果使用URLConnection,需要导入java.net包;如果使用HttpClient,需要导入org.apache.http包。

    2. 创建URL对象
      使用URL类的构造方法创建一个URL对象,将服务器的图片地址作为参数传入。例如:

    URL url = new URL("http://example.com/image.jpg");
    
    1. 打开连接
      使用URL对象的openConnection()方法打开连接,并获取URLConnection对象,或使用HttpClient类创建HttpClient对象。

    如果使用URLConnection,示例代码如下:

    URLConnection conn = url.openConnection();
    

    如果使用HttpClient,示例代码如下:

    HttpClient httpClient = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet(url.toString());
    HttpResponse response = httpClient.execute(httpGet);
    
    1. 设置请求头(可选)
      根据需要可以设置一些请求头参数,例如设置User-Agent等。示例代码如下:
    conn.setRequestProperty("User-Agent", "Mozilla/5.0");
    
    1. 获取输入流
      使用URLConnection的getInputStream()方法获取服务器返回的输入流,或使用HttpClient的getEntity()方法获取返回的HttpEntity对象并通过其getContent()方法获取输入流。

    如果使用URLConnection,示例代码如下:

    InputStream in = conn.getInputStream();
    

    如果使用HttpClient,示例代码如下:

    HttpEntity entity = response.getEntity();
    InputStream in = entity.getContent();
    
    1. 读取和保存图片
      可以使用BufferedInputStream将输入流包装为缓冲流,然后可以使用BufferedOutputStream将图片写入本地文件或内存中的一个字节数组中,示例代码如下:
    BufferedInputStream bis = new BufferedInputStream(in);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len;
    while ((len = bis.read(buffer)) > -1) {
        bos.write(buffer, 0, len);
    }
    bos.flush();
    byte[] imageBytes = bos.toByteArray();
    
    1. 关闭连接
      使用URLConnection的disconnect()方法关闭连接,或使用HttpClient的close()方法关闭HttpClient对象。

    如果使用URLConnection,示例代码如下:

    conn.disconnect();
    

    如果使用HttpClient,示例代码如下:

    httpClient.close();
    

    以上就是Java从服务器获取图片的方法和操作流程。根据具体的需求和网络库的选择,可以使用URLConnection或HttpClient类来完成图片的获取和保存。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部