Как предотвратить размытие небольших изображений в Chrome при увеличении?

13

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

пропеллер
источник
1
В настоящее время я не думаю, что вы можете отключить алгоритм сглаживания, который использует Chrome, который сглаживает края изображений при их увеличении. Если нет расширения, которое делает это, или кто-то знает что-то, чего я еще не знаю.
DuckDuckGoose
Под масштабированием вы подразумеваете Ctrl / CMD и +?
Booyaa
@booyas, да, это то, что я имею в виду.
Пропеллер
1
Вещи улучшились, теперь это возможный дубликат stackoverflow.com/questions/7615009/… . В частности, посмотрите ответ namuol и jsfiddle на jsfiddle.net/namuol/VAXrL/1459, который демонстрирует то, что я думаю, вы хотите. TL; DR для хрома: "рендеринг изображений: пиксельный;" на элементах img и canvas.
Дон Хэтч
Не ваш вопрос, но возможно ли сохранить изображения хотя бы в более высоком качестве, и тогда будет ли увеличение использовать дополнительные детали?
Ксонатрон

Ответы:

16

Обновить

Согласно комментариям:

теперь это возможно в Firefox: рендеринг изображения: optimizeSpeed; - Арно

оригинал

Это невозможно напрямую из браузера.

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

http://productforums.google.com/forum/#!topic/chrome/AIihdmfPNvE

У вас есть другие варианты, вот 2 основных пункта по ссылке выше, оба являются аддонами Chrome.

image-resizer
imagezoom

Вы можете применить код CSS ниже в браузере , который отключит его!

img { 
    image-rendering: optimizeSpeed;             /*                     */
    image-rendering: -moz-crisp-edges;          /* Firefox             */
    image-rendering: -o-crisp-edges;            /* Opera               */
    image-rendering: -webkit-optimize-contrast; /* Chrome (and Safari) */
    image-rendering: pixelated;                 /* Chrome as of 2019   */
    image-rendering: optimize-contrast;         /* CSS3 Proposed       */
    -ms-interpolation-mode: nearest-neighbor;   /* IE8+                */
    }
Дейв
источник
К сожалению, это не работает на Chrome (кроме OSX).
Lapo
Как / где именно мне нужно «применить» это в Chrome?
Nyerguds
4
Вы только что сказали, что это невозможно, а затем вставили рабочий код, чтобы сделать это?
Петр Пеллер
Нет @petrpeller, я ясно написал, что это невозможно напрямую с помощью браузера. Затем я продолжаю объяснять, что требуется плагин ... Почему вы задаете этот вопрос, когда можете прочитать пост?!?
Дейв
2
image-rendering: -webkit-optimize-contrast;работающий в Chrome
wp студент
2

Я заметил некоторые проблемы с Chrome и Firefox при использовании графического рендеринга с изображениями. Например:

img {
    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
}

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

bashaus
источник
2

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

javascript:(function pixelate() {
  const sheet = document.createElement('style');
  sheet.innerHTML = 'img { image-rendering: pixelated; }';

  document.head.appendChild(sheet);

  for(let i = 0; i < frames.length; ++i) {
    frames[i].document.head.appendChild(sheet);
  }
})()

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

Стивен Недзельски
источник
1

Возможно в 2019 году со следующим CSS: image-rendering: pixelated;

Arnaud
источник