Лучший способ отобразить изображение по умолчанию, если указанный файл изображения не найден?

Это упражнение по манипулированию рекуррентными отношениями, в основном. Чтобы понять этот ответ, вам должно быть удобно переключаться между матрицей и формой системы.

Сначала мы получаем повторение для fib(i)^K. На самом деле это включает в себя систему повторений для fib(i)^K, fib(i)^(K-1) fib(i-1), fib(i)^(K-2) fib(i-1)^2, ..., fib(i-1)^K. Я продемонстрирую для K = 3.

fib(i)^3 = (fib(i-1) + fib(i-2))^3
         = fib(i-1)^3 + 3 fib(i-1)^2 fib(i-2) + 3 fib(i-1) fib(i-2)^2 + fib(i-2)^3
fib(i)^2 fib(i-1) = (fib(i-1) + fib(i-2))^2 fib(i-1)
                  = fib(i-1)^3 + 2 fib(i-1)^2 fib(i-2) + fib(i-1) fib(i-2)^2
fib(i) fib(i-1)^2 = (fib(i-1) + fib(i-2)) fib(i-1)^2
                  = fib(i-1)^3 + fib(i-1)^2 fib(i-2)
fib(i-1)^3 = fib(i-1)^3

Они могут быть объединены в одну матрицу.

[fib(i)^3    fib(i)^2 fib(i-1)    fib(i) fib(i-1)^2    fib(i-1)^3] =
                                                                           i
= [fib(0)^3    fib(0)^2 fib(-1)    fib(0) fib(-1)^2    fib(-1)^3] [1 0 0 0]
                                                                  [3 1 0 0]
                                                                  [3 2 1 0]
                                                                  [1 1 1 1]
                     i
= [0 0 0 1] [1 0 0 0]
            [3 1 0 0]
            [3 2 1 0]
            [1 1 1 1]

Вы можете узнать треугольник Паскаля там.

Теперь, учитывая систему повторений для функции f(i), мы можем вычислить повторения для f(c i), увеличив матрицу до степени c.

Последний шаг - перейти от повторения f(i) к повторению F(i) = f(0) + f(1) + ... + f(i-1). Просто добавить уравнение

F(i) = F(i-1) + f(i-1)

в систему.

Вычислив матрицу, которая, по моей оценке, будет иметь не более 12^2 = 144 элементов, мы можем вычислить соответствующую мощность, используя быстрый метод возведения в степень 10^9 + 7. Имейте в виду скрывающуюся одну-единственную ошибку & ndash; это F(n+1), что вы хотите.

14
задан Community 28 October 2013 в 09:19
поделиться

5 ответов

Вы могли бы рассмотреть что-то с JavaScript

<img src="image.jpg" onerror="this.onerror=null;this.src='default.jpg'">

Править: Или программа a 404.aspx возвращая изображение по умолчанию, если несуществующее изображение требовали.

42
ответ дан 1 December 2019 в 06:31
поделиться
<style>
  .fallback { background-image: url("fallback.png"); }
</style>

<img class="fallback" src="missing.png" width="400" height="300">

Если missing.png загрузки, это покроет место, выделенное для него, как будто нейтрализация не была указана. (Принятие это не прозрачно.)

Если missing.png сбои для загрузки пространство вместо этого будет заполнено fallback.png. Вы все еще получите немного значка "разорванного изображения", но я предпочитаю его тот путь... немного подсказки, которая говорит, "фиксируют меня".

Если Ваши изображения не будут всеми одинаковыми размер, то Вы заметите что фоновые мозаики по умолчанию. Можно использовать background-repeat: no-repeat; если Вам не нравится это.

2
ответ дан 1 December 2019 в 06:31
поделиться

Можно указать на сервере, какое изображение должно быть возвращено для всех запросов к несуществующим файлам изображений. Тем путем пользователь может получить "2 AWESUM 2 SHO" lolcat вместо красного x.

1
ответ дан 1 December 2019 в 06:31
поделиться

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

0
ответ дан 1 December 2019 в 06:31
поделиться

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

Другой способ обработать это состоял бы в том, чтобы иметь обработчик (или контроллер в ASP.NET MVC), который делает поиск изображения на основе идентификатора и возвращает данные изображения. Вместе с кэшированием это могло быть очень эффективно и позволит Вам делать замену изображения также.

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

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