Содержание

Адаптивные изображения — Изучение веб-разработки

В данной статье мы изучим концепцию гибких (responsive) изображений — таких, которые отображаются хорошо на устройствах с сильно отличающимися размерами экрана, разрешением, и другими характеристиками — и рассмотрим инструменты, которые  имеются в HTML для их реализации. Responsive images — только одна часть (и хорошее начало) гибкого веб-дизайна, темы, которая будет рассмотрена подробнее в будущем модуле на тему CSS.

Какую проблему мы пытаемся решить адаптивными изображениями? Давайте рассмотрим типичный сценарий. Обычный веб-сайт может содержать изображение в заголовке, для улучшения визуального восприятия пользователем, а также несколько изображений в контенте под ним. Вы, вероятно, захотите, чтобы изображение в заголовке занимало всю ширину окна, а изображения в контенте размещались где-то внутри колонки с контентом. Давайте посмотрим на следующий простой пример:

Такая вёрстка хорошо выглядит на широкоформатных экранах ноутбуков и настольных ПК, (вы можете посмотреть посмотреть демо-пример и найти исходный код на Github.

) Мы не будем подробно рассматривать CSS, скажем только следующее:

  • Содержимому тега main задана максимальная ширина 1200 пикселей. Если окно браузера выше этой ширины, то содержимое сайта остаётся на 1200 пикселей и центрирует себя в доступном пространстве. Если окно браузера ниже этой ширины, содержимое устанавливается в 100% от ширины экрана.
  • Изображение в шапке всегда будет оставаться в центре тега header вне зависимости от ширины браузера. Если сайт будет просматриваться на узких экранах, то важные детали в центре изображения (люди) всё равно будут видны. Все, что выходит за пределы ширины экрана будет скрыто. Высота шапки 200 пикселей.
  • Изображения в содержимом заданы так, что если ширина body становится меньше чем ширина изображения, то изображения начинают сжиматься и остаются всегда внутри body и не выступают за его пределы.

Всё хорошо, однако проблемы начинаются, когда вы просматриваете сайт на устройстве с небольшим экраном – шапка внизу выглядит нормально, но теперь она занимает значительную высоту экрана; первое изображение в контенте напротив, выглядит ужасно – при таком размере едва можно рассмотреть людей!

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

art direction problem.

Кроме того, нет нужды встраивать такие большие изображения на страницу, если она просматривается на маленьком экране мобильного устройства; это называется resolution switching problem — растровое изображение представляет собой точно-заданное количество пикселей по ширине и высоте; как мы успели заметить, когда рассматривали векторную графику, растровое изображение становится зернистым и выглядит ужасно, если оно отображается в размере большем, чем оригинальный (тогда как векторное изображение нет). В то же время, если изображение отображается в гораздо меньшем размере, чем оригинальный, это приведёт к напрасной трате трафика — пользователи мобильных устройств будут грузить большое изображение для компьютера, вместо маленького для их устройства. Идеально было бы иметь несколько файлов в разных разрешениях, и отображать нужный размер в зависимости от устройства, обращающегося к веб-сайту.

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

По сути это всё одна задача в разных условиях.

Можно предположить, что векторные изображения могли бы решить эти проблемы. В какой-то степени это так. У них небольшой вес и размер, поэтому их можно использовать почти в любом случае. Они хороши для простой графики, узоров, элементов интерфейса и т. д. Сложнее создать векторное изображение с большим количеством деталей, как, например, на фото. Растровые изображения (JPEG) для нашего примера подходят больше. 

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

Технологии отзывчивых изображений были реализованы недавно для решения проблем, указанных выше. Они позволяют вам предоставить браузеру несколько изображений, каждое из которых отображает одно и то же, но содержит разное количество пикселей (resolution switching), или разные изображения с отдельными областями основного изображения (art direction).

Примечание: Новые возможности обсуждаются в статье — srcset/sizes/<picture> — все они поддерживаются последними версиями современных настольных и мобильных браузеров (включая Microsoft Edge, но не Internet Explorer).

В этом разделе рассмотрим две вышеописанные проблемы и покажем, как их решить с использованием инструментов HTML <img>. Как показано на примере выше — изображение в заголовке используется только как украшение сайта и установлено как фоновое с помощью CSS. CSS больше подходит для адаптивного дизайна чем HTML, об этом поговорим в следующем модуле о CSS.

Разные разрешения: Разные размеры

Итак, какую проблему решают разные разрешения? В зависимости от устройства нужно отобразить одно и то же изображение, но разных размеров. Посмотрите на вторую картинку в примере. Стандартный элемент <img> обычно позволяет указать только один  путь к файлу:

<img src="elva-fairy-800w. jpg" alt="Elva dressed as a fairy">

Однако есть два новых атрибута — srcset and sizes — позволяющих добавить дополнительные изображения с пометками, чтобы браузер выбрал подходящее. Пример на Github: responsive.html (также смотри источник кода).

<img srcset="elva-fairy-320w.jpg 320w,
             elva-fairy-480w.jpg 480w,
             elva-fairy-800w.jpg 800w"
    
     src="elva-fairy-800w.jpg" alt="Elva dressed as a fairy">

Атрибуты srcset

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

srcset включает названия изображений, среди которых браузер выберет нужное и их размеры. Перед каждой запятой части значения в таком порядке:

  1. Название изображения (elva-fairy-480w. jpg.)
  2. Пробел.
  3. Актуальная ширина картинки 
    в пикселах 
    (480w) — заметьте, что здесь используется w вместо px, как вы могли ожидать.  Эта настоящая ширина изображения, которая может быть просмотрена в свойствах картинки на вашем компьютере (например, на Mac нужно открыть картинку в Finder и нажать  Cmd + I , чтобы вывести информацию на экран).

sizes определяет перечень медиавыражений (например, ширину экрана) и указывает предпочтительную ширину изображения, когда определённое медиавыражение истинно — это то, о чём мы говорили выше. В нашем случае, перед каждой запятой мы пишем:

  1. Медиа-условие ((max-width:480px)) — вы можете больше узнать об этом в CSS topic, но сейчас давайте скажем, что медиа-условие описывает возможное состояние экрана. В этом случае, мы говорим «когда viewport width меньше или равен 480 пикселям».
  2. Пробел.
  3. Ширину слота (в оригинале «width of the slot»), занимаемую изображением, когда медиа-условие истинно. (440px)

Note: Для ширины слота, вы можете указать абсолютные значения (px, em) или значение относительно окна просмотра (vw), но НЕ проценты. Вы могли заметить, что у последнего слота нет медиа-условия — это значение по умолчанию, которое станет актуальным, если ни одно из предыдущих медиа-условий не будет истинно. Браузер игнорирует все последующие проверки после первого совпадения, так что будьте внимательнее к порядку их объявления.

Итак, с такими атрибутами, браузер сделает следующее:

  1. Посмотрит на ширину экрана устройства.
  2. Попытается определить подходящее медиа-условие из списка в атрибуте sizes.
  3. Посмотрит на размер слота к этому медиавыражению.
  4. Загрузит изображение из списка из srcset, которое имеет тот же размер, что и выбранный слот, или, если такого нет, то первое изображение, которое больше размера выбранного слота.
     

И это всё! На текущий момент, если поддерживающий браузер с viewport width 480px загрузит страницу, медиа-условие (max-width: 480px) будет истинно, следовательно, будет выбран слот 440px, тогда будет загружено изображение elva-fairy-480w.jpg, так как свойство ширины (480w) наиболее близко значение 440px. Условно, изображение 800px занимает на диске 128KB, в то время как версия в 480px только 63KB — экономия в 65KB. Теперь представьте, что у вас страница, на которой много изображений. Используя это технику, вы обеспечите мобильным пользователям большую пропускную способность.

Старые браузеры, не поддерживающие эти возможности, просто проигнорируют их и возьмут изображение по адресу из атрибута src.

Note: В описании элемента <head> вы найдёте строку <meta name="viewport" content="width=device-width">: это заставляет мобильные браузеры адаптировать их реальный viewport width для загрузки web-страниц (некоторые мобильные браузеры нечестны насчёт своего viewport width, вместо этого они загружают страницу в большем viewport width, а затем ужимают её, что не очень хорошо сказывается на наших отзывчивых изображениях или дизайне. Мы расскажем вам об этом больше в будущем модуле.)

Полезные инструменты разработчика

Есть несколько полезных браузерных инструментов разработчика, чтобы помочь с определением необходимой ширины слотов и т. д., которые вам нужно использовать. Когда я работал над ними, я сначала загружал фиксированную версию моего примера (not-responsive.html), затем открывал Responsive Design View (Tools > Web Developer > Responsive Design View), который позволяем взглянуть на layout вашей веб-страницы как если бы они были просмотрены через устройства с различными размерами экрана.

Я устанавливал viewport width на 320px, затем на 480px; для каждой я обращался к DOM Inspector, кликал по элементу <img> в котором мы заинтересованы, далее смотрел размер во вкладке Box Model с правой стороны дисплея. Это должно дать вам необходимую ширину изображения

А дальше вы можете проверить работает ли srcset если установить значение viewport width таким каким вы хотите (например, установить узкую ширину), открыв Network Inspector (Tools > Web Developer > Network) и затем перезагрузить страницу. Это должно дать вам перечень ресурсов которые были загружены чтобы составить (собрать) web-страницу, и тут вы можете проверить какой файл изображения был выбран для загрузки.

Переключения разрешений: Одинаковый размер, разные разрешения

Если вы поддерживаете несколько разрешений экрана, но все видят ваше изображение в одном и том же размере на экране, вы можете позволить браузеру выбирать изображение с подходящим разрешением используя srcset с x-дескриптором и без sizes — более простой синтаксис! Найти пример как это выглядит можно здесь srcset-resolutions.html (смотрите также the source code):

<img srcset="elva-fairy-320w.jpg,
             elva-fairy-480w.jpg 1.5x,
             elva-fairy-640w.jpg 2x"
     src="elva-fairy-640w.jpg" alt="Elva dressed as a fairy">

В данном примере, к изображению применяется CSS таким образом, что оно имеет ширину в 320 пикселей на экране (также называемое CSS-пикселями):

В этом случае, нет необходимости в sizes — браузер просто определяет в каком разрешении отображает дисплей и выводит наиболее подходящее изображение в соответствии с srcset. Таким образом, если устройство, подключаемое к странице, имеет дисплей стандартного/низкого разрешения, когда один пиксель устройства представляет (соответствует) каждый CSS-пиксель, то будет загружено изображение elva-fairy-320w.jpg (применён x1, то есть вам не надо включать его). Если устройство имеет высокое разрешение, в два пикселя устройства на каждый CSS-пиксель или более, то будет загружено изображение elva-fairy-640w.jpg. 640px изображение имеет размер 93KB, тогда так 320px изображение — всего 39KB.

Художественное оформление

Подводя итоги, проблема художественного оформления заключается в желании изменить отображаемое изображение чтобы оно соответствовало разным размерам отображения изображения. Например, если на веб-сайте отображается большой пейзажный снимок с человеком посередине при просмотре в браузере на настольном компьютере, то при просмотре веб-сайта в мобильном браузере он уменьшается; он будет выглядеть плохо так как человек будет очень меленьким и его будет тяжело разглядеть. Вероятно будет лучше показать меньшую портретную картинку в мобильной версии на которой человек отображается в увеличении (в приближении). Элемент <picture> позволяет нам применять именно такое решение.

Возвращаясь к нашему оригинальному примеру not-responsive.html, мы имеем изображение которое очень нуждается в художественном оформлении:

<img src="elva-800w.jpg" alt="Chris standing up holding his daughter Elva">

Давайте исправим это при помощи элемента <picture>! Так же как <video> и <audio>, элемент <picture> это обёртка содержащая некоторое количество элементов <source> которые предоставляют браузеру выбор нескольких разных источников, в сопровождении крайне важного элемента <img>. Код responsive.html выглядит так:

<picture>
  <source media="(max-width: 799px)" srcset="elva-480w-close-portrait. jpg">
  <source media="(min-width: 800px)" srcset="elva-800w.jpg">
  <img src="elva-800w.jpg" alt="Chris standing up holding his daughter Elva">
</picture>
  • Элемент <source> принимает атрибут media, который содержит медиа-условие; при помощи этих условий определяется, какое изображение будет выведено. В данном случае, если ширина viewport’a составит 799px или меньше, будет выведено изображение первого элемента <source>. Если ширина составит 800px и более — второго.
  • Атрибут srcset содержит путь изображения, которое будет выведено. Обратите внимание, что, как и в примере с <img> выше, <source> может принимать атрибуты srcset и sizes с несколько предопределёнными изображениями. Так вы можете не только поместить группу изображений внутри элемента <picture>, но и задать группу предписаний для каждого из них. В реальности вы вряд ли захотите заниматься этим очень часто.
  • Вы всегда должны использовать элемент <img>, с src и alt, прямо перед </picture>, иначе изображения не появятся. Это нужно на тот случай, когда ни одно из медиа-условий не удовлетворено (например, если бы вы убрали второй элемент <source>) или браузер не поддерживает элемент <picture>.

Этот код позволяет нам выводить отзывчивое изображение и на широких, и на узких экранах, как показано ниже:

Примечание: вам следует использовать атрибут media только при художественном оформлении; когда вы используете media, не применяйте медиа-условия с атрибутом sizes.

Почему это нельзя сделать посредством CSS и JavaScript?

Когда браузер начинает загружать страницу, он начинает загрузку изображений до того, как главный парсер начал загружать и интерпретировать CSS и JavaScript. В среднем, эта техника уменьшает время загрузки страницы на 20%. Но она не так полезна в случае с адаптивными изображениями, поэтому и необходимы такие решения, как srcset. Например, вы не могли бы загрузить элемент <img>, потом определить ширину вьюпорта при помощи JavaScript и динамически изменить источник изображения. Изначальное изображение было бы уже загружено к тому времени, как вы загрузили его меньшую версию, что плохо.

Смело используйте современные форматы изображений

Есть несколько новых форматов изображения (таких, как WebP и JPEG-2000), которым удаётся сохранять высокое качество при малом размере файла. Тем не менее, браузеры поддерживают их не полностью.

<picture> позволяет нам использовать их в старых браузерах. Вы можете прописать MIME-тип внутри атрибута type, браузер сразу определит файлы такого типа как неподдерживаемые:

<picture>
  <source type="image/svg+xml" srcset="pyramid. svg">
  <source type="image/webp" srcset="pyramid.webp">
  <img src="pyramid.png" alt="regular pyramid built from four equilateral triangles">
</picture>
  • Не используйте атрибут media, если вам не нужно художественное оформление.
  • В элементе <source> можно указывать путь к изображениям только того типа, который указан в type.
  • Как и в предыдущих примерах, при необходимости вы можете использовать srcset and sizes.

Самостоятельно создайте отзывчивое, художественно оформленное изображение для широких и узких экранов, используя <picture> и srcset.

  1. Напишите простую HTML-разметку.
  2. Найдите широкоформатное пейзажное фото с какой-нибудь яркой деталью. Создайте веб-версию изображения посредством графического редактора, потом обрежьте его, чтобы крупнее выделить деталь, и создайте второе изображение (примерно 480px достаточно).
  3. Используйте элемент <picture> для работы с художественно оформленной картинкой.
  4. Обозначьте несколько разных размеров для этой картинки.
  5. Используйте srcset/size для описания переключения при смене размеров вьюпорта

Примечание: Используйте инструменты разработчика, чтобы отследить смену размера, как было описано выше.

Это все для отзывчивых изображений — мы надеемся, вам понравилось играть с этими новыми технологиями. Напомним, что мы здесь обсуждали две различные проблемы:

  • Художественное оформление: Проблема, при которой вы хотите использовать обрезанные изображения для различных макетов — например, ландшафтное изображение для полных экранов на макете компьютера и портретное изображение, показывающее увеличенный основной объект, для мобильного макета. Всё это может быть решено с помощью <picture> элемента.
  • Переключение разрешений: Проблема, при которой вы хотите использовать файлы изображений меньшего размера на устройствах с узким экраном, поскольку им не нужны огромные изображения, как на настольных дисплеях, а также дополнительно, что вы хотите использовать изображения разного разрешения для экранов с высокой/низкой плотностью. Эту проблему можно решить с помощью векторной графики (SVG изображений), и srcset и sizes атрибуты.

Это так же подводит нас к окончанию целого модуля «Мультимедиа и встраивание»! Единственное, что вам осталось сейчас сделать перед тем, как двигаться дальше — это попробовать наше мультимедийное задание и посмотреть, как вы усвоили материал. Веселитесь!

Оптимизация изображений для web / Хабр

В интернете достаточно статей и проектов для ресайза изображений. Почему же нужна еще одна? В этой статье я расскажу почему нас не удовлетворили текущие решения и пришлось пилить собственное.



Проблема

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

Мы решаем две проблемы. Первая проблема в том, что изображения часто не пережаты под нужное разрешение, то есть клиенту приходится не только качать ненужные ему данные, но и тратить ресурсы CPU на ресайз картинки силами браузера. Решение: отдавать пользователю картинки в том разрешении, в котором они будут показаны в браузере.

Вторая проблема в том, что изображения обычно недостаточно хорошо сжаты, то есть можно закодировать их оптимальнее, что увеличит скорость загрузки страницы без субъективной потери качества изображения. Решение: оптимизировать картинки перед отдачей клиенту.

В качестве примера, как делать не нужно можно посмотреть на главную страницу такого известного сайта, как github.com. При весе страницы 2 Мб, 1.2 из них занимают бесполезные картинки, которые можно оптимизировать и не загружать.

Второй пример — наш Хабр. Скриншот приводить не буду, что бы не растягивать статью, результаты по ссылке. На хабре картинкам изменяют разрешение на нужное, но не оптимизируют их. Это позволило бы сократить их размер на 650 Кб (50%).

Во многих местах на сайте нужны уменьшенные версии картинок, например чтобы в ленте новостей показывать уменьшенную версию картинки новости. Мы это реализуем следующим образом— на нашем сервере хранится только картинка в максимальном качестве, а при необходимости вставить ее отресайженную версию надо дописать в конец урла требуемое разрешение через «@». Тогда запрос отправится не за файлом, а на наш ресайзящий бэкенд и вернет отресайженную и оптимизированную версию картинки.

Распространенные решения

Все, что будет сказано далее относится к JPEG и PNG изображениям, т.к. это наиболее популярные форматы в интернете.

Вбив в google что-то вроде «image resize backend» вы увидите, что в половине случаев предлагается использовать Nginx, другая часть— это различные самописные сервисы, чаще всего Node.js.

Из nginx, а точнее из libgd, которая используется в модуле nginx’а мы смогли выжать на тестовой картинке 63 RPS, что неплохо, но хотелось бы быстрее и больше гибкости. Graphicsmagick тоже не подходит, т.к. его скорость работы слишком низкая. К тому же оба эти решения выдают не оптимизированные изображения. Большинство других решений, например на Node предлагают использовать Sharp для ресайза, MozJPEG для оптимизации JPEG изображений и pngquant для оптимизации PNG.

Мы и сами достаточно долгое время пользовались самописной связкой из Nod’ы, Libvips и MozJPEG c pngquant, но в один из дней задались вопросом— «А можно ли сделать ресайз быстрее и менее требовательным к ресурсам?».

Спойлер: можно. 😉

Теперь хорошо бы выяснить, как можно ускорить наше приложение. Изучив код приложения мы выяснили, что imagemin, который использовался для оптимизации, а в частности его плагины MozJPEG и pngquant при работе дергают одноименные утилиты через os.Exec. Будем это дело однозначно выпиливать и использовать только биндинги к Cи’шным либам. Для ресайза использовался модуль Sharp, который представляет собой биндинг к С библиотеке Libvips.

Наша реализация

Гуглеж показал, что Libvips по прежнему лидер по скорости и конкурировать с ним может только OpenCV. Значит будем использовать Libvips и в нашей реализации, это уже проверенное решение и он имеет готовый биндинг для Go. Пора попробовать написать прототип и посмотреть что из этого выйдет.

Пару слов о том, почему для попытки решения данной проблемы был выбран Golang. Во первых он достаточно быстрый, вы же еще помните, что мы хотим сделать быстрый ресайз. Код на нем легко читать и поддерживать. Последним требованием была возможность работы с C библиотека, нам это пригодится.

Быстро написали прототип, протестировали и поняли, что несмотря на большее, чем в Sharp, количество внутренних крутилок, Libvips по-прежнему выдает на выход не оптимизированные изображения. С этим надо что-то делать. Опять обращаемся ко всемогущему гуглу и узнаем, что лучший вариант это по-прежнему MozJPEG. Тут начинают закрадываться сомнения, что мы сейчас напишем то же самое, что было на Node, только на Go. Но внимательно почитав описание MoZJPEG узнаем, что она является форком libjpeg-turbo и совместима с ней.

Выглядит очень многообещающе. Дело за малым — собрать свою версию Libvips, в которой jpeg-turbo заменен на версию от Mozila. Для сборки мы выбрали Alpine Linux, т.к. приложение все равно планировалось публиковать с помощью Докера и Alpine имеет очень приятный формат конфига пакета, очень похожий на используемый в Arch Linux.

Оптимизация картинки уменьшила ее размер в 4 раза без видимой потери качества.
Оригинальный JPEG
351×527
79 Кб
Оптимизированный
351×527
17 Кб

Собрали, протестировали. Теперь Libvips сразу при ресайзе выдает оптимизированную версию. То есть в Node версии версии мы сначала делали ресайз, а потом еще раз пропускали картинку через decoder-encoder. Теперь мы только делаем ресайз.

С JPEG разобрались, а что делать с png. Для решения этой задачи была найдена библиотека libpngquant. Она не очень популярная, несмотря на то, что консольная утилита pngquant, которая базируется на ней, используется во многих решениях. Так же к ней был найден биндинг на Go, немного заброшенный и с утечкой памяти, пришлось его форкнуть починить, дополнить документацией и всем остальным, что подобает приличному проекту. Libpngquant мы тоже собрали в виде Alpine пакета для простой установки.

Благодаря тому, что теперь изображение не требуется сохранять в файл для обработки c помощью pngquant мы можем немного оптимизировать процесс. Например не сжимать картинку при ресайзе в Libvips, а только после обработки в pngquant. Это позволит сохранить немного драгоценного процессорного времени. Надо ли говорить, что мы так же очень экономим благодаря тому, что вызов C библиотеки гораздо быстрее запуска консольной утилиты.

Разница в размере в 3 раза, но возможно появление артефактов (зависит от картинки).
Оригинальный PNG
450×300
200 Кб
Оптимизированный
450×300
61 Кб

Пример не очень удачной картинки, на которой появляются артефакты при сжатии.
Оригинальный PNG
351×527
270 Кб
Оптимизированный
351×527
40 Кб

После того, как прототип был написан, протестирован на моем пк и выдавал приличные 25 RPS на мобильном двух ядерном проце, сжирая весь CPU, захотелось увидеть сколько можно выжать из него на нормальном железе. Запускаем код на шести ядерной машине, натравливаем Jmeter и WTF??? Получаем 30 RPS. Пробуем разобраться что за фигня.

Libvips сам реализует многопоточность, то есть нам нужно только инициализировать библиотеку и в дальнейшем мы можем безопасно обращаться к ней из любого потока. Но у нас почему-то Libvips работает в 1 поток, что ограничивает нас одним ядром. Еще 1 ядро занимает pngquant. Итого получается, что наша супер быстрая ресайзилка отлично работает только на ноутбуке разработчика, а на остальных машинах не может утилизировать все ресурсы. 😉

Смотрим исходники биндинга к Libvips и видим, что там CONCURRENCY по умолчанию выставляется в 1 из-за возникавших в Libvips гонок данных. Но судя по баг трекеру эти проблемы давно исправлены. Выставили CONCURRENCY обратно, тестируем. Ничего не поменялось, Libvips по-прежнему отказывался ресайзить изображения многопоточно. Все попытки побороть эту проблему потерпели неудачу и сказать по правде, я запарился ее решать и решил обойти проблему на другом уровне.

Все более или менее современные ядра Linux (3.9+ и 2.6.32-417+ в CentOS 6) поддерживают опцию SO_REUSE, которая позволяет использовать один порт нескольким экземплярам приложения. Данный подход удобнее, чем балансировка средствами стороннего ПО, такого как HAProxy, т.к. не требует конфигурации и позволяет быстро добавлять и убирать инстансы.
Поэтому мы использовали SO_REUSE и опцию «—scale» в Docker compose, которая позволяет указать количество запускаемых экземпляров.

Время мерить

Пришло время оценить результат наших трудов.

Конфигурация:

  • CPU: Intel Xeon E5-1650 v3 @ 3.50GHz 6 cores (12 vCPU)
  • RAM: 64 Gb (используется около 1-2 Gb)
  • Кол-во воркеров: 12

Результаты:


Больше бенчмарков (правда без сравнения с Node версией) на

wiki странице

.

Как видно переделывали ресайз мы не напрасно, увеличение скорости составило от 30 до 400% (в некоторых случаях). Если требуется ресайзить еще быстрее, то можно покрутить ручки «speed» и «quality» в libimagequant. Они позволят дополнительно сократить размер или увеличить скорость кодирования ценой потери качества изображения.

Код проекта на GitHub.
Биндинг Go к libimagequant так же на GitHub.

Image Класс (System.Web.UI.WebControls) | Microsoft Docs

В следующем примере показано, как создать Image элемент управления на веб-странице.

ImageЭлемент управления позволяет работать с изображениями из серверного кода. Используйте Image элемент управления для вывода любого допустимого изображения, поддерживаемого запрашивающим браузером на веб-странице. Путь к отображаемому изображению задается заданием ImageUrl Свойства. Можно указать текст, который будет отображаться вместо Image, если изображение недоступно, задав AlternateText свойство. Выравнивание изображения по отношению к другим элементам на веб-странице задается параметром ImageAlign Property.

Image()

Инициализирует новый экземпляр класса Image.

AccessKey

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

(Унаследовано от WebControl)
Adapter

Возвращает конкретный адаптер браузера для элемента управления.

(Унаследовано от Control)
AlternateText

Возвращает или задает альтернативный текст, отображаемый в элементе управления Image, когда изображение недоступно. Браузеры, поддерживающие отображение подсказок, отображают этот текст как подсказку.

AppRelativeTemplateSourceDirectory

Возвращает или задает относительно приложения виртуальный каталог объекта Page или UserControl, который содержит этот элемент управления.

(Унаследовано от Control)
Attributes

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

(Унаследовано от WebControl)
BackColor

Получает или задает цвет фона серверного веб-элемента управления.

(Унаследовано от WebControl)
BindingContainer

Возвращает элемент управления, который содержит привязку данных элемента управления.

(Унаследовано от Control)
BorderColor

Возвращает или задает цвет рамки элемента управления Веба.

(Унаследовано от WebControl)
BorderStyle

Получает или задает стиль границы серверного веб-элемента управления.

(Унаследовано от WebControl)
BorderWidth

Возвращает или задает ширину границы серверного веб-элемента управления.

(Унаследовано от WebControl)
ChildControlsCreated

Возвращает значение, которое указывает, созданы ли дочерние элементы управления серверного элемента управления.

(Унаследовано от Control)
ClientID

Получает идентификатор элемента управления для HTML-разметки, созданной ASP.NET.

(Унаследовано от Control)
ClientIDMode

Возвращает или задает алгоритм, используемый для создания значения свойства ClientID.

(Унаследовано от Control)
ClientIDSeparator

Возвращает значение символа разделителя, используемого в свойстве ClientID.

(Унаследовано от Control)
Context

Возвращает объект HttpContext, связанный с серверным элементом управления для текущего веб-запроса.

(Унаследовано от Control)
Controls

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

(Унаследовано от Control)
ControlStyle

Возвращает или задает стиль серверного веб-элемента управления. Это свойство используется преимущественно разработчиками элементов управления.

(Унаследовано от WebControl)
ControlStyleCreated

Возвращает значение, определяющее, был ли объект Style создан для свойства ControlStyle. Этот свойство в основном используется разработчиками элементов управления.

(Унаследовано от WebControl)
CssClass

Возвращает или задает класс каскадных листов стилей (CSS), преобразовываемый для просмотра в серверном веб-элементе управления на клиентском компьютере.

(Унаследовано от WebControl)
DataItemContainer

Возвращает ссылку на контейнер именования, если контейнер именования реализует класс IDataItemContainer.

(Унаследовано от Control)
DataKeysContainer

Возвращает ссылку на контейнер именования, если контейнер именования реализует класс IDataKeysControl.

(Унаследовано от Control)
DescriptionUrl

Возвращает или задает расположение подробного описания для изображения.

DesignMode

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

(Унаследовано от Control)
Enabled

Получает или задает значение, определяющее, включен ли элемент управления.

EnableTheming

Возвращает или задает значение, указывающее, применяются ли темы к этому элементу управления.

(Унаследовано от WebControl)
EnableViewState

Получает или задает значение, указывающее запрашивающему клиенту, сохраняет ли серверный элемент управления состояние представления и состояние представления своих дочерних элементов управления.

(Унаследовано от Control)
Events

Возвращает список делегатов обработчиков событий элемента управления. Это свойство доступно только для чтения.

(Унаследовано от Control)
Font

Возвращает свойства шрифта для текста, связанного с элементом управления.

ForeColor

Возвращает или задает основной цвет (обычно это цвет текста) для серверного веб-элемента управления.

(Унаследовано от WebControl)
GenerateEmptyAlternateText

Возвращает или задает значение, позволяющее определить, создает ли элемент управления атрибут альтернативного текста для пустого строкового значения.

HasAttributes

Получает значение, определяющие наличие атрибутов у элемента управления.

(Унаследовано от WebControl)
HasChildViewState

Возвращает значение, которое указывает на наличие сохраненных параметров состояния представления у дочернего элемента серверного элемента управления.

(Унаследовано от Control)
Height

Получает или задает высоту серверного веб-элемента управления.

(Унаследовано от WebControl)
ID

Возвращает или задает программный идентификатор, назначенный серверному элементу управления.

(Унаследовано от Control)
IdSeparator

Возвращает символ, используемый для разделения идентификаторов элементов управления.

(Унаследовано от Control)
ImageAlign

Получает или задает выравнивание элемента управления Image относительно других элементов на веб-странице.

ImageUrl

Получает или задает URL-адрес, который является путем к изображению, отображаемому элементом управления Image.

IsChildControlStateCleared

Возвращает значение, указывающее, имеют ли элементы управления в этом элементе управления состояние элемента управления.

(Унаследовано от Control)
IsEnabled

Возвращает значение, определяющее, включен ли элемент управления.

(Унаследовано от WebControl)
IsTrackingViewState

Возвращает значение, отражающее сохранение изменений в состояние представления серверного элемента управления.

(Унаследовано от Control)
IsViewStateEnabled

Возвращает значение, указывающее, используется ли состояние представления для этого элемента управления.

(Унаследовано от Control)
LoadViewStateByID

Возвращает значение, указывающее, участвует ли элемент управления в загрузке состояния представления ID вместо индекса.

(Унаследовано от Control)
NamingContainer

Возвращает ссылку на контейнер именования элемента управления, создающий уникальное пространство имен для различения серверных элементов управления с одинаковыми значениями свойства ID.

(Унаследовано от Control)
Page

Возвращает ссылку на экземпляр Page, содержащий серверный элемент управления.

(Унаследовано от Control)
Parent

Возвращает ссылку на родительский элемент управления серверного элемента управления в иерархии элементов управления страницы.

(Унаследовано от Control)
RenderingCompatibility

Возвращает значение, которое задает версию ASP.NET, с которой совместим созданный HTML.

(Унаследовано от Control)
Site

Возвращает сведения о контейнере, который содержит текущий элемент управления при визуализации на поверхности конструктора.

(Унаследовано от Control)
SkinID

Возвращает или задает обложку, применяемую к элементу управления.

(Унаследовано от WebControl)
Style

Возвращает коллекцию атрибутов текста, которые будут отображены в виде атрибута стиля на внешнем теге серверного веб-элемента управления.

(Унаследовано от WebControl)
SupportsDisabledAttribute

Получает значение, указывающее, должен ли элемент управления устанавливать для атрибута disabled отрисовываемого элемента HTML значение disabled, если для свойства элемента управления IsEnabled задано значение false.

SupportsDisabledAttribute

Получает значение, указывающее, должен ли элемент управления устанавливать для атрибута disabled отрисовываемого элемента HTML значение disabled, если для свойства элемента управления IsEnabled задано значение false.

(Унаследовано от WebControl)
TabIndex

Возвращает или задает индекс перехода по клавише Tab для серверного веб-элемента управления.

(Унаследовано от WebControl)
TagKey

Возвращает значение HtmlTextWriterTag, которое соответствует этому элементу управления веб-сервера. Это свойство используется преимущественно разработчиками элементов управления.

(Унаследовано от WebControl)
TagName

Возвращает имя тега элемента управления. Это свойство используется преимущественно разработчиками элементов управления.

(Унаследовано от WebControl)
TemplateControl

Возвращает или задает ссылку на шаблон, содержащий этот элемент управления.

(Унаследовано от Control)
TemplateSourceDirectory

Возвращает виртуальный каталог Page или UserControl, содержащий текущий серверный элемент управления.

(Унаследовано от Control)
ToolTip

Возвращает или задает текст, который отображается при наведении указателя мыши на серверный веб-элемент управления.

(Унаследовано от WebControl)
UniqueID

Возвращает уникальный идентификатор серверного элемента управления в иерархии.

(Унаследовано от Control)
ValidateRequestMode

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

(Унаследовано от Control)
ViewState

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

(Унаследовано от Control)
ViewStateIgnoresCase

Возвращает значение, указывающее, является ли объект StateBag нечувствительным к регистру.

(Унаследовано от Control)
ViewStateMode

Возвращает или задает режим состояния представления данного элемента управления.

(Унаследовано от Control)
Visible

Получает или задает значение, указывающее, отрисовывается ли серверный элемент управления как пользовательский интерфейс на странице.

(Унаследовано от Control)
Width

Получает или задает ширину серверного веб-элемента управления.

(Унаследовано от WebControl)
AddAttributesToRender(HtmlTextWriter)

Добавляет атрибуты элемента управления Image в поток вывода для отрисовки на клиентском компьютере.

AddedControl(Control, Int32)

Вызывается после добавления дочернего элемента управления в коллекцию Controls объекта Control.

(Унаследовано от Control)
AddParsedSubObject(Object)

Уведомляет серверный элемент управления, что элемент XML или HTML был проанализирован, и добавляет элемент в серверный элемент управления объекта ControlCollection.

(Унаследовано от Control)
ApplyStyle(Style)

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

(Унаследовано от WebControl)
ApplyStyleSheetSkin(Page)

Применяет свойства стиля, определенные в таблице стилей страницы, к элементу управления.

(Унаследовано от Control)
BeginRenderTracing(TextWriter, Object)

Запускает трассировку во время разработки данных отрисовки.

(Унаследовано от Control)
BuildProfileTree(String, Boolean)

Собирает сведения о серверном элементе управления и доставляет их свойству Trace, которое отображается при включенной на странице трассировке.

(Унаследовано от Control)
ClearCachedClientID()

Задает для кэшированного свойства ClientID значение null.

(Унаследовано от Control)
ClearChildControlState()

Удаляет сведения о состоянии элемента управления для дочерних элементов управления серверного элемента управления.

(Унаследовано от Control)
ClearChildState()

Удаляет сведения о состоянии элемента управления и состоянии представления для всех дочерних элементов серверного элемента управления.

(Унаследовано от Control)
ClearChildViewState()

Удаляет сведения о состоянии представления для всех дочерних элементов серверного элемента управления.

(Унаследовано от Control)
ClearEffectiveClientIDMode()

Задает для свойства ClientIDMode текущего экземпляра элемента управления и любых его дочерних элементов управления значение Inherit.

(Унаследовано от Control)
CopyBaseAttributes(WebControl)

Копирует не инкапсулированные объектом Style свойства из указанного серверного веб-элемента управления веб-сервера в элемент управления веб-сервера, откуда вызывается этот метод. Этот метод используется в основном разработчиками элементов управления.

(Унаследовано от WebControl)
CreateChildControls()

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

(Унаследовано от Control)
CreateControlCollection()

Создает новый объект ControlCollection для хранения дочерних элементов управления (литеральных и серверных) серверного элемента управления.

(Унаследовано от Control)
CreateControlStyle()

Создает объект стиля, который используется внутри класса WebControl для реализации всех относящихся к стилю свойств. Этот метод используется в основном разработчиками элементов управления.

(Унаследовано от WebControl)
DataBind()

Привязывает источник данных к вызываемому серверному элементу управления и всем его дочерним элементам управления.

(Унаследовано от Control)
DataBind(Boolean)

Привязывает источник данных к вызванному серверному элементу управления и всем его дочерними элементами управления с возможностью вызова события DataBinding.

(Унаследовано от Control)
DataBindChildren()

Привязывает источник данных к дочерним элементам управления серверного элемента управления.

(Унаследовано от Control)
Dispose()

Включает серверный элемент управления для выполнения окончательной чистки до освобождения памяти.

(Унаследовано от Control)
EndRenderTracing(TextWriter, Object)

Завершает трассировку во время разработки данных отрисовки.

(Унаследовано от Control)
EnsureChildControls()

Определяет наличие у серверного элемента управления дочерних элементов управления. Если дочерних элементов управления нет, они будут созданы.

(Унаследовано от Control)
EnsureID()

Создает идентификатор для элементов управления, которые не имеют назначенного идентификатора.

(Унаследовано от Control)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
FindControl(String)

Выполняет поиск серверного элемента управления с заданным параметром id в текущем контейнере именования.

(Унаследовано от Control)
FindControl(String, Int32)

Выполняет поиск в текущем контейнере именования серверного элемента управления с указанным id и целым числом, указанным в параметре pathOffset, который содействует поиску. Эту версию метода FindControl не следует переопределять.

(Унаследовано от Control)
Focus()

Задает фокус ввода на элемент управления.

(Унаследовано от Control)
GetDesignModeState()

Возвращает данные времени разработки для элемента управления.

(Унаследовано от Control)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetRouteUrl(Object)

Возвращает URL-адрес, соответствующий набору параметров маршрута.

(Унаследовано от Control)
GetRouteUrl(RouteValueDictionary)

Возвращает URL-адрес, соответствующий набору параметров маршрута.

(Унаследовано от Control)
GetRouteUrl(String, Object)

Возвращает URL-адрес, соответствующий набору параметров маршрута и имени маршрута.

(Унаследовано от Control)
GetRouteUrl(String, RouteValueDictionary)

Возвращает URL-адрес, соответствующий набору параметров маршрута и имени маршрута.

(Унаследовано от Control)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
GetUniqueIDRelativeTo(Control)

Возвращает часть с префиксом свойства UniqueID указанного элемента управления.

(Унаследовано от Control)
HasControls()

Определяет наличие у серверного элемента управления дочерних элементов управления.

(Унаследовано от Control)
HasEvents()

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

(Унаследовано от Control)
IsLiteralContent()

Определяет наличие у серверного элемента управления только текстового содержимого.

(Унаследовано от Control)
LoadControlState(Object)

Восстанавливает сведения о состоянии элемента управления предыдущего запроса страницы, сохраненные методом SaveControlState().

(Унаследовано от Control)
LoadViewState(Object)

Восстанавливает сведения о состоянии просмотра из предыдущего запроса, сохраненного с помощью метода SaveViewState().

(Унаследовано от WebControl)
MapPathSecure(String)

Извлекает физический путь, к которому ведет виртуальный путь (абсолютный или относительный).

(Унаследовано от Control)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
MergeStyle(Style)

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

(Унаследовано от WebControl)
OnBubbleEvent(Object, EventArgs)

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

(Унаследовано от Control)
OnDataBinding(EventArgs)

Вызывает событие DataBinding.

(Унаследовано от Control)
OnInit(EventArgs)

Вызывает событие Init.

(Унаследовано от Control)
OnLoad(EventArgs)

Вызывает событие Load.

(Унаследовано от Control)
OnPreRender(EventArgs)

Вызывает событие PreRender.

(Унаследовано от Control)
OnUnload(EventArgs)

Вызывает событие Unload.

(Унаследовано от Control)
OpenFile(String)

Возвращает Stream, используемое для чтения файла.

(Унаследовано от Control)
RaiseBubbleEvent(Object, EventArgs)

Присваивает родительскому элементу управления все источники события и сведения о них.

(Унаследовано от Control)
RemovedControl(Control)

Вызывается после удаления дочернего элемента управления из коллекции Controls объекта Control.

(Унаследовано от Control)
Render(HtmlTextWriter)

Выполняет визуализацию элемента управления в указанный модуль записи HTML.

(Унаследовано от WebControl)
RenderBeginTag(HtmlTextWriter)

Выводит открывающий HTML-тег элемента управления в указанное средство записи. Этот метод используется в основном разработчиками элементов управления.

(Унаследовано от WebControl)
RenderChildren(HtmlTextWriter)

Выводит содержимое дочерних элементов серверного элемента управления в предоставленный объект HtmlTextWriter, который записывает это содержимое для подготовки к просмотру на клиенте.

(Унаследовано от Control)
RenderContents(HtmlTextWriter)

Преобразует содержимое элемента управления изображением для просмотра в указанном средстве записи.

RenderControl(HtmlTextWriter)

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

(Унаследовано от Control)
RenderControl(HtmlTextWriter, ControlAdapter)

Выводит серверный элемент управления в указанный объект HtmlTextWriter, используя указанный объект ControlAdapter.

(Унаследовано от Control)
RenderEndTag(HtmlTextWriter)

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

(Унаследовано от WebControl)
ResolveAdapter()

Возвращает адаптер элемента управления, отвечающий за отрисовку определенного элемента управления.

(Унаследовано от Control)
ResolveClientUrl(String)

Возвращает URL-адрес, который может использоваться браузером.

(Унаследовано от Control)
ResolveUrl(String)

Преобразует URL-адрес в адрес, доступный для клиента.

(Унаследовано от Control)
SaveControlState()

Сохраняет любые изменения состояния серверного элемента управления, произошедшие после отправки страницы обратно на сервер.

(Унаследовано от Control)
SaveViewState()

Сохраняет любое состояние, которое было изменено после вызова метода TrackViewState().

(Унаследовано от WebControl)
SetDesignModeState(IDictionary)

Задает данные времени разработки для элемента управления.

(Унаследовано от Control)
SetRenderMethodDelegate(RenderMethod)

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

(Унаследовано от Control)
SetTraceData(Object, Object)

Задает данные трассировки для трассировки данных отрисовки во время разработки, используя ключ данных трассировки и значение данных трассировки.

(Унаследовано от Control)
SetTraceData(Object, Object, Object)

Задает данные трассировки для трассировки данных отрисовки во время разработки, используя трассируемый объект, ключ данных трассировки и значение данных трассировки.

(Унаследовано от Control)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TrackViewState()

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

(Унаследовано от WebControl)
DataBinding

Происходит при привязке серверного элемента управления к источнику данных.

(Унаследовано от Control)
Disposed

Происходит при освобождении памяти, занятой серверным элементом управления, т.е. на последнем этапе жизненного цикла серверного элемента управления при запросе страницы ASP.NET.

(Унаследовано от Control)
Init

Происходит при инициализации серверного элемента управления, который находится на первом этапе его жизненного цикла.

(Унаследовано от Control)
Load

Происходит при загрузке серверного элемента управления в объект Page.

(Унаследовано от Control)
PreRender

Происходит после загрузки объекта Control, но перед отрисовкой.

(Унаследовано от Control)
Unload

Происходит при выгрузке серверного элемента управления из памяти.

(Унаследовано от Control)
FindDataSourceControl(Control)

Возвращает источник данных, связанный с элементом управления данными, для заданного элемента управления.

FindFieldTemplate(Control, String)

Возвращает шаблон поля для заданного столбца в контейнере именования заданного элемента управления.

FindMetaTable(Control)

Возвращает объект метатаблицы для контейнерного элемента управления данными.

Оптимизация картинок в Web — Highload.today

Картинки могут занимать до 90% от общего объема данных на странице. Их правильная оптимизация может значительно повлиять на скорость работы сайта.

Как оптимизировать картинки?

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

Форматы

Правильный выбор формата изображений позволит получить хорошее качество изображения при минимальном размере. Вам стоит использовать JPEG для фотографий и PNG для иконок.

[ad]

Инструменты

Инструментарий по оптимизации картинок направлен на lossless сжатие, т.к. сжатие без потери качества. Вы также можете регулировать уровень сжатия для разных форматов самостоятельно, чтобы получить еще большую выгоду.

imagemagick

Современные камеры обычно записывают в JPEG фотки кучу метаданных (геолокацию, превью и т.п.). Если их вырезать, можно иногда сэкономить несколько десятков килобайт. Convert от imagemagick содержит полезный параметр “-strip” для вырезания всех ненужных метаданных из JPEG изображения:

convert test.jpg -resize 100x100 **-strip** test_100.jpg

Jpegtran

Jpegtran позволяет вырезать метаданные и провести lossless оптимизацию JPEG:

jpegtran -copy none -optimize -outfile min.image.jpg image.jpg

## сохранит оптимизированную копию в min.image.jpg

Jpegoptim

Еще одна полезная утилита jpegoptim для оптимизации JPEG:

jpegoptim file.jpg

## Оптимизирует файл и сохранит его в самого себя

Optipng

Инструмент для оптимизации PNG картинок optipng работает так:

optipng test.png

## Оптимизирует файл и сохранит его в самого себя

Pngcrush

Pngcrush работает так:

pngcrush -reduce -brute in.png out.png

## Оптимизирует in.png и запишет результат в out.png

Самое важное

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

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

Подготовка изображений для WEB в PhotoShop

На первый взгляд в публикации фотографий нет ничего сложного – достаточно отсканировать ее и вставить на WEB-страничку. Но это лишь кажущаяся простота. Для того чтобы фотография или картинка из журнала выглядела привлекательно на вашей страничке и одновременно с этим не заставляла пользователя слишком долго ждать своего появления при невысокой скорости соединения, необходимо предпринять некоторые усилия.
Начнем с обычных фотографий.
Во-первых, если фотографии еще не напечатаны, и Вы только что подошли к окошку Kodak Express, обязательно заказывайте печать на ГЛЯНЦЕВОЙ бумаге, иначе при сканировании матового отпечатка получите нерезкое и «грязное» изображение. Все дело в том, что поверхность матового отпечатка похожа на сильно уменьшенную поверхность бушующего моря, а яркость лампы сканера значительно превышает яркость дневного света даже в том случае, если рассматривать отпечаток, стоя на экваторе в период летнего солнцестояния :). Поэтому при освещении снимка лампой сканера неровная поверхность фотографии начинает сильно «бликовать», что при сканировании вылезает как «белый шум». В результате отсканированное изображение будет казаться нерезким и пыльным что, к сожалению, не скорректировать никакими фильтрами.

Наконец Вы положили фотографию на стекло сканера и пытаетесь задать настройки сканирования.
Все WEB-изображения имеют разрешение 72 dpi. Но это совсем не означает, что в параметрах сканирования нужно ставить это число. Правильнее отталкиваться от размеров окончательной картинки в пикселях. Проще всего объяснить на примере. Допустим, у нас есть фотография 10×15 см. Нам надо вставит эту фотографию в ячейку таблицы, имеющую ширину 400 пикселей. Для начала, пересчитаем размер фотографии в дюймы, поделив ширину и высоту на 2.54. Получим 3.94×5.91 дюйма. Сейчас нас очень заинтересовала ширина. В окончательном варианте она должна будет составить 400 пикселей. Вот теперь можно высчитать разрешение сканирования, поделив так необходимые нам 400 пикселей на нашу ширину – 3.94 дюйма. Получаем 102 dpi. На самом деле, конечно, никто так не считает – этот расчет приведен лишь для наглядности и предотвращения некоторых заблуждений начинающих web-дизайнеров. На практике сканирование производится с заведомым запасом – в данном случае «на глаз» ставится 150 dpi, а потом в PhotoShop производится масштабирование до 400 пикселей. Теоретически, качество пересчитанного изображения должно быть хуже отсканированного «в размер», практически же это отличие незаметно.
Если фотография слишком темная, или наоборот – слишком светлая, настоятельно не рекомендую прибегать к регулировкам яркости и контрастности. Так как контроль этих регулировок производится чисто визуально, то очень легко «завалить» фотографию, т.е. «срезать» самые светлые и самые темные тона. Эти регулировки лучше использовать при создании эффектов для коллажей. Для «осветления» или «затемнения» изображения больше подходит инструмент «Levels» (рис.1).

Рис.1

Движки (1) и (3) подгоняются, соответственно, к началу и концу гистограммы, движком (2) регулируется насыщенность изображения. Здесь же можно скорректировать т.н. «черную точку», «серую точку» «белую точку», выбрав соответствующую пипетку (4) и пометив прямо на изображении места, где по-вашему мнению должны быть соответствующие тона. Причем, средней пипеткой можно выбрать любое по насыщенности место, в котором R,G и B составляющие цвета должны быть равны. PhotoShop при этом автоматически произведет цветокоррекцию всего изображения. Следующим этапом желательно сделать эффект «Filter — Sharpen — Unsharp Mask». Для визуального контроля изображения в процессе регулировок фильтра установите масштаб просмотра «Actual pixels», т.к. в увеличенном масштабе эффект может не понравиться :). «Unsharp Mask» не рекомендую применять, если фотография сильно запылена. Результат будет ужасен. C пылью можно попытаться расправиться с помощью эффекта «Noise – Ddust & Scratches». Главное в этом деле – не перестараться.

Здесь можно дать дополнения, которые касаются подготовки изображений из журналов. Журналы печатаются т.н. офсетным способом, поэтому изображение в журнале состоит из большого числа маленьких точек 4-х основных цветов модели CMYK: Cyan, Magenta, Yellow, blacK (цвет black обозначен по последней букве, чтобы не путать его с Blue из модели RGB). Это вносит в обработку ряд дополнительных трудностей. Первым делом нужно избавиться от растра. Хорошо зарекомендовал себя следующий способ:

Изображение сканируется с разрешением 600 dpi без применения фильтров сканера. Во многих сканерах присутствует опция «Descreen», но в большинстве случаев она работает просто отвратительно, особенно в сканерах класса SOHO. Поэтому ее не используем.
Полученное изображение увеличиваем лупой до такой степени, чтобы были видны офсетные точки, но в то же время просматривался достаточный фрагмент изображения.
Вызываем эффект «Blur – Gaussian Blur» и движком устанавливаем такую величину, при которой офсетные точки сольются и станут неразличимы.
Делаем «Image — Size» изображения до нужной нам величины.
Дальше – действия такие же, как и с фото, начиная с эффекта «Filter — Sharpen — Unsharp Mask». Стоит отметить, что иногда, особенно при сканировании некачественных публикаций, после попытки размытия офсетных точек эффектом «Blur – Gaussian Blur» на изображении остаются частые параллельные линии или «сетка», которые очень портят вид. В этом случае можно посоветовать положить картинку в сканер под углом, примерно 45? и сразу после сканирования повернуть изображение в PhotoShop в нормальное положение. Дальше – все как описано выше с пункта 2.
Вот теперь все готово для создания окончательного файла. Не стоит торопиться нажимать Ctrl+S, можно поступить более мудро — Ctrl+Alt+Shift+S (жутковато выглядит, не правда ли?). Если указательный палец правой руки при нажатии первых двух кнопок интуитивно тянется к Del, то Вам больше подойдет прогулка по меню File – Save for Web. Здесь все очень наглядно и в пояснениях почти не нуждается. Переходим на закладку 2-Up или 4-Up (кому как удобнее) и, визуально контролируя конечный результат, выбираем формат и параметры при которых наивысшее качество картинки соответствует наименьшему размеру файла. Единственно что я бы не рекомендовал делать в этом окне, так это изменять размеры изображения. Загонять картинку «в размер» лучше на первоначальном этапе, потому что пересчет пикселей может свести на нет все ваши героические усилия. Будет лучше, если фильтр «Filter — Sharpen — Unsharp Mask» будет последней садистской процедурой перед сохранением файла на диск. 🙂

Подготовка фотографий для web. — Sergey Brezhnev — LiveJournal

Сегодня поговорим о том, как я подготавливаю картинки для публикации в интернете.

Когда ко мне поступают заказы на обработку, то я отдаю фото в полном размере и не парюсь над веб размером — заказчик всё сделает сам, если ему нужно. А если это заказ на съёмку (а мы с Алиной бывает берём совместные заказы), тогда готовый материал заказчику уходит полноразмерным и в размере для веба. И бывали случаи, когда заказчик спрашивает, а почему полноразмеры более мутные? Вопрос тут немного некорректный. Правильнее было бы сказать, что это размер для веба более резкий. Так и должно быть, размер для веба должен смотреться выигрышнее, т.к. большинство клиентов будут смотреть ваши работы именно в интернете и именно в небольшом размере. Не нужно забывать, что просматривая полноразмерное фото, ваш просмотрщик масштабирует его под размер экрана и делает он это по каким-то своим алгоритмам. И в 99% случаев полноразмерное фото, масштабированное до размеров экрана, будет выглядеть более мутно, нежели его увеличить до масштаба 1:1. Отсюда идёт псевдо-размытость, которой на самом деле нет. Это как с лесенками в фотошопе при разном масштабе… но сейчас не об этом.

Для себя я определил оптимальным размер картинок для веба следующий: 1200px по горизонтали и 900px по вертикали.

Посмотрим, как выглядит полноразмер (масштабированный) и размер для веба (1:1) рядом.

(Фото кликабельно. Лучше посмотреть его в полном размере в новой вкладке. Так будет лучше видна разница)

Разница хорошо видна на листьях дерева, на волосах, платье, букете.

У этого фото я просто изменил размер и не шарпил совсем. Размер изменил Ctrl+Atl+I, выставил 900 px по вертикали и готово.

Пробуя несколько вариантов уменьшения (в 1 раз или в несколько раз поэтапно и т.д.), я пришёл к тому, что лучшее враг хорошего. И в 80% случаев, если картинка изначально хорошая, резкая, то никакого шарпа после однократного уменьшения не требуется совсем. Картинка и так за счёт уменьшения становится визуально более резкой, чем полноразмер. Этого хватает с головой.

Но в оставшихся 20% я всё же добавляю резкость уже на уменьшенную копию. Тут у меня 2 варианта. Первый — шарплю всю картинку и потом ластиком примерно на 50% стираю перешарпленные места (обычно это границы переходов яркостей, т.е. контуры объектов). И второй вариант, если картинка в целом нормальная, но мне нужно что-то отдельно подчеркнуть, то шарплю только требуемый участок.

Рассмотрим ещё одно фото. Изначально оно достаточно резкое (6630px по длинной стороне), при 100% видна везде фактура. Но при уменьшении до 1200px по горизонтали детали читаются не так сочно. Поэтому надо пошарпить.

(Gif-ка кликабельна)

Я не заморачиваюсь с настройками резкости для веб-размера, а делаю дубликат слоя (после изменения размера) и применяю к нему самую простую резкость Filter/Sharpen/Sharpen (Фильтр/Резкость/Резкость). А дальше смотрю на результат. Если кажется, что резкости много, то уменьшаю прозрачность слоя. Если кажется, что только в определённых местах слишком резко (в основном контуры), то протираю ластиком именно в тех местах. Если всё сразу хорошо, то сохраняю. В данной гифке у меня копия слоя на 100% и в паре мест протёр ластиком, где показалось, что контуры слишком резкие.

(Кстати, это фото салона Тигуана, который обрабатывал я. Есть еще несколько фото машины полностью, но напишу в блог об этом чуть позже).

Стоит заметить, что я говорю именно о добавлении резкости для картинок в веб-размере, а не полноразмерных. Для полноразмерных я использую несколько способов добавления резкости. Это Sharpen (Резкость), Unsharp mask (Контурная резкость), Smart sharpen (Умная резкость) и изредка High pass (Цветовой контраст). Для разных случаев разный, но в большинстве случаев просто по настроению. Не считаю, что стоит уж очень сильно заморачиваться по этому поводу.

И, конечно же, не забывайте, чтобы цветовой профиль фотографий был sRgb. Иначе могут возникнуть проблемы с отображением цвета.

Всем мир!

Группа вк: vk.com/sergretouch
Биханс: www.behance.net/sergretouch
Инстаграм: http://instagram.com/sergey_brezhnev
Ютуб: http://www.youtube.com/user/sergbrezhnev
Facebook: https://www.facebook.com/sergey.brezhnev.7

11 советов по созданию волшебных картинок

Если вы хотите сделать красивую фотографию паутины, вы попали в нужное место.

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

Звук хороший? Давайте нырнем!

1. Стрелять в неподвижный день

Паутина

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

Это вызывает три основных проблемы:

  1. Если вы используете длинную выдержку (что часто необходимо при съемке с близкого расстояния, особенно ранним утром и поздним днем), движущаяся паутина создаст размытость при движении.
  2. Если вы фокусируетесь при большом увеличении (например,g., вы используете макрообъектив), тогда вам будет сложно заблокировать фокус.
  3. Любое движение стряхнет влагу и может даже порвать ткань.

Таким образом, вы должны позаботиться о том, чтобы стрелять только в самые тихие дни. Проверьте свой местный прогноз погоды и стремитесь к скорости ветра 5 миль в час или меньше. Также поищите ранним утром паутину; сразу после восхода солнца обычно дует небольшой ветерок, а свет часто бывает красивым и золотистым.

2. Сфокусируйтесь вручную (используйте объектив с максимальным увеличением)

Паутина

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

К сожалению, чем ближе вы подходите, тем хуже становится система автофокусировки вашей камеры. Поэтому, когда вы приближаетесь к паутине, ваш объектив начинает рыскать взад и вперед — и он может не найти полностью фокус.

Вот тут и приходит на помощь ручная фокусировка; он позволяет получать резкие фотографии, регулируя кольцо фокусировки на оправе объектива. Обратите внимание, что для ручной фокусировки обычно нужно щелкнуть переключателем на боковой стороне объектива или камеры (это часто обозначается как AF / M ).

Между прочим, все объективы имеют максимальное увеличение, то есть уровень детализации, который вы получаете при фокусировке близко к объекту. Если вам нужны великолепные изображения с большим увеличением, вам нужен объектив, способный выполнять фокусировку с большим увеличением. Лучшими лупами являются макрообъективы, но ничего страшного, если у вас нет одной из них. Просто ознакомьтесь со спецификациями всех имеющихся у вас объективов и определите, какой из них обеспечивает максимальное увеличение.

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

3. Будьте экологически чистым фотографом

Помните: там, где есть паутина, есть маленькое (или не такое уж маленькое!) Существо, которое ее сотворило.

Так что будьте осторожны, не прикасайтесь к паутине, с которой сталкиваетесь, и не трогайте иным образом. У вас может возникнуть соблазн переместить паутину пальцем, но сопротивляйтесь этому желанию; Вместо этого, если вам не нравится то, как выглядит сеть, попробуйте подойти очень близко с макрообъективом для абстрактной композиции или изменить перспективу для получения другого результата.

4. Найдите простой фон, который выделяет Интернет

Новички часто не думают о фоне своих изображений паутины, но фон невероятно важен.

Хороший фон улучшает изображение, а плохой фон вредит (и часто портит) конечный результат.

Но что считается хорошим фоном? Для паутины я рекомендую однотонный, желательно темный фон. При правильном освещении темный фон выделит полупрозрачную паутину, создавая великолепную, привлекательную фотографию:

По крайней мере, убедитесь, что фон не отвлекает.Сведите к минимуму количество цветов и стремитесь к большому разделению объекта и фона.

5. Тщательно выбирайте диафрагму (и глубину резкости)

Фотография паутины — это акцентирование внимания на вашем основном объекте — паутине — при этом фон остается ненавязчивым и (в идеале) дополнительным.

А один из самых простых способов выделить ваш основной объект и уменьшить фон? Увеличьте диафрагму, чтобы создать красивое размытие фона.

(Обратите внимание на то, что фотографии паутины в этой статье имеют гладкий, размытый фон? Это сделано специально!)

При большом увеличении и при хорошем разделении объекта и фона (т.е.е., фон находится на расстоянии более нескольких дюймов от объекта), вы можете добиться размытого фона в диапазоне от f / 1,4 до f / 5,6 или около того. Но если вы уменьшите масштаб, чтобы получить более естественное изображение, вам нужно будет сделать диафрагму как можно меньше (f / 2,8 — отличная отправная точка).

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

6. Стрелять в лоб

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

Это позволит вам держать в фокусе всю паутину, так как расстояние от вашего объектива до всех частей объекта будет одинаковым — предотвращая эффект малой глубины резкости (обсужденный выше) от размытия части паутины.

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

7. Не забудьте штатив (или снимайте с короткой выдержкой)

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

Итак, у вас есть два варианта:

  1. Вы можете взять с собой в поле штатив, который обеспечит устойчивость вашей камеры даже при низкой выдержке. У этого есть несколько недостатков: во-первых, прочные штативы могут быть дорогими, к тому же они могут быть громоздкими, а при длинной выдержке вам понадобится действительно неподвижный объект.
  2. Можно снимать с рук и использовать короткую выдержку. Здесь вам нужно поддерживать скорость выше 1/125 с или около того (и, возможно, выше 1/160 или 1/200 с, в зависимости от уровня увеличения и устойчивости ваших рук).

Какой метод лучше? Это действительно зависит от ваших предпочтений и стиля съемки. Некоторым фотографам нравится медленная, преднамеренная съемка со штатива, в то время как другим нравится гибкость удержания в руках. Однако, если вы планируете снимать при слабом освещении, вам, вероятно, придется использовать штатив, если только ваша камера не способна снимать с низким уровнем шума при высоких значениях ISO.

8. Ищите паутину с росой

Многие классические фотографии паутины включают капли росы или дождя, например:

Как видите, роса выглядит красиво, к тому же она создает интересные эффекты боке в областях, не находящихся в фокусе.

Я упоминал выше, что лучшее время дня для влажной паутины — утро, хотя вы также можете выйти на улицу после ливня (если, конечно, не ветрено!).

9. Заливка рамы

Вот простой совет по композиции:

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

И если у вас есть макрообъектив, обязательно используйте его; это позволит вам заполнить рамку намного проще!

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

Кроме того, потратьте время на эксперименты с разными углами (и проверьте также разные значения диафрагмы для получения абстрактных эффектов глубины резкости!).

10. Сфотографируйте паутину с обеих сторон

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

Например, на изображении ниже изображена утренняя роса на фоне красивого восходящего солнца. Это было бы невозможно с другой стороны сети!

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

11. Экспериментируйте со вспышкой

Вот ваш последний совет по фотографии паутины:

Используйте вспышку в полевых условиях для получения интересных изображений.

Лично я считаю, что лучше всего получается съемка при естественном освещении. Но иногда добавление искусственного света с помощью вспышки может красиво осветить сеть и создать хорошие блики.Это может быть особенно эффективно при слабом освещении; вспышка сохранит резкость изображения (высокое значение ISO не требуется!).

Если вы все же берете вспышку, подумайте о кольцевой вспышке (которая устанавливается на переднюю часть вашего объектива и равномерно освещает объект). У вас также есть возможность использовать выносную вспышку, которую вы можете держать в одной руке во время съемки другой (или вы можете держать камеру, устанавливая камеру на штатив).

Итог: получайте удовольствие от вспышки и не бойтесь экспериментировать!

Фотография паутины: заключительные слова

Надеюсь, теперь вы готовы сделать несколько красивых фотографий в паутине.Так что запомните эти советы, возьмите камеру (и объектив с близкой фокусировкой) и выходите на улицу!

Теперь к вам:

Какой из этих советов по фотографии паутины вам больше всего нравится? Планируете ли вы в ближайшее время выйти и пристрелить пауков? Поделитесь своими мыслями в комментариях ниже!

Как эффективно использовать изображения на веб-сайтах

Многие веб-профессионалы проповедуют важность включения изображений в дизайн и содержание веб-сайта.

Визуальная привлекательность важна.

Однако вы не можете просто использовать любое изображение и ожидать, что оно сотворит чудеса.

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

Целенаправленное использование изображений

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

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

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

Посмотрите, как фотография справа на веб-странице ниже была полностью проигнорирована:

Фотография справа на веб-странице, откровенный снимок с сидящими студентами колледжа, не дает вам информации о том, как поступить в Йельскую школу менеджмента, о чем и посвящена веб-страница.

Таким образом, пользователи сайта, которые искали информацию о процессе поступления в школу, не нашли использования фотографии.

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

Nielsen заключил: «Пользователи уделяют пристальное внимание фотографиям и другим изображениям, которые содержат релевантную информацию, но игнорируют пушистые картинки, используемые для оживления веб-страниц».

Итак, как мы можем определить, полезно изображение или нет?

Задайте себе следующие вопросы, чтобы определить, является ли фотография, которую вы собираетесь использовать на своем веб-сайте, подходящей и целевой:

  • Есть ли у какие-либо преимущества от использования этого конкретного изображения? Например, хорошо ли он демонстрирует мой продукт или услугу?
  • Помогает ли пользователю понять суть, которую я пытаюсь донести?
  • Создает ли этот образ эмоциональную привлекательность? Например, помогает ли покупателю представить себя с помощью продукта, изображенного на фотографии?
  • Как это изображение относится к моему бренду? Говорит ли это моей целевой аудитории?
  • Какое сообщение отправляет это изображение? Сообщение вообще отправляется?
  • Как мои посетители отреагируют на это изображение ? Изменит ли это их мнение? Например, поможет ли это облегчить процесс покупки?

Используйте фотографии реальных людей

Исследования показывают, что веб-дизайн, в котором участвуют люди, более убедителен, чем дизайн без него.

Взгляните на результаты исследования A / B-тестирования, проведенного компанией 37signals, занимающейся веб-приложениями.

Они увидели на 102,5% рост регистраций только потому, что они добавили изображение улыбающегося счастливого человека на целевую страницу одного из своих веб-приложений!

Укажите на очевидное

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

Джеймс Бриз, специалист по юзабилити, провел исследование по отслеживанию взглядов, которое показало, что объект фотографии может определять фиксацию взгляда пользователя на веб-странице.

В частности, Бриз обнаружил, что люди сосредотачиваются на глазах объекта на фотографии. Когда объект фотографии обращен вперед, к зрителю, зритель редко связывает модель с содержанием веб-страницы:

Однако, когда объект смотрит прямо на продукт или текст, глаза зрителей следуют в направлении:

Использование направления взгляда — не единственная тактика.

Иногда изображения должны просто указывать на очевидное.

Например, посмотрите, как Karma Wi-Fi использует тему фотографии, чтобы указать пользователям на текст и рекламируемый продукт.

Моя авторская фотография — еще один отличный пример указания на очевидное. Зачем использовать общий выстрел в голову, если вы можете указать пользователям в том направлении, в котором они должны смотреть?

Используйте изображения для иллюстрации концепций

Иногда картинка действительно стоит тысячи слов.

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

В то время как изображения-заполнители не имеют никакого смысла в мире юзабилити, изображения, иллюстрирующие концепцию, имеют огромную ценность.

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

Оптимизируйте размер файлов изображений

Средний размер веб-страницы составляет 1,28 МБ. 61,5% из них приходится на изображения.

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

Существуют различные бесплатные приложения, которые помогут вам оптимизировать размер файлов ваших изображений. Вот некоторые из них:

Прощальное слово

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

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

Вставка изображения в Excel в Интернете

Вставка изображения на рабочий лист — это простой способ показать информацию или добавить визуальный интерес. Добавить изображение в Excel в Интернете можно тремя способами.

Совет: Чтобы добавить изображения в Excel в Интернете, вам может потребоваться сначала переключиться в режим редактирования , щелкнув Редактировать книгу > Редактировать в браузере .

Вставить изображение с вашего компьютера

Чтобы вставить изображение, сохраненное в доступном для вас месте, выполните следующие действия:

  1. Щелкните место на листе, куда вы хотите вставить рисунок.

  2. На ленте «Вставка» щелкните «Рисунки».

  3. Выбрать это устройство…

  4. Найдите изображение, которое хотите вставить, выберите его и нажмите «Открыть».

Изображение будет вставлено в ваш рабочий лист.

Вставить изображение из стоковых изображений

Чтобы вставить картинку из коллекции стоковых изображений, выполните следующие действия:

  1. Щелкните место на листе, куда вы хотите вставить рисунок.

  2. На ленте «Вставка» щелкните «Рисунки».

  3. Выбрать фондовые изображения…

  4. Найдите изображение, которое хотите вставить, выберите его и нажмите «Открыть».

Изображение будет вставлено в ваш рабочий лист.

Вставить изображение из изображений Bing

Чтобы вставить изображение из результатов поиска Bing Pictures, выполните следующие действия:

  1. Щелкните место на листе, куда вы хотите вставить рисунок.

  2. На ленте «Вставка» щелкните «Рисунки».

  3. Выберите изображения Bing…

  4. Найдите изображение, которое хотите вставить, выберите его и нажмите «Открыть».

Изображение будет вставлено в ваш рабочий лист.


Вставка небезопасного изображения с помощью поиска Bing не поддерживается в Excel в Интернете.Изображения могут считаться небезопасными по одной из следующих причин:

  • Веб-сайт, на котором размещен образ, не использует HTTPS. Это можно рассматривать как потенциальную уязвимость системы безопасности.

  • URL-адрес изображения на веб-сайте не является допустимым адресом.

Если вы хотите использовать изображение, найденное с помощью поиска изображений Bing в Excel в Интернете, которое не поддерживается, мы предлагаем выполнить следующие действия:

  1. Щелкните место на листе, куда вы хотите вставить рисунок.

  2. На ленте «Вставка» щелкните «Рисунки».

  3. Выберите изображения Bing…

  4. Найдите изображение, которое хотите вставить.

  5. На конкретном изображении, которое вы хотите вставить, щелкните многоточие (…), а затем ссылку на изображение.Это откроет изображение в новой вкладке браузера.

  6. Сохраните изображение на свой компьютер.

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

Совет: Вы также можете скопировать и вставить изображение из Интернета или приложения в Excel в Интернете, не сохраняя его предварительно и не используя меню Вставить .

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

Google Images Оптимальные методы поисковой оптимизации | Центр поиска | Разработчики Google

Google Images — это способ визуального поиска информации в Интернете. Пользователи могут быстро изучать информацию с дополнительным контекстом вокруг изображений с новыми функциями, такими как подписи к изображениям, заметные значки и результаты AMP.

Добавив больше контекста к изображениям, результаты могут стать намного более полезными, что может привести к повышению качества трафика на ваш сайт. Вы можете помочь в процессе обнаружения, убедившись, что ваши изображения и ваш сайт оптимизированы для Google Images. Следуйте нашим рекомендациям, чтобы повысить вероятность того, что ваш контент появится в результатах поиска Картинок Google.

Отказ от встроенных ссылок Картинок Google

При желании вы можете запретить отображение полноразмерного изображения на странице результатов поиска Картинок Google, отказавшись от встроенных ссылок в результатах поиска Картинок Google.

Чтобы отказаться от встроенных ссылок:

  1. При запросе изображения проверьте заголовок реферера HTTP в запросе.
  2. Если запрос поступает из домена Google, ответьте HTTP 200 или 204 без содержания.

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

Вы также можете полностью запретить отображение изображения в результатах поиска.

Создавайте удобные для пользователей условия

Чтобы повысить видимость вашего контента в Картинках Google, сосредоточьтесь на пользователе, обеспечив удобство для него: делают страницы в первую очередь для пользователей, а не для поисковых систем . Вот несколько советов:

  • Обеспечьте хороший контекст: Убедитесь, что ваш визуальный контент соответствует теме страницы.Мы рекомендуем отображать изображения только там, где они добавляют исходную ценность странице. Мы особенно не приветствуем страницы, на которых ни изображения, ни текст не являются исходным содержанием.
  • Оптимизировать размещение: По возможности размещайте изображения рядом с соответствующим текстом. Когда это имеет смысл, подумайте о размещении самого важного изображения в верхней части страницы.
  • Не вставляйте важный текст в изображения: Избегайте встраивания текста в изображения, особенно важных текстовых элементов, таких как заголовки страниц и пункты меню, потому что не все пользователи могут получить к ним доступ (а инструменты перевода страниц не будут работать с изображениями).Чтобы обеспечить максимальную доступность вашего контента, сохраняйте текст в HTML, предоставляйте замещающий текст для изображений.
  • Создавайте информативные и качественные сайты: Хороший контент на вашей веб-странице так же важен, как и визуальный контент для Картинок Google — он обеспечивает контекст и делает результат более действенным. Содержимое страницы может использоваться для создания фрагмента текста для изображения, и Google учитывает качество содержимого страницы при ранжировании изображений.
  • Создавайте сайты, удобные для устройств: Пользователи ищут в Google Картинки чаще с мобильных устройств, чем с компьютеров.По этой причине важно, чтобы вы создавали свой сайт для всех типов и размеров устройств. Используйте тест Mobile-Friendly Test, чтобы проверить, насколько хорошо ваши страницы работают на мобильных устройствах, и получить отзывы о том, что необходимо исправить.
  • Создайте хорошую структуру URL для ваших изображений: Google использует путь URL, а также имя файла, чтобы помочь ему понять ваши изображения. Рассмотрите возможность организации содержимого изображения так, чтобы URL-адреса были построены логически.

Проверьте заголовок и описание страницы

Google Images автоматически генерирует заголовок и фрагмент, чтобы лучше всего объяснить каждый результат и его связь с пользовательским запросом.Это помогает пользователям решить, нажимать ли на результат или нет.

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

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

Добавить структурированные данные

Если вы включаете структурированные данные, Google Images может отображать ваши изображения в виде расширенных результатов, включая заметный значок, который дает пользователям релевантную информацию о вашей странице и может привлечь более целевой трафик на ваш сайт.Google Images поддерживает структурированные данные для следующих типов:

Следуйте общим рекомендациям по структурированным данным, а также всем рекомендациям, относящимся к вашему типу структурированных данных; в противном случае ваши структурированные данные могут не подходить для отображения расширенных результатов в Картинках Google. В каждом из этих структурированных типов данных атрибут изображения является обязательным полем, чтобы иметь право на значок и расширенный результат в Картинках Google.

Оптимизировать скорость

Изображения часто вносят наибольший вклад в общий размер страницы, что может сделать страницы медленными и дорогостоящими для загрузки.Обязательно применяйте новейшие методы оптимизации изображений и отзывчивые изображения, чтобы обеспечить высокое качество и быстрое взаимодействие с пользователем.

В Google Images логотип AMP помогает пользователям определять страницы, которые загружаются быстро и плавно. Подумайте о том, чтобы превратить свою страницу хоста изображений в AMP, чтобы уменьшить время загрузки страницы (где целевая страница — это страница, на которую пользователь попадает после нажатия на результат в Картинках Google).

Проанализируйте скорость своего сайта с помощью PageSpeed ​​Insights и посетите нашу страницу «Основы Интернета», чтобы узнать о передовых методах и методах повышения производительности веб-сайта.

Добавить фото хорошего качества

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

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

Google извлекает информацию о тематике изображения из содержания страницу, включая подписи и названия изображений.По возможности размещайте изображения рядом с релевантный текст и на страницах, имеющих отношение к тематике изображения.

Точно так же имя файла может дать Google подсказку о предмете изображения. Для например, my-new-black-kitten.jpg лучше, чем IMG00023.JPG . Если вы локализуете свои изображения, убедитесь, что вы переводите имена файлов тоже.

Используйте описательный замещающий текст

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

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

Выбирая замещающий текст, сосредоточьтесь на создании полезного, насыщенного информацией содержания, которое использует ключевые слова соответствующим образом и находится в контексте содержания страницы. Избегайте заполнения атрибутов alt ключевыми словами (наполнение ключевыми словами), поскольку это отрицательно сказывается на пользовательском опыте и может привести к тому, что ваш сайт будет рассматриваться как спам.

  • Плохо (отсутствует альтернативный текст):
  • Плохо (набивка ключевых слов): щенок собака щенок щенки щенки собачки щенки помет щенки ретривер лабрадор волкодав сеттер пойнтер щенок щенок джек-рассел терьера щенки для собак корм для собак дешевый корм для щенков
  • Лучше: puppy
  • Best:  Щенок далматина играет в выборку

Мы рекомендуем тестировать контент, проверяя доступность и используя эмулятор медленного сетевого подключения.

Помогите нам открыть для себя все ваши изображения

Использовать семантическую разметку для изображений

Google анализирует HTML-код ваших страниц для индексации изображений, но не индексирует изображения CSS.

  • Хорошо: Щенок золотистого ретривера
  • Плохо:
    Щенок золотистого ретривера

Использовать карту сайта для изображений

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

Карты сайта для изображений могут содержать URL-адреса из других доменов, в отличие от обычных карт сайта, в которых применяются междоменные ограничения. Это позволяет использовать CDN (сети доставки контента) для размещения изображений. Мы рекомендуем вам проверить доменное имя CDN в Search Console, чтобы мы могли сообщить вам обо всех обнаруженных нами ошибках сканирования.

Поддерживаемые форматы изображений

Google Images поддерживает изображения в следующих форматах: BMP, GIF, JPEG, PNG, WebP и SVG.

Вы также можете встроить изображения как URI данных. URI данных позволяют включить файл, такой как изображение, в строку, задав src элемента img как строку в кодировке Base64, используя следующий формат:

 data ]">
 

Хотя встраивание изображений может уменьшить количество HTTP-запросов, тщательно выбирайте, когда их использовать, поскольку это может значительно увеличить размер страницы.Подробнее об этом читайте в разделе о плюсах и минусах встраивания изображений на нашей странице «Основы веб-дизайна».

Адаптивные изображения

Разработка адаптивных веб-страниц улучшает взаимодействие с пользователем, поскольку пользователи используют их на множестве типов устройств. Ознакомьтесь с нашими основами работы с изображениями в Интернете, чтобы узнать о лучших методах работы с изображениями на вашем веб-сайте.

Веб-страницы

используют атрибут или элемент для указания адаптивных изображений.Однако некоторые браузеры и поисковые роботы не понимают эти атрибуты. Мы рекомендуем всегда указывать резервный URL-адрес через атрибут img src .

Атрибут srcset позволяет указывать разные версии одного и того же изображения специально для разных размеров экрана.

Пример:

 отзывчивый Интернет 
 

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

Мы рекомендуем всегда предоставлять элемент img в качестве запасного варианта с атрибутом src при использовании тега изображения в следующем формате:

Пример: <картинка>

<картинка>
 
 
 большое изображение PNG ...

 

Оптимизировать для безопасного поиска

SafeSearch — это параметр в учетных записях пользователей Google, который указывает, следует ли показывать или блокировать откровенные изображения, видео и веб-сайты в результатах поиска Google.Убедитесь, что Google понимает характер ваших видео, чтобы Google мог применить к вашим видео настройки безопасного поиска, если это необходимо.

Сгруппируйте изображения только для взрослых в общем URL-адресе

Если ваш сайт содержит изображения для взрослых, мы настоятельно рекомендуем сгруппировать изображения отдельно от других изображений на вашем сайте. Например: http // www.example.com / adult / image.jpg.

Добавить метаданные на страницы для взрослых

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

Один из самых сильных сигналов — это страницы для взрослых с собственной пометкой. Если вы публикуете контент для взрослых, мы рекомендуем вам добавить на свои страницы один из следующих метатегов:

  
  

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

И напоследок …

Пожалуйста, прочтите наше Руководство для начинающих по SEO, которое содержит много полезной информации для повышения рейтинга. Если у вас есть другие вопросы, задайте их в Справочном сообществе Центра поиска Google.

Могу ли я использовать изображения из Интернета на моем веб-сайте?

Следует ли использовать изображения Google для украшения вашего сайта?

Вы недавно запустили веб-сайт и теперь ищете способы улучшить дизайн, добавив изображения? Если это так, то вы, вероятно, поняли, что можете выполнить быстрый поиск в Картинках Google и найти тысячи изображений, которые идеально подойдут для вашего сайта.

Но я готов поспорить, вы всегда задавались вопросом: Могу ли я использовать изображения из Интернета на моем веб-сайте?

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

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

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

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

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

Для наглядного примера того, что я имею в виду, посмотрите это видео ниже об использовании изображений из Google на вашем сайте.

Не ошибайтесь, получите свои изображения в соответствии с законом

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

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

Как получить изображения легально

1. Создавайте собственные изображения. Самый простой способ получить изображения для вашего веб-сайта — создать их самостоятельно. Это может показаться сложным, но существует множество бесплатных графических инструментов, таких как Gimp, Paint.net и другие, которые позволяют быстро создавать графику для ваших веб-сайтов.

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

2. Покупайте изображения на веб-сайте Stock Photo. Есть множество различных веб-сайтов, предлагающих услуги по созданию стоковых фотографий. Многие из этих сайтов имеют интуитивно понятные поисковые системы, которые позволяют искать любую тему, которая должна возвращать сотни, если не тысячи результатов изображений.

Любое из этих изображений можно приобрести за небольшую плату и затем использовать на своем веб-сайте. Я являюсь участником depositphotos.com. Некоторые другие популярные сайты стоковых фотографий: istockphoto.com или shutterstock.com, bigstockphoto.com и многие другие.

3. Используйте бесплатную библиотеку изображений Flickr. Flickr имеет большое количество бесплатных изображений, которые находятся в так называемой библиотеке «Creative Commons» . Эти изображения совершенно бесплатны и могут быть использованы на вашем веб-сайте.

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

Как насчет онлайн-библиотеки содержимого Microsoft?

Изображение, используемое в этом сообщении, взято из Microsoft Online Content Library . Я часто их использую. В большинстве случаев вы можете свободно использовать эти фотографии и картинки при условии, что у вас есть лицензия на продукт Microsoft, например Word или PowerPoint.

Еще одна вещь, которую я всегда делаю, — это предоставление так называемого «имидж-кредита». Это просто обратная ссылка на источник или веб-сайт, с которого я получил изображение.

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

Итог

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

Также стоит прочитать

Кредит изображения: Microsoft Clip Art

фотографий как веб-контент

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

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

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

  • В электронной торговле фотографий товаров помогают пользователям понять товары и различать похожие товары.
  • На личных веб-сайтах пользователи хотят видеть человека, стоящего за сайтом; Фотографии авторов, например, являются ключевым критерием юзабилити для блогов.

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

Фото людей = Хорошо (если это настоящие люди)

Уже давно руководство по представлению имиджа компании в Интернете включает в себя портреты исполнительной команды, чтобы пользователи ассоциировали реальных людей с безликой корпорацией.FreshBooks.com делает еще один шаг вперед в этом руководстве и представляет фотографии всей своей команды:

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

Здесь пользователь потратил на просмотр портретных фотографий на 10% больше, чем на чтение биографий, даже несмотря на то, что биография занимала на 316% больше места.Судя по графику взглядов, очевидно, что пользователь спешил и просто хотел получить быстрый обзор команды FreshBooks, а просмотр фотографий действительно быстрее, чем чтение полных абзацев.

Ключевой момент в том, что это реальных людей, которые действительно работают в компании .

Напротив, пользователи игнорируют стоковые фотографии обычных людей :

Я предполагаю, что на этой фотографии из Йельской школы менеджмента действительно изображены настоящие студенты; Стандартные фотографии редко бывают такими плохо обрезанными или демонстрируют сутулость моделей (как в случае с парнем в синей рубашке).

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

Скорее всего, декан или другой менеджер попросили дизайнеров «оживить» страницу, чтобы университет выглядел более увлекательно и, таким образом, привлекал больше заявлений. Но в сети jazzed-up = игнорируется.

Способ заинтересовать клиентов — предложить им увлекательный опыт, что означает сосредоточение внимания на удовлетворении их потребностей.Этот урок одинаково справедлив для некоммерческих организаций и университетов, даже если они не называют свою целевую аудиторию «клиентами».

Подробнее о продукте = Хорошо

Сравните эти два примера страниц категорий электронной коммерции (списки галерей товаров по категориям) из Pottery Barn и Amazon.com:

Миниатюры книжных шкафов были тщательно изучены, тогда как миниатюры плоских телевизоров в основном игнорировались. Фактически, на полной странице Amazon (здесь показана только верхняя часть) только 18% времени просмотра было потрачено на фотографии, а 82% — на текст.В среднем для каждого продукта эскиз получил 0,9 фиксации, а описание — 4,4 фиксации.

Разница между этими двумя скриншотами очевидна: фотографии с телевизора не помогают в выборе продуктов. Парень в каноэ против футболиста? Что, поскольку я больше смотрю футбол, чем водные виды спорта, я куплю телевизор с изображением футболиста?

Это хороший пример того, почему не всегда хорошо копировать дизайн крупнейших сайтов. Поскольку Amazon предлагает чудовищно широкий ассортимент продукции, они используют стандартизированный макет галереи, который работает для многих страниц с разными категориями, без оптимизации для какой-либо отдельной категории.Напротив, Pottery Barn оптимизирован для более узкого ассортимента товаров, поэтому на его страницах категорий есть более подробные фотографии.

Большие фотографии = Хорошие (по запросу)

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

Еще в 2005 году «Неадекватное увеличение фото» было 10-й в моем списке 10 ошибок веб-дизайна.То есть, когда пользователи нажимают ссылку на более крупную фотографию, они получают в награду ту, которая может быть на 20% больше. Он должен быть как минимум вдвое больше , а лучше больше. К сожалению, эта ошибка по-прежнему широко распространена спустя 5 лет после того, как я включил ее в список 10 лучших.

Да, пользователям не нравятся огромные фотографии, мешающие их работе. (В приведенном выше примере Йельского университета показано, чего не следует делать.) Но когда пользователи запрашивают у расширение, это совсем другая история:

Обратите внимание на эту фотографию лицевой панели крупным планом от ExtremeTech.com привлек 12 фиксаций. (Здесь показано 50% от исходных 714×868 пикселей.)

Изображений, несущих информацию = Хорошо

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

Инвестируйте в хорошие фотосессии: отличный фотограф может увеличить бизнес-ценность вашего сайта.

10 вещей, которые нужно знать об изображениях в веб-дизайне

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

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

Например, видео могут быть отличным способом заинтересовать посетителей.Однако их устройство может не соответствовать техническим требованиям для просмотра видео. То же и со звуком. Представьте, что вы предлагаете на своем сайте очень информативный аудиотур. Люди, которые не находятся в офисе одни или у которых нет наушников под рукой, скорее всего, не станут его слушать.

А пока давайте сосредоточимся на носителе, который всегда работает, чтобы улучшить пользовательский опыт — конечно, если используется разумно: Изображений . Вот десять рекомендаций, которые помогут получить максимальную отдачу от каждого изображения на вашем сайте.

1. Люди предпочитают изображения тексту

Мы просто любим изображения. Веб-сайт без изображений — это скучно, и даже с красивым дизайном большинство из нас, вероятно, предпочтет сайт с большим количеством изображений. Это почему? Есть много причин, объясняющих, почему мы считаем изображения привлекательными. Например, визуальная информация очень удобна. Вместо того, чтобы читать много текста, что требует времени и усилий, мы довольно быстро сканируем изображение или график. Затем изображений могут вызывать всевозможные эмоции и воспоминания , что делает их очень интересными.Кроме того, многие люди могут лучше запоминать визуальную информацию, и зачастую ею легче поделиться, чем письменный контент. Наконец, изображения могут преодолевать языковые барьеры намного лучше, чем текст.

2. Изображения привлекают внимание и вызывают эмоции

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

3. Логотипы помогают пользователям ориентироваться.

Единственное изображение, которое вы, скорее всего, найдете на любом веб-сайте, — это логотип компании. Логотип играет особую роль, выполняя две функции. Во-первых, он помогает посетителям идентифицировать веб-сайт и дает им уверенность в том, что они находятся там, где они хотят быть.Во-вторых, при отображении вашего логотипа на каждой странице вашего сайта ваши посетители могут быть уверены, что они еще не покинули ваш сайт. Старайтесь всегда размещать логотип на одном и том же месте. Этот последовательный элемент узнаваемости может быть очень ценным, особенно когда вы предлагаете разный контент, требующий другого макета сайта.

4. Ограничьте большие изображения выше сгиба

Изображения хороши по многим причинам, но убедитесь, что вы не установили для них слишком высокий приоритет. Пространство веб-страницы, которое находится над сгибом, поэтому та часть, которую люди могут видеть без необходимости прокручивать, является наиболее ценным объектом вашего сайта.Не потому, что люди не хотят прокручивать, а потому, что эта область — первая часть, которую люди видят, заходя на ваш сайт, и вы должны использовать ее с умом. Дайте людям повод пролистать и просмотреть остальную часть вашего сайта. Если ваши изображения принимают активное участие в этом руководстве, делайте их сколь угодно большими. Однако убедитесь, что они не помещают более важный, информативный или запоминающийся контент в нижнюю часть страницы.

5. Используйте значимые изображения

При использовании изображений важно знать, почему.Не используйте их только для того, чтобы избавиться от слишком большого количества белого пространства или потому, что вы слышали, что они нравятся людям. Для каждого изображения на вашем сайте вы должны быть в состоянии ответить на два вопроса. (1) Почему вы выбрали это изображение, а не другое? (2) Почему вы разместили изображение там, где вы его разместили, а не где-то еще? Если вы не знаете ответа ни на один из этих двух вопросов, подумайте над ним. Имейте в виду, что вам следует использовать только изображения, которые так или иначе поддерживают ваш контент .Будь то потому, что они показывают некоторую релевантную информацию, потому что они подтверждают вашу точку зрения в другом месте, или потому, что они передают чувство, которое поддерживает ваше сообщение.

6. ​​Покажите реальных людей

Человеческие изображения — очень эффективный способ заинтересовать посетителей. Нам нравится распознавать любые человеческие элементы в сети. Это заставляет нас чувствовать, что мы на самом деле общаемся с другими людьми, а не только с каким-то закодированным веб-сайтом. Особенно лиц других людей привлекают наше внимание, и не только это, мы даже следим за их взглядом.Используя изображения с лицами в своем дизайне, дважды проверьте, на что они могут привлечь внимание. Кроме того, не прибегайте к стандартным изображениям, а используйте высококачественные фотографии людей, которые действительно соответствуют характеру вашего сайта.

7. Фоновые изображения создают атмосферу

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

8. Не позволяйте графике выглядеть как рекламные баннеры

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

9. Ярлыки интерактивных изображений

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

10. Убедитесь, что изображения не замедляют работу вашего сайта

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

Автор записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *