Как проверить, есть ли изображение по ссылке Kotlin/Java?

В Java есть несколько способов проверить, существует ли изображение по ссылке. Давайте рассмотрим несколько вариантов.

1. С использованием класса URLConnection:

import java.net.URL;
import java.net.URLConnection;
import java.io.IOException;

public class ImageChecker {
    public static void main(String[] args) {
        String imageUrl = "https://example.com/image.jpg";
        
        try {
            URL url = new URL(imageUrl);
            URLConnection connection = url.openConnection();
            connection.connect();
            System.out.println("Изображение существует");
        } catch (IOException e) {
            System.out.println("Изображение не найдено: " + e.getMessage());
        }
    }
}

В этом примере мы создаем объект URL на основе ссылки изображения и открываем соединение с помощью openConnection(). Если соединение удалось установить, то изображение считается существующим.

2. С использованием библиотеки javax.imageio:

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;

public class ImageChecker {
    public static void main(String[] args) {
        String imageUrl = "https://example.com/image.jpg";
        
        try {
            URL url = new URL(imageUrl);
            BufferedImage image = ImageIO.read(url);
            
            if (image != null) {
                System.out.println("Изображение существует");
            } else {
                System.out.println("Изображение не найдено");
            }
        } catch (IOException e) {
            System.out.println("Изображение не найдено: " + e.getMessage());
        }
    }
}

В этом примере мы используем метод ImageIO.read(URL url), который возвращает null, если изображение не найдено.

3. С использованием библиотеки Apache HttpClient:

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.HttpResponse;
import java.io.IOException;


public class ImageChecker {
    public static void main(String[] args) {
        String imageUrl = "https://example.com/image.jpg";
        
        HttpClient httpClient = HttpClientBuilder.create().build();
        HttpHead httpHead = new HttpHead(imageUrl);
        try {
            HttpResponse response = httpClient.execute(httpHead);
            int statusCode = response.getStatusLine().getStatusCode();
            
            if (statusCode == 200) {
                System.out.println("Изображение существует");
            } else {
                System.out.println("Изображение не найдено");
            }
        } catch (IOException e) {
            System.out.println("Изображение не найдено: " + e.getMessage());
        } finally {
            httpClient.getConnectionManager().shutdown();
        }
    }
}

В этом примере мы создаем объект HttpClient, выполняем HttpHead запрос к ссылке изображения и проверяем статус код ответа. Если статус код равен 200, то изображение считается существующим.

Выбор метода зависит от требований и контекста вашего приложения. Все представленные способы проверки изображений по ссылке могут быть использованы как в Java, так и в Kotlin.