diff --git a/src/lime/_internal/graphics/ImageCanvasUtil.hx b/src/lime/_internal/graphics/ImageCanvasUtil.hx index 04f6de494a..bec048744e 100644 --- a/src/lime/_internal/graphics/ImageCanvasUtil.hx +++ b/src/lime/_internal/graphics/ImageCanvasUtil.hx @@ -192,7 +192,7 @@ class ImageCanvasUtil buffer.__srcCanvas.setAttribute("moz-opaque", "true"); } - buffer.__srcContext = buffer.__srcCanvas.getContext("2d", {alpha: image.transparent}); + buffer.__srcContext = buffer.__srcCanvas.getContext("2d", {alpha: image.transparent, willReadFrequently: image.willReadFrequently}); } #end } diff --git a/src/lime/graphics/Image.hx b/src/lime/graphics/Image.hx index 79c79ac326..9e579ec8a7 100644 --- a/src/lime/graphics/Image.hx +++ b/src/lime/graphics/Image.hx @@ -176,6 +176,18 @@ class Image **/ public var width:Int; + #if (js && html5) + /** + Whether this image should be rendered on the CPU. This is slower, but speeds up operations + like `copyPixels()` that read from the image. Always set this value immediately after + constructing the image, before calling `ImageCanvasUtil.convertToCanvas()`. + + To use this with `openfl.display.BitmapData`, create an instance with `fillColor` set to 0, + then immediately set `bitmapData.image.willReadFrequently = true`. + **/ + @:noCompletion public var willReadFrequently:Bool = false; + #end + /** A convenience property, unused internally, which may be helpful for different renderer implementations