W3C home > Mailing lists > Public > whatwg@whatwg.org > March 2015

Re: [whatwg] Canvas image to blob/dataurl within Worker

From: Rik Cabanier <cabanier@gmail.com>
Date: Sat, 21 Mar 2015 11:16:31 -0700
Message-ID: <CAGN7qDBwajRxjF5G3JFjxSiQjxccSFUq8e5fSkru85adbttTyg@mail.gmail.com>
To: Ashley Gullen <ashley@scirra.com>
Cc: WHATWG <whatwg@whatwg.org>, Ian Hickson <ian@hixie.ch>, Jake Archibald <jaffathecake@gmail.com>, Robert O'Callahan <robert@ocallahan.org>
On Sat, Mar 21, 2015 at 6:21 AM, Ashley Gullen <ashley@scirra.com> wrote:

> Is everyone here aware that currently Google have stated they do not plan
> to implement toBlob?:
> https://code.google.com/p/chromium/issues/detail?id=67587
>
> IMO this is the wrong call. We should be favouring blobs over data URLs
> since they are more efficient (no size bloat, can be requested async like
> other network resources, no need to copy round very large strings).
>

Justin is worried that in order to make this asynchronous, Chrome has to
create a snapshot of the canvas bits which is slow if it resides on the GPU.
Of course, his workaround to use getImageData is just as slow since it has
to do the same operation.

To alleviate this, I have 2 proposals:
- After calling toBlob, the canvas is read-only until the promise is
fulfilled
- If the user changes the canvas after calling toBlob, the promise is
cancelled.

Maybe we should only allow 1 outstanding toBlob per canvas element too.

I made a small code example of toBlob here:
http://codepen.io/adobe/full/raoZdQ/
It works smoothly on my mac and pc laptop, but really janky on my PC
desktop.


>
> On 21 March 2015 at 11:19, Jake Archibald <jaffathecake@gmail.com> wrote:
>
>> I'd rather we did that by introducing promises to HTMLCanvasElement.
>> Returning a promise from toBlob is easy, making the callback arg optional
>> by checking the type of the first arg is hacky but possible (and is done
>> in
>> js libs).
>>
>> On Sat, 21 Mar 2015 10:56 Robert O'Callahan <robert@ocallahan.org> wrote:
>>
>> > On Sat, Mar 21, 2015 at 5:45 PM, Rik Cabanier <cabanier@gmail.com>
>> wrote:
>> >
>> >> Ah, OK. I thought we were changing it for both cases. This will cause a
>> >> lot
>> >> of confusion...
>> >>
>> >
>> > If we want to keep HTMLCanvasElement and WorkerCanvas in sync, we can.
>> >
>> > Rob
>> > --
>> > oIo otoeololo oyooouo otohoaoto oaonoyooonoeo owohooo oioso oaonogoroyo
>> > owoiotoho oao oboroootohoeoro oooro osoiosotoeoro owoiololo oboeo
>> > osouobojoeocoto otooo ojouodogomoeonoto.o oAogoaoiono,o oaonoyooonoeo
>> > owohooo
>> > osoaoyoso otooo oao oboroootohoeoro oooro osoiosotoeoro,o
>> o‘oRoaocoao,o’o
>> > oioso
>> > oaonosowoeoroaoboloeo otooo otohoeo ocooouoroto.o oAonodo oaonoyooonoeo
>> > owohooo
>> > osoaoyoso,o o‘oYooouo ofooooolo!o’o owoiololo oboeo oiono odoaonogoeoro
>> > ooofo
>> > otohoeo ofoioroeo ooofo ohoeololo.
>> >
>>
>
>
Received on Saturday, 21 March 2015 18:16:57 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 17:00:29 UTC