Задание тайм-аута при чтении изображения URL с помощью функции MATLAB imread - PullRequest
4 голосов
/ 15 декабря 2011

Функция MATLAB imread обеспечивает возможность считывания изображения с URL.Обычно это работает нормально, но иногда я сталкиваюсь с изображением, на ответ на которое уходит очень много времени.

Например, во время публикации следующий URL просто застревает в «соединении ...»состояние более 5 минут, прежде чем, наконец, получится.

http://www.hollywoodheadache.com/wp-content/uploads/2007/12/tom-and-julia.jpg

Есть ли способ установить тайм-аут в MATLAB?

Спасибо

1 Ответ

1 голос
/ 15 декабря 2011

Я не знаю, как прервать imread объектом таймера. Кроме того, я подозреваю о его возможности. Но я могу порекомендовать вам проверить, можете ли вы сначала получить доступ к файлу, а затем вы получите файл. Я написал следующую функцию для проверки состояния файла и Интернета:

function flag = does_url_exist(urlName) 
    url =java.net.URL(urlName);
    try
        link = openStream(url); 
        parse = java.io.InputStreamReader(link); 
        snip = java.io.BufferedReader(parse); 
        if ~isempty(snip) 
            flag = 1; 
        else 
            flag = 0;
        end 
    catch exception
        flag = 0;
    end
end

Тогда это выглядит следующим образом:

fname = 'http://www.hollywoodheadache.com/wp-content/uploads/2007/12/tom-and-julia.jpg';
if(does_url_exist(fname))
    img = imread(fname);
end

Обратите внимание, что для проверки интернет-соединения я взял исходный код этого поста . Также обратите внимание, что если вы уверены, что файл существует, его неэффективно проверять снова, поскольку это увеличивает время выполнения.

...