Почему Firefox так плохо при изменении размеров изображений?
Слева исходный PNG и справа - это версии, уменьшенные примерно до половины размера orignal с помощью <img width
и height
. См. [Ссылка удалена].
Почему измененное изображение выглядит так нечетким в Firefox. Есть ли что-то, что я могу сделать с этим, не меняя файл изображения. Нечеткость особенно раздражает, если изображение содержит большое количество математики или текста.
![enter image description here]()
Ответы
Ответ 1
В Bugzilla есть давний билет ошибок, который был включен в Bugzilla, связанный с уменьшением масштаба изображения Firefox. Вам может понравиться следить за билетом, чтобы отслеживать его возможное разрешение или вносить свой патч самостоятельно, если вы чувствуете себя в состоянии.
Лучшим обходным решением является использование свойства CSS transform
для применения крошечного поворота к изображению проблемы и принудительного подпиксельного рендеринга, как указано в Ответ Райана Уила.
Ответ 2
Я знаю, что это уже поздно, но вы можете обмануть firefox в рендеринг изображения лучше, применяя оо-так-малое вращение. Я попытался translate()
изображение получить тот же эффект... безрезультатно.
CSS
.image-scale-hack {
transform: rotate( .0001deg );
}
Javascript
if( "MozAppearance" in document.documentElement.style ) {
$('.logo img').addClass('image-scale-hack');
}
Я избегаю взлома браузера любой ценой. Я заимствовал этот нюх из yepnope.js, и я не плохо себя чувствую.
Также следует отметить, что этот же трюк можно использовать для принудительного отображения субпиксельного изображения как в webkit, так и в firefox. Это полезно для очень медленной анимации - лучше всего объясняется на примере:
http://jsfiddle.net/ryanwheale/xkxwN/
Ответ 3
документация по визуализации изображений, связанная с Firefox, размывает изображение при масштабировании через css или inline style, ответ на который ссылается Su ', содержит инструкции по использованию image-rendering:optimizeQuality
(который исправил проблему в моем тестировании на FF4) - пример:
![enter image description here]()
Ответ 4
Я думаю, что ваш ответ находится в ссылке сверху https://developer.mozilla.org/En/CSS/Image-rendering:
"В настоящий момент auto и optimizeQuality по умолчанию равны, оба приводят к билинейной передискретизации".
'значение по умолчанию IE8 +: бикубическое (высокое качество)'
Далее:
http://www.codinghorror.com/blog/2007/07/better-image-resizing.html
"При уменьшении изображения используйте бикубический эффект, который имеет естественный эффект заточки. Вы хотите подчеркнуть данные, которые остаются на новом, меньшем изображении после отбрасывания всех дополнительных деталей из исходного изображения. '
Я могу придумать пару возможных обходных решений, но ни один из них не прост:
- Измените размер изображения на сервере. Либо подавайте его на половину размера, и разрешите Firefox масштабировать его до полного (что, по-видимому, это будет нормально) или имеют разные URL-адреса для разных размеров изображения.
- Возможно, вы сможете сделать эту работу в браузере плагинами (но пример, который я нашел, на самом деле не делает то, что вам нужно, поэтому я удалил его).
Ответ 5
TL; DR: Масштабирование изображения вряд ли скоро будет исправлено. Где угодно.
Более длинная версия:
У Eris Brasseur есть страница, которая прекрасно сочетается с более широким вопросом: "Почему практически такое программное обеспечение для масштабирования изображений так плохо?"
http://www.4p8.com/eric.brasseur/gamma.html
Так как позиция W3C по этому вопросу примерно соответствует тому, что во всем мире лучше иметь неправильную, но одинаково неправильную реализацию, они избегают любого правильного отношения к гамма (что немного осложнит ситуацию). Таким образом, любой, кто привык к веб-стандартам, скорее всего, продолжит игнорировать гамма, что приведет к эффектам, описанным Эриком и в этой теме. Это гарантирует, что даже уменьшение масштаба далеко не определено, поскольку Джефф Этвуд помещает его в статью, связанную с другим ответом.
В такой среде такие методы, как Lanczos thrive, чья претензия на славу в основном состоит в том, что они выполняют достаточно хорошо, даже если реализованы неправильно.
Другими словами, браузеры являются программным эквивалентом гамбургеров McDonald, и этот факт останется. Его последствия не обязательно, но коэффициенты искажены.
Ответ 6
Теперь (2017) ошибка закрыта 2 года назад. Короткий тест:
FF, 50%:
![FF, 50%]()
FF, 25%:
![FF, 25%]()
Ответ 7
Обходной путь для этой проблемы заключается в том, чтобы просто изменить исходное изображение с помощью редактора изображений до нужного размера и использовать изображение как есть, не определяя его ширину и высоту в таблице стилей.