Firefox размывает изображение при масштабировании с помощью внешнего CSS или встроенного стиля

Когда я визуально масштабирую изображение, Firefox 3 размывает его. Firefox 2 и другие браузеры этого не делают, чего я и ожидал. Это особенно плохо для создания сетевой игры с использованием спрайтов в формате png или gif.

Например, при отображении изображения размером 100x100 в Firefox 3 следующим образом:

<img src = "sprite.gif" width = "200" />

или же

<img src = "sprite.gif" style = "width:200px; height:200px;" />

он выглядит размытым в FF3, а не в IE.

Есть идеи, как это предотвратить?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
23
0
19 474
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

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

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

Я не думаю, что есть способ обойти это.

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

Я сам просто подумал об этом, но, похоже, это жестко запрограммировано в ff3 :( http://forums.mozillazine.org/viewtopic.php?f=7&t=752735&p=5008845

ff2 не выполнял никакой интерполяции

IE по умолчанию не работает, но вы можете включить его: http://www.joelonsoftware.com/items/2008/12/22.html

К сожалению, у меня нет решения для этого, но это полный отказ от сделки для большого количества пользователей (например, художников по пикселям). Если это затронуло вас, отправьте отзыв на http://hendrix.mozilla.org/ и проголосуйте за соответствующая ошибка.

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

Вот отчет об ошибке для Google Chrome, у которого та же проблема, что и у Firefox. Я не знаю об Opera, но я слышал, что они используют некоторые эвристики для более разумного автоматического масштабирования.

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

Chuck 18.03.2009 19:56

А как насчет динамического изменения размера изображения через JS? А как насчет увеличенного размера увеличенных изображений? Для JPEG билинейная фильтрация имеет смысл, но для PNG и GIF это, как правило, не подходит. Это серьезная ошибка, IE показывает, как это правильно делать.

nikow 18.03.2009 20:03

Почему схема сжатия должна иметь значение? Билинейное или бикубическое масштабирование является - то, что нужно делать, если только вы не искажаете хочу и пикселирование. Он ближе к визуальному восприятию изображения, чем ближайший сосед, который IE использует IIRC. codinghorror.com/blog/archives/000367.html

Chuck 18.03.2009 21:31

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

nikow 18.03.2009 21:58
Ответ принят как подходящий

Я обнаружил эту новую функцию FireFox:

http://developer.mozilla.org/En/CSS/Image-rendering

Поместив это в свой CSS, вы исправите это:

image-rendering: -moz-crisp-edges;

Думал поделиться этой информацией. Извините за ответ на мой вопрос;)

Нет ничего постыдного в том, чтобы ответить на свой вопрос!

Paul Lammertsma 12.07.2012 17:06

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

user1010892 27.11.2012 19:44

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

Ryan Wheale 14.01.2013 02:17

http://developer.mozilla.org/En/CSS/Image-rendering применяется только к текущим сборкам ствола Firefox (Minefield / 3.6a1pre / Gecko 1.9.2). Этой функции нет в Firefox 3.0 и не будет в следующем выпуске 3.5. Первый выпуск с этой опцией будет следующим основным выпуском после 3.5, который в настоящее время находится на ранних этапах планирования с ориентировочным выпуском в 2010 году.

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

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

Если вы хотите, чтобы Internet Explorer 8 масштабировал изображения, как в предыдущих версиях, поместите это в свой CSS:

-ms-interpolation-mode: nearest-neighbor;

Если вы хотите, чтобы Internet Explorer 7 масштабировал изображения, такие как IE 8, используйте это:

-ms-interpolation-mode: bicubic;

Помимо внешнего вида изображения, вы также должны учитывать производительность. Я обнаружил, что IE 7 и IE 8 требуют значительно большей мощности процессора для масштабирования изображений при использовании бикубической выборки, чем Firefox 3.6.

Другие вопросы по теме