Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В самом деле, в представленной выше функции вся картинка будет занимать память три раза! Один раз — буфер, связанный с объектом Image, куда распаковывается изображение, второй раз — пиксели канвы, и третий — типизированный массив в ImageData.Я как-то надеялся, что imageData — псевдомассив и он отдаёт пиксели из буфера канваса.
Статья о расходе ресурсов при ресайзе.Это только третья часть статьи.
библиотек, которые умеют правильно сжиматьА остальные части о том, что «правильно» сжимать сложно или невозможно. Приходится искать компромисс.
Ведь как то реализуются граф. редакторы в браузерах.Я посмотрел Picozu и Adobe Aviary, оба ресайзят нативным
canvas.drawImage() с паршивым качеством.canvas.drawImage(), а потом применять суперсемплинг вручную. Правда от тормозов в Хроме под iOS это не спасет.Я всё-таки не понимаю, почему вас удивляет наличие фильтра в ресайзе.Я тоже не понимаю, почему меня это удивляет.

context.drawImage() на обычной канве. Я бы рекомендовал следить за этим обсуждением.<img> нормально интерполируются, но почему-то на канве все равно используется фиговый метод.становится просто прозрачными пикселями черного цвета
И часть картинки за этими пределами становится просто прозрачными пикселями черного цвета.
<picture data-alt="Eine neue Versus Karte" class="picture loading">
<!--[if IE 9]><video class="is-hidden"<![endif]-->
<!-- Generic wide screen -->
<source media="(min-width: 1024px)"
srcset="/files/teaser-hero/_946x/18022015-Hero49.jpg, /files/teaser-hero/_1888x18022015-Hero49.jpg 2x">
<\/source>
<!-- iPad lanscape -->
<source media="(min-device-width: 769px) and (max-device-width: 1024px)"
srcset="/files/teaser-hero/_944x/18022015-Hero49.jpg, /files/teaser-hero/_1888x/18022015-Hero49.jpg 2x">
<\/source>
<!-- iPad portrait -->
<source media="(min-device-width: 481px) and (max-device-width: 768px)"
srcset="/files/teaser-hero/_768x/18022015-Hero49.jpg, /files/teaser-hero/_1536x/18022015-Hero49.jpg 2x">
<\/source>
<!-- iPhone 3-4 landscape -->
<source media="(min-device-width: 321px) and (max-device-width: 480px)"
srcset="/files/teaser-hero/_480x/18022015-Hero49.jpg, /files/teaser-hero/_944x/18022015-Hero49.jpg 2x">
<\/source>
<!-- iPhone 3-4 portrait -->
<source media="(max-device-width: 320px)"
srcset="/files/teaser-hero/_280x/18022015-Hero49.jpg, /files/teaser-hero/_560x/18022015-Hero49.jpg 2x">
<\/source>
<!--[if IE 9]></video><![endif]-->
<img alt="Eine neue Versus Karte"
srcset="/files/teaser-hero/_1888x/18022015-Hero49.jpg 2x"
src="/files/teaser-hero/_946x/18022015-Hero49.jpg">
</picture>
Прегенерируете основные размеры?
Кешируете результат навсегда?
when scaling images up.
На downscale незаметно чтобы влияло.
Можно поэкспериментировать на MDN: https://developer.mozilla.org/ru/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled
и на codepen: https://codepen.io/anon/pen/ENgwRG
Ресайз картинок в браузере. Все очень плохо