Ресайз что это такое
Что такое кроп и рисайз
Итак, у нас есть изображение, полученное с помощью цифровой фотокамеры. В настоящее время оно состоит из одного-двух десятков мегапикселей и его линейные размеры, предположим, 4000 на 3000 пикселей. В то же время, подавляющее большинство современных мониторов и телевизоров имеют не более 2000 пикселей по горизонтали. Это значит, что при просмотре этого снимка на мониторе/телевизоре каждая вторая точка изображения будет выброшена, причём способ удаления лишних пикселей зависит от программы, отвечающей за вывод. К сожалению, эти способы не всегда являются оптимальными с точки зрения быстроты и качества (например, выводимое изображение получается несколько размытым). Следовательно, нужно взять операцию рисайза в свои руки. Вторым немаловажным фактором, побуждающим к рисайзу, является пропорциональное уменьшение объёма занимаемых данных, что в свою очередь уменьшает время загрузки изображения. Ведь смотрящим ваши фотографии вовсе не хочется ждать несколько секунд или даже минут чтобы снимок загрузился целиком. К тому же интернет-трафик не всегда бесплатный (особенно у операторов мобильной и спутниковой связи), поэтому почему бы не сэкономить время и деньги ваших зрителей?
Вот тестовая фотография. Её размер 4360×3246 пикселей и она занимает 5,9 Мб (по клику на картинке загрузится оригинал):
Фото 1. Оригинальный снимок, размером 4360×3246 пикселей
Фото 2. Снимок, уменьшенный до размера 1600×1200 пикселей
Часто фотографии требуется ещё и кадрирование. Кадрированием или кропом (от английского слова crop) называется операция по вырезанию части кадра. Скажем, в нашем случае синичка занимает не слишком много места, хотя является основным объектом съёмки. Поэтому лишний фон можно безболезненно отрезать, это можно сделать в любом графическом редакторе с помощью функции Crop (Кадрирование или Обрезка).
Фото 3. Красная рамка показывает область кадрирования
При этом получится изображение размером 2967×2225 пикселей и объёмом 864 Кб :
Фото 4. Откадрированный снимок размером 2967 ×2225 пикселей
Однако, и оно является достаточно весомым (к тому же не забываем про паранойю), поэтому не мешает сделать нашей картинке рисайз до 1600×1200 пикселей и объёма 344 Кб.
Переупаковка контента: экономим и получаем профит
Контент-маркетинг – отличный инструмент привлечения новой аудитории, доказательства экспертности, удержания действующих клиентов, формирования лояльности, донесения важной информации до целевой аудитории и др. Но есть и минусы: все это долго, дорого и трудозатратно. И чем больше каналов дистрибуции контента, тем больше его надо создавать.
Однако есть способ сэкономить деньги, время и силы на контенте, при этом не потерять в трафике, вовлеченности, охватах и т. п. Такой инструмент называют ресайзом, ресайклом или переупаковкой.
Что такое ресайз и зачем он нужен
Resize переводится как изменение размера. Получается, ресайз – это тот же контент, но в другом размере и формате. Переупаковать – значит из одной единицы контента сделать несколько.
Когда мы слышим о том, что для SEO-продвижения важно 100% уникальности, или читаем новости про борьбу алгоритмов соцсетей с ворованным контентом, создается впечатление, что нужно публиковать только новые материалы. Что ранее опубликованное уже неуникальное и об этом стоит забыть. Но это ошибка.
На самом деле хороший – крутой, трафиковый, годный, вечнозеленый – контент можно и нужно использовать повторно. Зачем это делать:
А больше охвата и трафика – больше лидов, целевых действий на сайте.
Примеры повторного использования контента
Самый распространенный способ сделать ресайз – переупаковать контент из длинного в короткий. В редакции New York Times такие форматы называют «second hour stories» и отмечают, что часто они становятся популярнее больших. К примеру, можно:
Благодаря выжимке не обязательно переходить на сайт, чтобы узнать важную информацию. Пример – пост «Т—Ж»
Пример выжимки статьи в телеграм-канале Kinetica
«Паша и его прокрастинация» берет из статьи TexTerra сервисы по своей тематике и рассказывает о них в посте (кстати, это и ресайз, и курирование контента)
Такие вот нетопорные подборки статей бывают в журнале «Код»
Но это не единственный способ отресайзить контент. Можно просто менять формат, не меняя количества информации на входе и выходе. Другой вариант – создавать более масштабные сущности, объединяя или расширяя короткие материалы. Например, вы можете:
Что ж, можно даже выпускать подкаст, монтируя голосовые сообщения от нескольких людей, как это делают авторы «Проветримся!» (Tel)
Пример ресайза собственного контента в блоге TexTerra
А это статья в блоге Cybermarketing, написанная по расшифровке доклада с конференции
Вспомогательные инструменты для переупаковки
Чтобы относительно быстро и легко генерировать старый-новый контент, вам понадобятся некоторые дополнительные инструменты. Что вам может пригодиться:
Хотите лучше разбираться в контент-маркетинге, SMM, веб-аналитике и других направлениях? Добро пожаловать в образовательный центр Cybermarketing. Есть материалы как для специалистов, так и для предпринимателей. Самые разные форматы: вебинары, видеокурсы, очные интенсивы, конференции.
Ликбез: методы ресайза изображений
Почему изображение, масштабированное с бикубической интерполяцией, выглядит не как в Фотошопе. Почему одна программа ресайзит быстро, а другая — нет, хотя результат одинаковый. Какой метод ресайза лучше для увеличения, а какой для уменьшения. Что делают фильтры и чем они отличаются.
Вообще, это было вступлением к другой статье, но оно затянулось и вылилось в отдельный материал.
Этот человек сидит среди ромашек, чтобы привлечь ваше внимание к статье.
Для наглядного сравнения я буду использовать изображения одинакового разрешения 1920×1280 (одно, второе), которые буду приводить к размерам 330×220, 1067×667 и 4800×3200. Под иллюстрациями будет написано, сколько миллисекунд занял ресайз в то или иное разрешение. Цифры приведены лишь для понимания сложности алгоритма, поэтому конкретное железо или ПО, на котором они получены, не так важно.
Ближайший сосед (Nearest neighbor)
Это самый примитивный и быстрый метод. Для каждого пикселя конечного изображения выбирается один пиксель исходного, наиболее близкий к его положению с учетом масштабирования. Такой метод дает пикселизированное изображение при увеличении и сильно зернистое изображение при уменьшении.
Вообще, качество и производительность любого метода уменьшения можно оценить по отношению количества пикселей, участвовавших в формировании конечного изображения, к числу пикселей в исходном изображении. Чем больше это отношение, тем скорее всего алгоритм качественнее и медленнее. Отношение, равное одному, означает что как минимум каждый пиксель исходного изображения сделал свой вклад в конечное. Но для продвинутых методов оно может быть и больше одного. Дак вот, если например мы уменьшаем изображение методом ближайшего соседа в 3 раза по каждой стороне, то это соотношение равно 1/9. Т.е. большая часть исходных пикселей никак не учитывается.
1920×1280 → 330×220 = 0,12 ms
1920×1280 → 1067×667 = 1,86 ms
1920×1280 → 4800×3200 = 22,5 ms
Теоретическая скорость работы зависит только от размеров конечного изображения. На практике при уменьшении свой вклад вносят промахи кеша процессора: чем меньше масштаб, тем меньше данных используется из каждой загруженной в кеш линейки.
Метод осознанно применяется для уменьшения крайне редко, т.к. дает очень плохое качество, хотя и может быть полезен при увеличении. Из-за скорости и простоты реализации он есть во всех библиотеках и приложениях, работающих с графикой.
Аффинные преобразования (Affine transformations)
Аффинные преобразования — общий метод для искажения изображений. Они позволяют за одну операцию повернуть, растянуть и отразить изображение. Поэтому во многих приложениях и библиотеках, реализующих метод аффинных преобразований, функция изменения изображений является просто оберткой, рассчитывающей коэффициенты для преобразования.
Принцип действия заключается в том, что для каждой точки конечного изображения берется фиксированный набор точек исходного и интерполируется в соответствии с их взаимным положением и выбранным фильтром. Количество точек тоже зависит от фильтра. Для билинейной интерполяции берется 2×2 исходных пикселя, для бикубической 4×4. Такой метод дает гладкое изображение при увеличении, но при уменьшении результат очень похож на ближайшего соседа. Смотрите сами: теоретически, при бикубическом фильтре и уменьшении в 3 раза отношение обработанных пикселей к исходным равно 4² / 3² = 1,78. На практике результат значительно хуже т.к. в существующих реализациях окно фильтра и функция интерполяции не масштабируются в соответствии с масштабом изображения, и пиксели ближе к краю окна берутся с отрицательными коэффициентами (в соответствии с функцией), т.е. не вносят полезный вклад в конечное изображение. В результате изображение, уменьшенное с бикубическим фильтром, отличается от изображения, уменьшенного с билинейным, только тем, что оно еще более четкое. Ну а для билинейного фильтра и уменьшения в три раза отношение обработанных пикселей к исходным равно 2² / 3² = 0.44, что принципиально не отличается от ближайшего соседа. Фактически, аффинные преобразования нельзя использовать для уменьшения более чем в 2 раза. И даже при уменьшении до двух раз они дают заметные эффекты лесенки для линий.
Теоретически, должны быть реализации именно аффинных преобразований, масштабирующие окно фильтра и сам фильтр в соответствии с заданными искажениями, но в популярных библиотеках с открытым исходным кодом я таких не встречал.
1920×1280 → 330×220 = 6.13 ms
1920×1280 → 1067×667 = 17.7 ms
1920×1280 → 4800×3200 = 869 ms
Время работы заметно больше, чем у ближайшего соседа, и зависит от размера конечного изображения и размера окна выбранного фильтра. От промахов кеша уже практически не зависит, т.к. исходные пиксели используются как минимум по двое.
Мое скромное мнение, что использование этого способа для произвольного уменьшения изображений попросту является багом, потому что результат получается очень плохой и похож на ближайшего соседа, а ресурсов на этот метод нужно значительно больше. Тем не менее, этот метод нашел широкое применение в программах и библиотеках. Самое удивительное, что этот способ используется во всех браузерах для метода канвы drawImage() (наглядный пример), хотя для простого отображения картинок в элементе используются более аккуратные методы (кроме IE, в нем для обоих случаев используются аффинные преобразования). Помимо этого, такой метод используется в OpenCV, текущей версии питоновской библиотеки Pillow (об этом я надеюсь написать отдельно), в Paint.NET.
Кроме того, именно этот метод используется видеокартами для отрисовки трехмерных сцен. Но разница в том, что видеокарты для каждой текстуры заранее подготавливают набор уменьшенных версий (mip-уровней), и для окончательной отрисовки выбирается уровень с таким разрешением, чтобы уменьшение текстуры было не более двух раз. Кроме этого, для устранения резкого скачка при смене mip-уровня (когда текстурированный объект приближается или отдаляется), используется линейная интерполяция между соседними mip-уровнями (это уже трилинейная фильтрация). Таким образом для отрисовки каждого пикселя трехмерного объекта нужно интерполировать между 2³ пикселями. Это дает приемлемый для быстро движущейся картинки результат за время, линейное относительно конечного разрешения.
Суперсемплинг (Supersampling)
С помощью этого метода создаются те самые mip-уровни, с помощью него (если сильно упростить) работает полноэкранное сглаживание в играх. Его суть в разбиении исходного изображения по сетке пикселей конечного и складывании всех исходных пикселей, приходящихся на каждый пиксель конечного в соответствии с площадью, попавшей под конечный пиксель. При использовании этого метода для увеличения, на каждый пиксель конечного изображения приходится ровно один пиксель исходного. Поэтому результат для увеличения равен ближайшему соседу.
Можно выделить два подвида этого метода: с округлением границ пикселей до ближайшего целого числа пикселей и без. В первом случае алгоритм становится малопригодным для масштабирования меньше чем в 3 раза, потому что на какой-нибудь один конечный пиксель может приходиться один исходный, а на соседний — четыре (2×2), что приводит к диспропорции на локальном уровне. В то же время алгоритм с округлением очевидно можно использовать в случаях, когда размер исходного изображения кратен размеру конечного, или масштаб уменьшения достаточно мал (версии разрешением 330×220 почти не отличаются). Отношение обработанных пикселей к исходным при округлении границ всегда равно единице.
1920×1280 → 330×220 = 7 ms
1920×1280 → 1067×667 = 15 ms
1920×1280 → 4800×3200 = 22,5 ms
Подвид без округления дает отличное качество при уменьшении на любом масштабе, а при увеличении дает странный эффект, когда большая часть исходного пикселя на конечном изображении выглядит однородной, но на краях видно переход. Отношение обработанных пикселей к исходным без округления границ может быть от единицы до четырех, потому что каждый исходный пиксель вносит вклад либо в один конечный, либо в два соседних, либо в четыре соседних пикселя.
1920×1280 → 330×220 = 19 ms
1920×1280 → 1067×667 = 45 ms
1920×1280 → 4800×3200 = 112 ms
Производительность этого метода для уменьшения ниже, чем у аффинных преобразований, потому что в расчете конечного изображения участвуют все пиксели исходного. Версия с округлением до ближайших границ обычно быстрее в несколько раз. Также возможно создать отдельные версии для масштабирования в фиксированное количество раз (например, уменьшение в 2 раза), которые будут еще быстрее.
Данный метод используется в функции gdImageCopyResampled() библиотеки GD, входящей в состав PHP, есть в OpenCV (флаг INTER_AREA), Intel IPP, AMD Framewave. Примерно по такому же принципу работает libjpeg, когда открывает изображения в уменьшенном в несколько раз виде. Последнее позволяет многим приложениям открывать изображения JPEG заранее уменьшенными в несколько раз без особых накладных расходов (на практике libjpeg открывает уменьшенные изображения даже немного быстрее полноразмерных), а затем применять другие методы для ресайза до точных размеров. Например, если нужно отресайзить JPEG разрешением 1920×1280 в разрешение 330×220, можно открыть оригинальное изображение в разрешении 480×320, а затем уменьшить его до нужных 330×220.
Свертки (Convolution)
Этот метод похож на аффинные преобразования тем, что используются фильтры, но имеет не фиксированное окно, а окно, пропорциональное масштабу. Например, если размер окна фильтра равен 6, а размер изображения уменьшается в 2,5 раза, то в формировании каждого пикселя конечного изображения принимает участие (2,5 * 6)² = 225 пикселей, что гораздо больше, чем в случае суперсемплинга (от 9 до 16). К счастью, свертки можно считать в 2 прохода, сначала в одну сторону, потом в другую, поэтому алгоритмическая сложность расчета каждого пикселя равна не 225, а всего (2,5 * 6) * 2 = 30. Вклад каждого исходного пикселя в конечный как раз определяется фильтром. Отношение обработанных пикселей к исходным целиком определяется размером окна фильтра и равно его квадрату. Т.е. для билинейного фильтра это отношение будет 4, для бикубического 16, для Ланцоша 36. Алгоритм прекрасно работает как для уменьшения, так и для увеличения.
1920×1280 → 330×220 = 76 ms
1920×1280 → 1067×667 = 160 ms
1920×1280 → 4800×3200 = 1540 ms
Скорость работы этого метода зависит от всех параметров: размеров исходного изображения, размера конечного изображения, размера окна фильтра.
Именно этот метод реализован в ImageMagick, GIMP, в текущей версии Pillow с флагом ANTIALIAS.
Одно из преимуществ этого метода в том, что фильтры могут задаваться отдельной функцией, никак не привязанной к реализации метода. При этом функция самого фильтра может быть достаточно сложной без особой потери производительности, потому что коэффициенты для всех пикселей в одном столбце и для всех пикселей в одной строке считаются только один раз. Т.е. сама функция фильтра вызывается только (m + n) * w раз, где m и n — размеры конечного изображения, а w — размер окна фильтра. И наклепать этих функций можно множество, было бы математическое обоснование. В ImageMagick, например, их 15. Вот как выглядят самые популярные:
Примечательно, что некоторые фильтры имеют зоны отрицательных коэффициентов (как например бикубический фильтр или фильтр Ланцоша). Это нужно для придания переходам на конечном изображении резкости, которая была на исходном.
Уменьшение размеров фотографии без потери деталей
Каждый, кто когда-нибудь сохранял фотографии для Интернета, замечал такую неприятную мелочь: исходная фотография абсолютно резкая, а как только уменьшаем число пресловутых пикселей раз в десять, вся резкость сразу улетучивается. А ведь вроде бы всё должно быть наоборот – пережатая фотография должна быть полна всяких мелких деталей. Рассмотрим, почему так получается и как с этим бороться.
Казалось бы, если взять десятимегапиксельный пейзаж или портрет с нормальной резкостью и уменьшить его размер, скажем, до мегапикселя, то количество деталей должно сократиться незначительно, а из-за намного более сильного уменьшения числа пикселей относительная детализация должна только возрасти. Но не тут-то было. Как ни странно, изменение размеров изображения – не такая простая задача, как кажется на первый взгляд. И дело вовсе не в сложности реализации какого-либо алгоритма, вовсе нет. Сложность прежде всего в том, что невозможно такой универсальный алгоритм придумать в принципе.
Рассмотрим простейший пример – чёрно-белое изображение шахматной доски размером 8х8 пикселей. Нам необходимо уменьшить размер картинки до 4х4 пикселя. Что мы получим в итоге? В результате такого преобразования у нас будет вместо кучи деталей одна сплошная серая масса, и ничего с этим поделать нельзя. А ведь это лишь простейший случай уменьшения размеров в 2 раза!
Таким образом, «правильный» алгоритм ресайза невозможно придумать в принципе – в любом случае детали изображения будут теряться в значительной мере. Но есть способы и алгоритмы, которые позволяют получить нормальную детализацию уменьшенных снимков.
Почему важны ресайзы рекламных баннеров в социальных сетях?
Время чтения: 3 минуты Нет времени читать?
В этой статье я хочу рассказать, почему нужно учитывать резайры (изменение размера) изображений в соц. сетях.
Рекомендованные размеры рекламных баннеров социальных сетей важно учитывать, потому что картинки меньше рекомендованного размера «растягиваются» и становятся нечеткими, а картинки большего размера могут «сжиматься» и тоже выглядеть хуже, чем в оригинале, особенно это будет видно на тексте. Если пропорции картинки будут отличаться от рекомендованных, то возможно большая часть изображения будет обрезана и вы потеряете часть нужной информации.
Перед тем, как вы начинаете продумывать рекламную кампанию, вам нужно знать размеры всех креативов, которые будут использоваться в соц. Сетях.
При написании технического задания дизайнеру, нужно обязательно указать все размеры баннеров, которые могут потребоваться.
Также можно, конечно, использовать Photoshop или онлайн сервисы, которые сделают картинку правильного размера.
Размеры изображений Вконтакте
Ниже описаны основные форматы рекламы ВКонтакте, работающие с использованием рекламных баннеров.
1. Изображение и текст (формат 145х85 рх, заголовок в 33 символа и описание в 70).
2. Большое изображение (формат 145х165 рх, текст 33 символа).
3. Продвижение сообществ (формат 145х145 рх, название сообщества).
4. Специальный формат продвижения сообществ (256х256 рх, название сообщества)
Если вы не будите при учитывать эти размеры, то баннер который у вас будет подготовлен может быть обрезан очень сильно.
Первые три формата, показываются пользователям не в ленте, а с левой стороны пользовательского интерфейса ВКонтакте.
Маленький размер этих форматов несколько ограничивает возможности текстового и графического оформления.
При создании рекламной записи с кнопкой либо при размещении в посте ссылки или лидогенерации и загрузке сниппета
1. Изображение нужно загружать 537х240 рх.
На таких изображениях необходимо размещать краткую информацию о рекламируемом продукте и призывы к действию.
У Facebook основные форматы изображения два:
Форматы отображается во всех местах размещения рекламы Facebook. На первый взгляд всё просто, но это не так: чтобы баннер в Facebook показывался и охватывал максимум аудитории, недостаточно просто сделать картинку подходящего формата. Максимальный охват рекламы обеспечат только те изображения, которые содержат не более 20% текста.
При создании баннеров для Instagram с текстом и общим оформлением такая же ситуация, как и в Facebook, нужно обязательно учитывать сколько текста находится на картинке, также изображение, может содержать не более 20%.
Для объявлений в ленте и кольцевой галерее оптимальный размер изображений – 1080х1080 рх, минимально допустимые формат картинок: квадратная – 600х600 рх. Меньший размер изображения не загрузится. Как обычно изображение можно обрезать, но вы можете потерять часть важной информации.
Квадратная форма наиболее приемлема для этой социальной сети. На баннере рекомендуется размещать кнопки с призывом к действию, например, «Узнать больше», «Зарегистрироваться», «Попробовать сейчас». Этот элемент увеличивает кликабельность объявления в Instagram.