Я хотел бы получить доступ к файлам с определенным разрешением в .ico с несколькими разрешениями из javascript (или html, если на то пошло)

Я создал симпатичный мультиразрешающий файл favicon.ico, содержащий иконки с разрешением 16x16, 32x32 и 48x48. Они загружаются как в браузерах, так и при сохранении сайта на рабочем столе.

Однако это же изображение также используется на веб-сайте (в частности, как значок на панели инструментов). В настоящее время значок 16x16 также сохраняется как png, чтобы отображать его на самой веб-странице.

Мне это кажется ненужной избыточностью. Я хотел бы отобразить на странице сам favicon.ico и удалить png.

Однако простой выбор файла ico приводит к отображению файла с самым большим разрешением в контейнере .ico (проверено только в Ghrome для Mac).

Могу ли я выбрать отдельный значок в контейнере .ico? Было бы здорово, если бы у него был синтаксис типа <img src="favicon.ico:16"/>.

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

Спасибо.


person chadoh    schedule 05.05.2010    source источник


Ответы (1)


Я не думаю, что есть способ сделать это в javascript, лучше всего разорвать его на php или другом языке на стороне сервера, затем вы можете закодировать в базе 64 и включить закодированный текст в тег img.

Но я считаю, что это немного перебор, и он действительно полезен только в том случае, если изображение может сильно измениться. Затем вы должны учитывать стоимость обработки одной страницы, хотя вы могли бы разработать решение для кеширования.

Итак ... Я бы просто остановился на png - это небольшой, но приемлемый уровень избыточности.

M

person Martyn    schedule 05.05.2010
comment
Ха-ха, вот почему мне было неинтересно возиться с этим в JS. Я подумал, может быть, есть простой способ сделать это. Если нет, я буду придерживаться отдельного png. - person chadoh; 07.05.2010