[whatwg] Proposal: ImageData constructor or factory method with preexisting data

Kenneth Russell kbr at google.com
Tue Mar 12 10:50:23 PDT 2013

It should simply reference the Uint8ClampedArray, not copy it or do
anything else esoteric. The only way to display an ImageData in the 2D
canvas context is via the putImageData API. I am not proposing
changing those semantics.


On Mon, Mar 11, 2013 at 5:00 PM, Rik Cabanier <cabanier at gmail.com> wrote:
> Do you expect that createImageData creates an internal copy of the
> Uint8ClampedArray object or is it live?
> On Mon, Mar 11, 2013 at 4:28 PM, Kenneth Russell <kbr at google.com> wrote:
>> It would be useful to be able to create an ImageData [1] object with
>> preexisting data. The main use case is to display arbitrary data in
>> the 2D canvas context with no data copies.
>> Proposed IDL:
>> [NoInterfaceObject]
>> interface ImageDataFactories {
>>   ImageData createImageData(Uint8ClampedArray data, double sw, double sh);
>> };
>> Window implements ImageDataFactories;
>> WorkerGlobalScope implements ImageDataFactories;
>> createImageData would throw an exception if the length of the
>> Uint8ClampedArray was not equal to 4 * floor(sw) * floor(sh), or at
>> least, if the length of the array was less than this value. (Similar
>> wording would be used to that of CanvasRenderingContext2D's
>> createImageData.)
>> I don't think it is necessary to provide a createImageDataHD in this
>> interface. The caller will know the devicePixelRatio and determine
>> whether to generate high-DPI data.
>> [1]
>> http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#imagedata
>> Comments?
>> Thanks,
>> -Ken

More information about the whatwg mailing list