Подтвердить что ты не робот

Какие браузеры (и версии) поддерживают метод Canvas.toBlob?

Я работаю над минималистским проектом по созданию изображений, и мне нужно иметь возможность создавать изображения в браузере, которые в свою очередь используются на сервере. До сих пор метод Canvas.toDataUrl() удовлетворял наши потребности, но я только что узнал о Canvas.toBlob() который был бы гораздо более удобным.

Похоже, что метод toBlob() является новым для спецификации на несколько месяцев (я не могу найти прямой ссылки на то, когда он был добавлен).

Какие браузеры поддерживают toBlob и, что более важно, какие версии этих браузеров включали интеграцию метода? Кроме того, поддержка этой функции "глючит" или находится в разработке для каких-либо крупных браузеров?

ОБНОВИТЬ

Я задал этот вопрос почти 8 лет назад. Я внес свой предыдущий проект в canvas.toBlob(), ожидая каких-либо обновлений о состоянии метода canvas.toBlob(). toBlob() по тому, что я могу найти в Интернете, реализация toBlob() похоже, toBlob() использоваться в некоторых браузерах.

Я спрашиваю еще раз, насколько повсеместно используется метод canvas.toBlob() среди браузеров, которые начали интегрировать объект холста HTML5, и какие версии этих браузеров были первыми, кто интегрировал эту поддержку?

4b9b3361

Ответ 1

Прошло почти 8 лет с тех пор, как я впервые задал этот вопрос. Учитывая, что я все еще получаю поддержку, и этот вопрос часто находится в верхней части поисков Google, я решил дать обновление состояния Canvas.toBlob(...) и его реализации.

Следующая таблица:

                   |             | Version Support 
                   | Version     | for 'Quality'
Browser            | Implemented | Parameter 
-------------------+-------------+-----------------
Android Webview)   |          50 |          50
Chrome (Desktop)   |          50 |          50
Chrome (Mobile)    |          50 | Unsupported 
Edge (Desktop)     | Unsupported | Unsupported 
Edge (Mobile)      | Unsupported | Unsupported 
Firefox (Desktop)  |          19 |          25
Firefox (Mobile)   |           4 |          25
Internet Explorer* |          10 | Unsupported 
Opera (Desktop)    |          37 |         Yes
Opera (Mobile)     |          37 | Unsupported 
Safari (Desktop)   |          11 | Unsupported 
Safari (Mobile)    | Unsupported | Unsupported 
Samsung Internet   |         5.0 | Unsupported 

* Internet Explore implements "msToBlob" rather than the "toBlob" function signature.

(Источник: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob)

Ответ 2

В Фев 2016 эти браузеры поддерживают toBlob()

Обратите внимание, что этот ответ был изначально написан в 2011 году. Оригинальный ответ/изменения ниже.


toBlob() является действительно новым, и я бы не рекомендовал его использовать в потребительском приложении, если вы не можете явно попросить их использовать конкретный браузер (или управлять средой).

toBlob() Был добавлен в 12 мая и имеет ограниченную функциональность как определенную. Он не существует ни в ночной Chrome, ни в ночном браузере, ни в IE9.

Стоит отметить, что Firefox имеет функциональный mozGetAsFile

Пока еще нужно обсуждение для добавления его в Chrome.

Обсуждение Firefox. Они решили подождать, пока спецификация станет более ясной, прежде чем они попытаются выполнить.

Спецификация для toBlob() очень расплывчата, и многие внутренние вопросы все еще не решены. Они даже не уверены, какие параметры могут использоваться для типичного использования toBlob().


Обновление от 10 апреля 2012 г.

toBlob по-прежнему не получает поддержки. Он по-прежнему не существует в Chrome Canary (Nightly), Firefox Nightly и IE9.

Если вы хотите следить за обновлениями в Chrome star, выполните следующие действия:

http://code.google.com/p/chromium/issues/detail?id=67587

Если вы хотите следить за обновлениями в Firefox, подпишитесь на эту ошибку здесь:

https://bugzilla.mozilla.org/show_bug.cgi?id=648610

Обновление: по состоянию на 21 февраля 2016 года .toBlob теперь работает в chrome 50 (в настоящее время канарейка)

Ответ 3

Если вам это может понадобиться, этот js файл реализует функцию toBlob в браузерах, которые ее еще не поддерживают: https://github.com/eligrey/canvas-toBlob.js

Здесь post авторов и здесь расширенный исходный код.

Однако, похоже, что даже эта библиотека не работает во всех браузерах, так как она

"требует поддержки BlobBuilder, которая отсутствует во всех браузеры"

Ответ 4

Существует отличная реализация JavaScript для функции canvas.toBlob(), которая также включает встроенную функцию FireFox mozGetAsFile():

https://github.com/blueimp/JavaScript-Canvas-to-Blob

Ответ 5

Слишком плохо, что эта функция не дальше, но приятно знать ее статус (спасибо Simon).

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