Обнаружение, когда ошибочное изображение в PictureBox используется

Я нашел это на Google, щелкните здесь, который кто-то задал подобному вопросу, получив ответ, который они должны проверить, существует ли их файл. Однако я загружаю изображения из ссылок на сайт, в которых это отображает ошибочное изображение если A) Изображение не найдено или B) Если, как в услугах по хостингу изображений как Photobucket, отображается, 'Пропускная способность превысила' изображение. Существует ли способ обнаружить, если или ошибочное изображение показывает или если изображение недопустимо?

6
задан Dominic K 30 March 2010 в 00:09
поделиться

2 ответа

Да, событие LoadCompleted сообщает вам, что пошло не так:

private void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e) {
  if (e.Error != null) {
    // You got the Error image, e.Error tells you why
  }
}

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

private void pictureBox1_Paint(object sender, PaintEventArgs e) {
  if (pictureBox1.Image == pictureBox1.ErrorImage) {
    // You got the Error image
  }
}

Этот обработчик событий также обнаруживает ошибки загрузки так что может быть тот, который вы хотите использовать.

10
ответ дан 9 December 2019 в 22:31
поделиться

Не существует стандартного способа проверки правильности изображений, как вы хотели бы сделать. Изображение "Пропускная способность превышена" - вполне корректная картинка в глазах компьютера.

Тем не менее, вы можете попробовать некоторые приемы для отсеивания хотя бы нескольких "неправильных" изображений:

  • Если вы загружаете изображения, установите веб-соединение, которое не делает автоматических перенаправлений. Вы можете установить некую семантику, которая классифицирует изображение как "недействительное", если вы перенаправляетесь в другое место, где, возможно, находится изображение 'Bandwidth exceeded'. Недостатком этого метода, конечно, является то, что вы, возможно, отфильтруете изображения, которые находятся за перенаправлением и являются действительными.
  • Просто проверьте название изображения, переданного веб-сервером. Если вы подключаетесь к адресу типа "http://test.tld/image.jpg", а получаете "bandwidth_exceeded.jpg" или что-то подобное, то дело должно быть ясным. Этот метод требует, чтобы вы знали, как хостеры изображений называют свои изображения "пропускная способность превышена" или "больше не доступны".
  • Некий способ распознавания изображений, проверяющий известные "плохие" изображения. Довольно сложный метод.

Видите ли, эти семантические черные списки не идеальны, возможно, даже хуже - они отфильтровывают хорошие изображения.

1
ответ дан 9 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: