Flutter offers a choice of two renderers on the web:

HTML: this renderer uses a combination of HTML,
CSS, Canvas 2D, and SVG to render UI.
It uses the <img> element to render images.

CanvasKit: this renderer uses WebGL to render UI,
and therefore requires
access to the pixels of the image.

Because the HTML renderer uses the <img>
element it can display images from
arbitrary sources. However,
this places the following limitations on what you
can do with them:

Limited support for Image.toByteData.

No support for OffsetLayer.toImage and
Scene.toImage.

No access to frame data in animated images
(Codec.getNextFrame,
frameCount is always 1, repetitionCount is always 0).

No support for ImageShader.

Limited support for shader effects that can be applied to images.