Показать пользовательское изображение для некоторых изображений, если изображение не найдено - Lighttpd - PullRequest
1 голос
/ 31 октября 2008

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

РЕДАКТИРОВАТЬ: Проблема в том, что пользователь не создает контент, а создает процесс. По сути, мы добавляем элементы в каталог и хотим создать стандартизированный образ каталога из изображения, предоставленного поставщиком продукта. Однако я не хочу, чтобы медленный сервер на стороне провайдера замедлял добавление новых продуктов. Таким образом, отдельный процесс проходит и создает изображение позже, где это возможно. Я думаю, я мог бы заставить систему создать изображение по умолчанию при создании продукта, а затем перезаписать его позже, когда мы создадим изображение из предоставленного поставщиком изображения.

Ответы [ 5 ]

1 голос
/ 02 декабря 2008

Другая альтернатива на стороне клиента - сделать:

<img src="/images/generated_image_xyz.png" 
    onerror="this.src='/images/default_image.png'; this.title='Loading...';" />
1 голос
/ 31 октября 2008

Используйте тег <object> в HTML с отступлением к изображению по умолчанию.

<P>                 <!-- First, try the Python applet -->
<OBJECT title="The Earth as seen from space" 
        classid="http://www.observer.mars/TheEarth.py">
                    <!-- Else, try the MPEG video -->
  <OBJECT data="TheEarth.mpeg" type="application/mpeg">
                    <!-- Else, try the GIF image -->
    <OBJECT data="TheEarth.gif" type="image/gif">
                    <!-- Else render the text -->
     The <STRONG>Earth</STRONG> as seen from space.
    </OBJECT>
  </OBJECT>
</OBJECT>
</P>

(пример из w3.org)

0 голосов
/ 20 ноября 2008

Я думаю, вы могли бы решить эту проблему только на стороне клиента.

Исходя из ответа Ясперса, вы можете сделать:

<OBJECT data="/images/generated_image_xyz.png" type="image/png">
     Loading..<blink>.</blink>
</OBJECT>

Также наложение фона с использованием CSS вы можете сделать:

<style type="text/css">
    .content_image { width:100px; height: 100px; 
        background: transparent url('/images/default_image.png') no-repeat }
    .content_image div { width:100px; height: 100px; }
</style>

<div class="content_image">
     <div style="background: 
         transparent url('/images/generated_image_xyz.png') no-repeat" />
</div>

В последнем решении предполагается, что у вас нет прозрачности в созданном изображении.

0 голосов
/ 31 октября 2008

В дополнение к @kentlarsson - если вы хотите сделать это через Javascript, я недавно нашел этот код: http://jquery.com/plugins/project/Preload и демонстрация в http://demos.flesler.com/jquery/preload/placeholder/, которая делает то, что он предлагает - с опцией notFound.

Я недостаточно знаю о lighttpd, чтобы рассказать вам о настройке пользовательского изображения с одним или несколькими подкаталогами на сайте.

0 голосов
/ 31 октября 2008

Насколько я понимаю, ваша проблема: вы хотите показать промежуточное изображение до тех пор, пока не будет сгенерировано real изображение?

Вы можете отобразить загружаемое изображение и использовать AJAX для преобразования этого узла DOM в real изображение, когда оно будет создано. Вы можете написать его с нуля или использовать любую из известных и стабильных библиотек AJAX, если у вас нет собственных предпочтений, взгляните на jQuery .

...