Мы все знаем, что WebP — это формат изображения WebP, запущенный Google.Это формат файла изображения, который поддерживает сжатие с потерями и сжатие без потерь.Согласно тестам Google, одно и то же изображение, изображение в формате WebP можно сравнить с форматами PNG и JPG. изображений.Это экономит много объема, но его совместимость не очень хорошая, а именно:
Итак, нам нужно выполнить некоторую обработку совместимости, так как же определить, поддерживает ли браузер webp? Ниже приведены несколько методов для справки.
метод первый
Используйте toDataURL холста, чтобы судить
Метод toDataURL объясняется в MDN следующим образом:
Метод HTMLCanvasElement.toDataURL() возвращает URI данных, содержащий отображаемое изображение. Тип можно использовать с параметром type, который по умолчанию имеет формат PNG. Разрешение картинки 96dpi.
Если высота или ширина холста равна 0, возвращается строка «данные:».
Если входящий тип не "image/png", но возвращаемое значение начинается с "data:image/png", то входящий тип не поддерживается.
Chrome поддерживает тип «image/webp».
Метод toDataURL преобразует изображение в DOMString, содержащую dataURI, и определяет, что значением типа изображения перед кодировкой base64 является image/webp.
Например, в Google Chrome используйте метод toDataURL для преобразования в image/webp:
Преобразование в изображение/webp с помощью метода toDataURL в браузере Safari:
Можно обнаружить, что при выполнении toDataURL в браузере, не поддерживающем webp, получаемый тип изображения не является webp, поэтому можно судить по этому.
Этот метод загружает фоновое изображение белого квадрата 1x1, чтобы проверить, поддерживает ли браузер webp.
Протестируйте код в Google:
Протестируйте код в Firefox:
Протестируйте код в Safari:
Официальные документы Google обрабатываются следующим образом (сначала загрузите изображение WebP, если вы можете получить ширину и высоту изображения, это означает, что WebP поддерживается, в противном случае оно не поддерживается):
function check_webp_feature(feature, callback) {
var kTestImages = {
lossy: "UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",
lossless: "UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==",
alpha: "UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==",
animation: "UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"
};
var img = new Image();
img.onload = function () {
var result = (img.width > 0) && (img.height > 0);
callback(feature, result);
};
img.onerror = function () {
callback(feature, false);
};
img.src = "data:image/webp;base64," + kTestImages[feature];
}