1SkImage Reference 2=== 3 4# <a name="Image"></a> Image 5 6## <a name="Overview"></a> Overview 7 8## <a name="Subtopics"></a> Subtopics 9 10| name | description | 11| --- | --- | 12| <a href="#Classes_and_Structs">Classes and Structs</a> | embedded struct and class members | 13| Constants | enum and enum class, const values | 14| <a href="#Constructors">Constructors</a> | functions that construct <a href="SkImage_Reference#SkImage">SkImage</a> | 15| <a href="#Member_Functions">Member Functions</a> | static functions and member methods | 16| <a href="#Related_Functions">Related Functions</a> | similar methods grouped together | 17 18# <a name="SkImage"></a> Class SkImage 19<a href="#Image">Image</a> describes a two dimensional array of pixels to draw. The pixels may be 20unencoded in a <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>, encoded in a <a href="undocumented#Picture">Picture</a> or compressed data stream, 21or located in GPU memory as a <a href="undocumented#GPU_Texture">GPU Texture</a>. 22 23<a href="#Image">Image</a> cannot be modified after it is created. <a href="#Image">Image</a> may allocate additional 24storage as needed; for instance, an encoded <a href="#Image">Image</a> may decode when drawn. 25 26<a href="#Image">Image</a> width and height are greater than zero. Creating an <a href="#Image">Image</a> with zero width 27or height returns <a href="#Image">Image</a> equal to nullptr. 28 29<a href="#Image">Image</a> may be created from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, <a href="SkSurface_Reference#Surface">Surface</a>, <a href="undocumented#Picture">Picture</a>, encoded streams, 30<a href="undocumented#GPU_Texture">GPU Texture</a>, <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data, or hardware buffer. Encoded streams supported 31include BMP, GIF, HEIF, ICO, JPEG, PNG, WBMP, WebP. Supported encodings details 32vary with platform. 33 34## <a name="Raster_Image"></a> Raster Image 35 36<a href="SkImage_Reference#Raster_Image">Raster Image</a> pixels are unencoded in a <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>. These pixels may be read 37directly and in most cases written to, although edited pixels may not be drawn 38if <a href="#Image">Image</a> has been copied internally. 39 40## <a name="Texture_Image"></a> Texture Image 41 42<a href="#Texture_Image">Texture Image</a> are located on GPU and pixels are not accessible. <a href="#Texture_Image">Texture Image</a> 43are allocated optimally for best performance. <a href="SkImage_Reference#Raster_Image">Raster Image</a> may 44be drawn to <a href="undocumented#GPU_Surface">GPU Surface</a>, but pixels are uploaded from CPU to GPU downgrading 45performance. 46 47## <a name="Lazy_Image"></a> Lazy Image 48 49<a href="#Lazy_Image">Lazy Image</a> defer allocating buffer for <a href="#Image">Image</a> pixels and decoding stream until 50<a href="#Image">Image</a> is drawn. <a href="#Lazy_Image">Lazy Image</a> caches result if possible to speed up repeated 51drawing. 52 53## <a name="Related_Functions"></a> Related Functions 54 55| name | description | 56| --- | --- | 57| <a href="#Lazy_Image">Lazy Image</a> | deferred pixel buffer | 58| <a href="SkImage_Reference#Raster_Image">Raster Image</a> | pixels unencoded in <a href="undocumented#Raster_Bitmap">Raster Bitmap</a> | 59| <a href="#Texture_Image">Texture Image</a> | pixels located on GPU | 60 61## <a name="Classes_and_Structs"></a> Classes and Structs 62 63| name | description | 64| --- | --- | 65| <a href="#SkImage_DeferredTextureImageUsageParams">DeferredTextureImageUsageParams</a> | to be deprecated | 66 67## <a name="Constructors"></a> Constructors 68 69| name | description | 70| --- | --- | 71| <a href="#SkImage_MakeBackendTextureFromSkImage">MakeBackendTextureFromSkImage</a> | Creates <a href="undocumented#GPU_Texture">GPU Texture</a> from <a href="#Image">Image</a>. | 72| <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data, and uploads to GPU. | 73| <a href="#SkImage_MakeCrossContextFromPixmap">MakeCrossContextFromPixmap</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, and uploads to GPU. | 74| <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | Creates <a href="#Image">Image</a> from Android hardware buffer. | 75| <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed internally. | 76| <a href="#SkImage_MakeFromBitmap">MakeFromBitmap</a> | Creates <a href="#Image">Image</a> from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, sharing or copying pixels. | 77| <a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> | To be deprecated. | 78| <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data. | 79| <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> | Creates <a href="#Image">Image</a> from a stream of data. | 80| <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in two planes. | 81| <a href="#SkImage_MakeFromPicture">MakeFromPicture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#Picture">Picture</a>. | 82| <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, with release. | 83| <a href="#SkImage_MakeFromTexture">MakeFromTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed externally. | 84| <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in three planes. | 85| <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a> and copied pixels. | 86| <a href="#SkImage_MakeRasterData">MakeRasterData</a> | Creates <a href="#Image">Image</a> from <a href="#Info">Image Info</a> and shared pixels. | 87| <a href="#SkImage_makeColorSpace">makeColorSpace</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 88| <a href="#SkImage_makeNonTextureImage">makeNonTextureImage</a> | Creates <a href="#Image">Image</a> without dependency on <a href="undocumented#GPU_Texture">GPU Texture</a>. | 89| <a href="#SkImage_makeRasterImage">makeRasterImage</a> | Creates <a href="#Image">Image</a> compatible with <a href="undocumented#Raster_Surface">Raster Surface</a> if possible. | 90| <a href="#SkImage_makeShader">makeShader</a> | Creates <a href="undocumented#Shader">Shader</a>, <a href="SkPaint_Reference#Paint">Paint</a> element that can tile <a href="#Image">Image</a>. | 91| <a href="#SkImage_makeSubset">makeSubset</a> | Creates <a href="#Image">Image</a> containing part of original. | 92| <a href="#SkImage_makeTextureImage">makeTextureImage</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 93| <a href="#SkImage_makeWithFilter">makeWithFilter</a> | Creates filtered, clipped <a href="#Image">Image</a>. | 94 95## <a name="Member_Functions"></a> Member Functions 96 97| name | description | 98| --- | --- | 99| <a href="#SkImage_MakeBackendTextureFromSkImage">MakeBackendTextureFromSkImage</a> | Creates <a href="undocumented#GPU_Texture">GPU Texture</a> from <a href="#Image">Image</a>. | 100| <a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data, and uploads to GPU. | 101| <a href="#SkImage_MakeCrossContextFromPixmap">MakeCrossContextFromPixmap</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, and uploads to GPU. | 102| <a href="#SkImage_MakeFromAHardwareBuffer">MakeFromAHardwareBuffer</a> | Creates <a href="#Image">Image</a> from Android hardware buffer. | 103| <a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed internally. | 104| <a href="#SkImage_MakeFromBitmap">MakeFromBitmap</a> | Creates <a href="#Image">Image</a> from <a href="SkBitmap_Reference#Bitmap">Bitmap</a>, sharing or copying pixels. | 105| <a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> | To be deprecated. | 106| <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> | Creates <a href="#Image">Image</a> from encoded data. | 107| <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> | Creates <a href="#Image">Image</a> from a stream of data. | 108| <a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in two planes. | 109| <a href="#SkImage_MakeFromPicture">MakeFromPicture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#Picture">Picture</a>. | 110| <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a>, with release. | 111| <a href="#SkImage_MakeFromTexture">MakeFromTexture</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a>, managed externally. | 112| <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a> | Creates <a href="#Image">Image</a> from <a href="undocumented#YUV_ColorSpace">YUV ColorSpace</a> data in three planes. | 113| <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> | Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a> and copied pixels. | 114| <a href="#SkImage_MakeRasterData">MakeRasterData</a> | Creates <a href="#Image">Image</a> from <a href="#Info">Image Info</a> and shared pixels. | 115| <a href="#SkImage_alphaType">alphaType</a> | Returns <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>. | 116| <a href="#SkImage_asLegacyBitmap">asLegacyBitmap</a> | Returns as <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>. | 117| <a href="#SkImage_bounds">bounds</a> | Returns <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> as Rectangle. | 118| <a href="#SkImage_colorSpace">colorSpace</a> | Returns <a href="undocumented#Color_Space">Color Space</a>. | 119| <a href="#SkImage_dimensions">dimensions</a> | Returns <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a>. | 120| <a href="#SkImage_encodeToData">encodeToData</a> | Returns encoded <a href="#Image">Image</a> as <a href="undocumented#SkData">SkData</a>. | 121| <a href="#SkImage_getDeferredTextureImageData">getDeferredTextureImageData</a> | To be deprecated. | 122| <a href="#SkImage_getTexture">getTexture</a> | Deprecated. | 123| <a href="#SkImage_getTextureHandle">getTextureHandle</a> | Returns GPU reference to <a href="#Image">Image</a> as texture. | 124| <a href="#SkImage_height">height</a> | Returns pixel row count. | 125| <a href="#SkImage_isAlphaOnly">isAlphaOnly</a> | Returns if pixels represent a transparency mask. | 126| <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> | Returns if <a href="#Image">Image</a> is created as needed. | 127| <a href="#SkImage_isOpaque">isOpaque</a> | Returns if <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>. | 128| <a href="#SkImage_isTextureBacked">isTextureBacked</a> | Returns if <a href="#Image">Image</a> was created from <a href="undocumented#GPU_Texture">GPU Texture</a>. | 129| <a href="#SkImage_isValid">isValid</a> | Returns if <a href="#Image">Image</a> can draw to <a href="undocumented#Raster_Surface">Raster Surface</a> or <a href="undocumented#GPU_Context">GPU Context</a>. | 130| <a href="#SkImage_makeColorSpace">makeColorSpace</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 131| <a href="#SkImage_makeNonTextureImage">makeNonTextureImage</a> | Creates <a href="#Image">Image</a> without dependency on <a href="undocumented#GPU_Texture">GPU Texture</a>. | 132| <a href="#SkImage_makeRasterImage">makeRasterImage</a> | Creates <a href="#Image">Image</a> compatible with <a href="undocumented#Raster_Surface">Raster Surface</a> if possible. | 133| <a href="#SkImage_makeShader">makeShader</a> | Creates <a href="undocumented#Shader">Shader</a>, <a href="SkPaint_Reference#Paint">Paint</a> element that can tile <a href="#Image">Image</a>. | 134| <a href="#SkImage_makeSubset">makeSubset</a> | Creates <a href="#Image">Image</a> containing part of original. | 135| <a href="#SkImage_makeTextureImage">makeTextureImage</a> | Creates <a href="#Image">Image</a> matching <a href="undocumented#Color_Space">Color Space</a> if possible. | 136| <a href="#SkImage_makeWithFilter">makeWithFilter</a> | Creates filtered, clipped <a href="#Image">Image</a>. | 137| <a href="#SkImage_peekPixels">peekPixels</a> | Returns <a href="SkPixmap_Reference#Pixmap">Pixmap</a> if possible. | 138| <a href="#SkImage_readPixels">readPixels</a> | Copies and converts pixels. | 139| <a href="#SkImage_refColorSpace">refColorSpace</a> | Returns <a href="#Info">Image Info</a> <a href="undocumented#Color_Space">Color Space</a>. | 140| <a href="#SkImage_refEncodedData">refEncodedData</a> | Returns <a href="#Image">Image</a> encoded in <a href="undocumented#SkData">SkData</a> if present. | 141| <a href="#SkImage_scalePixels">scalePixels</a> | Scales and converts one <a href="#Image">Image</a> to another. | 142| <a href="#SkImage_toString">toString</a> | Converts <a href="#Image">Image</a> to machine readable form. | 143| <a href="#SkImage_uniqueID">uniqueID</a> | Identifier for <a href="#Image">Image</a>. | 144| <a href="#SkImage_width">width</a> | Returns pixel column count. | 145 146<a name="SkImage_MakeRasterCopy"></a> 147## MakeRasterCopy 148 149<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 150static sk_sp<SkImage> MakeRasterCopy(const SkPixmap& pixmap) 151</pre> 152 153Creates <a href="#Image">Image</a> from <a href="SkPixmap_Reference#Pixmap">Pixmap</a> and copy of pixels. Since pixels are copied, <a href="SkPixmap_Reference#Pixmap">Pixmap</a> 154pixels may be modified or deleted without affecting <a href="#Image">Image</a>. 155 156<a href="#Image">Image</a> is returned if <a href="SkPixmap_Reference#Pixmap">Pixmap</a> is valid. Valid <a href="SkPixmap_Reference#Pixmap">Pixmap</a> parameters include: 157dimensions are greater than zero; 158each dimension fits in 29 bits; 159<a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 160row bytes are large enough to hold one row of pixels; 161pixel address is not nullptr. 162 163### Parameters 164 165<table> <tr> <td><a name="SkImage_MakeRasterCopy_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 166<a href="#Info">Image Info</a>, pixel address, and row bytes</td> 167 </tr> 168</table> 169 170### Return Value 171 172copy of <a href="SkPixmap_Reference#Pixmap">Pixmap</a> pixels, or nullptr 173 174### Example 175 176<div><fiddle-embed name="513afec5795a9504ebf6af5373d16b6b"><div>Draw a five by five bitmap, and draw a copy in an <a href="#Image">Image</a>. Editing the <a href="#SkImage_MakeRasterCopy_pixmap">pixmap</a> 177alters the bitmap draw, but does not alter the <a href="#Image">Image</a> draw since the <a href="#Image">Image</a> 178contains a copy of the pixels.</div></fiddle-embed></div> 179 180### See Also 181 182<a href="#SkImage_MakeRasterData">MakeRasterData</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> 183 184--- 185 186<a name="SkImage_MakeRasterData"></a> 187## MakeRasterData 188 189<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 190static sk_sp<SkImage> MakeRasterData(const Info& info, sk_sp<SkData> pixels, size_t rowBytes) 191</pre> 192 193Creates <a href="#Image">Image</a> from <a href="#Info">Image Info</a>, sharing <a href="#SkImage_MakeRasterData_pixels">pixels</a>. 194 195<a href="#Image">Image</a> is returned if <a href="#Info">Image Info</a> is valid. Valid <a href="#Info">Image Info</a> parameters include: 196dimensions are greater than zero; 197each dimension fits in 29 bits; 198<a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 199<a href="#SkImage_MakeRasterData_rowBytes">rowBytes</a> are large enough to hold one row of <a href="#SkImage_MakeRasterData_pixels">pixels</a>; 200<a href="#SkImage_MakeRasterData_pixels">pixels</a> is not nullptr, and contains enough data for <a href="#Image">Image</a>. 201 202### Parameters 203 204<table> <tr> <td><a name="SkImage_MakeRasterData_info"> <code><strong>info </strong></code> </a></td> <td> 205contains width, height, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> 206 </tr> <tr> <td><a name="SkImage_MakeRasterData_pixels"> <code><strong>pixels </strong></code> </a></td> <td> 207address or pixel storage</td> 208 </tr> <tr> <td><a name="SkImage_MakeRasterData_rowBytes"> <code><strong>rowBytes </strong></code> </a></td> <td> 209size of pixel row or larger</td> 210 </tr> 211</table> 212 213### Return Value 214 215<a href="#Image">Image</a> sharing <a href="#SkImage_MakeRasterData_pixels">pixels</a>, or nullptr 216 217### Example 218 219<div><fiddle-embed name="367bdf6ee6ef2482eea95d4a9887c9b0"></fiddle-embed></div> 220 221### See Also 222 223<a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> 224 225--- 226 227Caller data passed to <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a>; may be nullptr. 228 229### See Also 230 231<a href="#SkImage_MakeFromRaster">MakeFromRaster</a> <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a> 232 233Function called when <a href="#Image">Image</a> no longer shares pixels. <a href="#SkImage_ReleaseContext">ReleaseContext</a> is 234provided by caller when <a href="#Image">Image</a> is created, and may be nullptr. 235 236### See Also 237 238<a href="#SkImage_ReleaseContext">ReleaseContext</a> <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> 239 240<a name="SkImage_MakeFromRaster"></a> 241## MakeFromRaster 242 243<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 244static sk_sp<SkImage> MakeFromRaster(const SkPixmap& pixmap, RasterReleaseProc rasterReleaseProc, 245 ReleaseContext releaseContext) 246</pre> 247 248Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a>, sharing <a href="SkPixmap_Reference#Pixmap">Pixmap</a> pixels. Pixels must remain valid and 249unchanged until <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> is called. <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> is passed 250<a href="#SkImage_MakeFromRaster_releaseContext">releaseContext</a> when <a href="#Image">Image</a> is deleted or no longer refers to <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> pixels. 251 252Pass nullptr for <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> to share <a href="SkPixmap_Reference#Pixmap">Pixmap</a> without requiring a callback 253when <a href="#Image">Image</a> is released. Pass nullptr for <a href="#SkImage_MakeFromRaster_releaseContext">releaseContext</a> if <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a> 254does not require state. 255 256<a href="#Image">Image</a> is returned if <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> is valid. Valid <a href="SkPixmap_Reference#Pixmap">Pixmap</a> parameters include: 257dimensions are greater than zero; 258each dimension fits in 29 bits; 259<a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 260row bytes are large enough to hold one row of pixels; 261pixel address is not nullptr. 262 263### Parameters 264 265<table> <tr> <td><a name="SkImage_MakeFromRaster_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 266<a href="#Info">Image Info</a>, pixel address, and row bytes</td> 267 </tr> <tr> <td><a name="SkImage_MakeFromRaster_rasterReleaseProc"> <code><strong>rasterReleaseProc </strong></code> </a></td> <td> 268function called when pixels can be released; or nullptr</td> 269 </tr> <tr> <td><a name="SkImage_MakeFromRaster_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> 270state passed to <a href="#SkImage_MakeFromRaster_rasterReleaseProc">rasterReleaseProc</a>; or nullptr</td> 271 </tr> 272</table> 273 274### Return Value 275 276<a href="#Image">Image</a> sharing <a href="#SkImage_MakeFromRaster_pixmap">pixmap</a> 277 278### Example 279 280<div><fiddle-embed name="275356b65d18c8868f4434137350cddc"> 281 282#### Example Output 283 284~~~~ 285before reset: 0 286after reset: 1 287~~~~ 288 289</fiddle-embed></div> 290 291### See Also 292 293<a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> <a href="#SkImage_MakeRasterData">MakeRasterData</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> <a href="#SkImage_RasterReleaseProc">RasterReleaseProc</a> <a href="#SkImage_ReleaseContext">ReleaseContext</a> 294 295--- 296 297<a name="SkImage_MakeFromBitmap"></a> 298## MakeFromBitmap 299 300<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 301static sk_sp<SkImage> MakeFromBitmap(const SkBitmap& bitmap) 302</pre> 303 304Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a>, sharing or copying <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> pixels. If the <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> 305is marked immutable, and its pixel memory is shareable, it may be shared 306instead of copied. 307 308<a href="#Image">Image</a> is returned if <a href="#SkImage_MakeFromBitmap_bitmap">bitmap</a> is valid. Valid <a href="SkBitmap_Reference#Bitmap">Bitmap</a> parameters include: 309dimensions are greater than zero; 310each dimension fits in 29 bits; 311<a href="SkImageInfo_Reference#Color_Type">Color Type</a> and <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> are valid, and <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is not <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>; 312row bytes are large enough to hold one row of pixels; 313pixel address is not nullptr. 314 315### Parameters 316 317<table> <tr> <td><a name="SkImage_MakeFromBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> 318<a href="#Info">Image Info</a>, row bytes, and pixels</td> 319 </tr> 320</table> 321 322### Return Value 323 324created <a href="#Image">Image</a>, or nullptr 325 326### Example 327 328<div><fiddle-embed name="cf2cf53321e4e6a77c2841bfbc0ef707"><div>The first <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is shared; writing to the pixel memory changes the first 329<a href="#Image">Image</a>. 330The second <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is marked immutable, and is copied; writing to the pixel 331memory does not alter the second <a href="#Image">Image</a>.</div></fiddle-embed></div> 332 333### See Also 334 335<a href="#SkImage_MakeFromRaster">MakeFromRaster</a> <a href="#SkImage_MakeRasterCopy">MakeRasterCopy</a> <a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> <a href="#SkImage_MakeRasterData">MakeRasterData</a> 336 337--- 338 339<a name="SkImage_MakeFromGenerator"></a> 340## MakeFromGenerator 341 342<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 343static sk_sp<SkImage> MakeFromGenerator(std::unique_ptr<SkImageGenerator> imageGenerator, 344 const SkIRect* subset = nullptr) 345</pre> 346 347Creates <a href="#Image">Image</a> from data returned by <a href="#SkImage_MakeFromGenerator_imageGenerator">imageGenerator</a>. Generated data is owned by <a href="#Image">Image</a> and may not 348be shared or accessed. 349 350<a href="#SkImage_MakeFromGenerator_subset">subset</a> allows selecting a portion of the full image. Pass nullptr to select the entire image; 351otherwise, <a href="#SkImage_MakeFromGenerator_subset">subset</a> must be contained by image bounds. 352 353<a href="#Image">Image</a> is returned if generator data is valid. Valid data parameters vary by type of data 354and platform. 355 356<a href="#SkImage_MakeFromGenerator_imageGenerator">imageGenerator</a> may wrap <a href="undocumented#Picture">Picture</a> data, codec data, or custom data. 357 358### Parameters 359 360<table> <tr> <td><a name="SkImage_MakeFromGenerator_imageGenerator"> <code><strong>imageGenerator </strong></code> </a></td> <td> 361stock or custom routines to retrieve <a href="#Image">Image</a></td> 362 </tr> <tr> <td><a name="SkImage_MakeFromGenerator_subset"> <code><strong>subset </strong></code> </a></td> <td> 363bounds of returned <a href="#Image">Image</a>; may be nullptr</td> 364 </tr> 365</table> 366 367### Return Value 368 369created <a href="#Image">Image</a>, or nullptr 370 371### Example 372 373<div><fiddle-embed name="c2fec0746f88ca34d7dce59dd9bdef9e"><div>The generator returning <a href="undocumented#Picture">Picture</a> cannot be shared; std::move transfers ownership to generated <a href="#Image">Image</a>.</div></fiddle-embed></div> 374 375### See Also 376 377<a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 378 379--- 380 381<a name="SkImage_MakeFromEncoded"></a> 382## MakeFromEncoded 383 384<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 385static sk_sp<SkImage> MakeFromEncoded(sk_sp<SkData> encoded, const SkIRect* subset = nullptr) 386</pre> 387 388Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data. 389<a href="#SkImage_MakeFromEncoded_subset">subset</a> allows selecting a portion of the full image. Pass nullptr to select the entire image; 390otherwise, <a href="#SkImage_MakeFromEncoded_subset">subset</a> must be contained by image bounds. 391 392<a href="#Image">Image</a> is returned if format of the <a href="#SkImage_MakeFromEncoded_encoded">encoded</a> data is recognized and supported. 393Recognized formats vary by platfrom. 394 395### Parameters 396 397<table> <tr> <td><a name="SkImage_MakeFromEncoded_encoded"> <code><strong>encoded </strong></code> </a></td> <td> 398data of <a href="#Image">Image</a> to decode</td> 399 </tr> <tr> <td><a name="SkImage_MakeFromEncoded_subset"> <code><strong>subset </strong></code> </a></td> <td> 400bounds of returned <a href="#Image">Image</a>; may be nullptr</td> 401 </tr> 402</table> 403 404### Return Value 405 406created <a href="#Image">Image</a>, or nullptr 407 408### Example 409 410<div><fiddle-embed name="894f732ed6409b1f392bc5481421d0e9"></fiddle-embed></div> 411 412### See Also 413 414<a href="#SkImage_MakeFromGenerator">MakeFromGenerator</a> 415 416--- 417 418<a name="SkImage_MakeFromTexture"></a> 419## MakeFromTexture 420 421<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 422static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 423 GrSurfaceOrigin origin, SkAlphaType alphaType, 424 sk_sp<SkColorSpace> colorSpace) 425</pre> 426 427Deprecated. 428 429### Parameters 430 431<table> <tr> <td><a name="SkImage_MakeFromTexture_context"> <code><strong>context </strong></code> </a></td> <td> 432<a href="undocumented#GPU_Context">GPU Context</a></td> 433 </tr> <tr> <td><a name="SkImage_MakeFromTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 434texture residing on GPU</td> 435 </tr> <tr> <td><a name="SkImage_MakeFromTexture_origin"> <code><strong>origin </strong></code> </a></td> <td> 436one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 437 </tr> <tr> <td><a name="SkImage_MakeFromTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 438one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 439<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 440 </tr> <tr> <td><a name="SkImage_MakeFromTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 441range of colors; may be nullptr</td> 442 </tr> 443</table> 444 445### Return Value 446 447created <a href="#Image">Image</a>, or nullptr 448 449--- 450 451<a name="SkImage_MakeFromTexture_2"></a> 452 453<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 454static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 455 GrSurfaceOrigin origin, SkAlphaType alphaType, 456 sk_sp<SkColorSpace> colorSpace, 457 TextureReleaseProc textureReleaseProc, 458 ReleaseContext releaseContext) 459</pre> 460 461Deprecated. 462 463### Parameters 464 465<table> <tr> <td><a name="SkImage_MakeFromTexture_2_context"> <code><strong>context </strong></code> </a></td> <td> 466<a href="undocumented#GPU_Context">GPU Context</a></td> 467 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 468texture residing on GPU</td> 469 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_origin"> <code><strong>origin </strong></code> </a></td> <td> 470one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 471 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 472one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 473<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 474 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 475range of colors; may be nullptr</td> 476 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_textureReleaseProc"> <code><strong>textureReleaseProc </strong></code> </a></td> <td> 477function called when texture can be released</td> 478 </tr> <tr> <td><a name="SkImage_MakeFromTexture_2_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> 479state passed to <a href="#SkImage_MakeFromTexture_2_textureReleaseProc">textureReleaseProc</a></td> 480 </tr> 481</table> 482 483### Return Value 484 485created <a href="#Image">Image</a>, or nullptr 486 487--- 488 489<a name="SkImage_MakeFromTexture_3"></a> 490 491<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 492static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 493 GrSurfaceOrigin origin, SkColorType colorType, 494 SkAlphaType alphaType, sk_sp<SkColorSpace> colorSpace) 495</pre> 496 497Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a> associated with <a href="#SkImage_MakeFromTexture_3_context">context</a>. Caller is responsible for 498managing the lifetime of <a href="undocumented#GPU_Texture">GPU Texture</a>. 499 500<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromTexture_3_backendTexture">backendTexture</a> is recognized and supported. 501Recognized formats vary by GPU back-end. 502 503### Parameters 504 505<table> <tr> <td><a name="SkImage_MakeFromTexture_3_context"> <code><strong>context </strong></code> </a></td> <td> 506<a href="undocumented#GPU_Context">GPU Context</a></td> 507 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 508texture residing on GPU</td> 509 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_origin"> <code><strong>origin </strong></code> </a></td> <td> 510one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 511 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_colorType"> <code><strong>colorType </strong></code> </a></td> <td> 512one of: <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>, 513<a href="SkImageInfo_Reference#SkColorType">kRGB 565 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>, 514<a href="SkImageInfo_Reference#SkColorType">kRGBA 8888 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kBGRA 8888 SkColorType</a>, 515<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kRGBA F16 SkColorType</a></td> 516 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 517one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 518<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 519 </tr> <tr> <td><a name="SkImage_MakeFromTexture_3_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 520range of colors; may be nullptr</td> 521 </tr> 522</table> 523 524### Return Value 525 526created <a href="#Image">Image</a>, or nullptr 527 528### Example 529 530<div><fiddle-embed name="d5e43961a54548f445eece91d517381c" gpu="true"><div>A back-end texture has been created and uploaded to the GPU outside of this example.</div></fiddle-embed></div> 531 532### See Also 533 534<a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a><sup><a href="#SkImage_MakeFromAdoptedTexture_2">[2]</a></sup> <a href="#SkSurface_MakeFromBackendTexture">SkSurface::MakeFromBackendTexture</a><sup><a href="#SkSurface_MakeFromBackendTexture_2">[2]</a></sup> 535 536--- 537 538<a name="SkImage_MakeFromTexture_4"></a> 539 540<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 541static sk_sp<SkImage> MakeFromTexture(GrContext* context, const GrBackendTexture& backendTexture, 542 GrSurfaceOrigin origin, SkColorType colorType, 543 SkAlphaType alphaType, sk_sp<SkColorSpace> colorSpace, 544 TextureReleaseProc textureReleaseProc, 545 ReleaseContext releaseContext) 546</pre> 547 548Creates <a href="#Image">Image</a> from <a href="undocumented#GPU_Texture">GPU Texture</a> associated with <a href="#SkImage_MakeFromTexture_4_context">context</a>. <a href="undocumented#GPU_Texture">GPU Texture</a> must stay 549valid and unchanged until <a href="#SkImage_MakeFromTexture_4_textureReleaseProc">textureReleaseProc</a> is called. <a href="#SkImage_MakeFromTexture_4_textureReleaseProc">textureReleaseProc</a> is 550passed <a href="#SkImage_MakeFromTexture_4_releaseContext">releaseContext</a> when <a href="#Image">Image</a> is deleted or no longer refers to texture. 551 552<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromTexture_4_backendTexture">backendTexture</a> is recognized and supported. 553Recognized formats vary by GPU back-end. 554 555### Parameters 556 557<table> <tr> <td><a name="SkImage_MakeFromTexture_4_context"> <code><strong>context </strong></code> </a></td> <td> 558<a href="undocumented#GPU_Context">GPU Context</a></td> 559 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 560texture residing on GPU</td> 561 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_origin"> <code><strong>origin </strong></code> </a></td> <td> 562one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 563 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_colorType"> <code><strong>colorType </strong></code> </a></td> <td> 564one of: <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>, 565<a href="SkImageInfo_Reference#SkColorType">kRGB 565 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>, 566<a href="SkImageInfo_Reference#SkColorType">kRGBA 8888 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kBGRA 8888 SkColorType</a>, 567<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kRGBA F16 SkColorType</a></td> 568 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 569one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 570<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 571 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 572range of colors; may be nullptr</td> 573 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_textureReleaseProc"> <code><strong>textureReleaseProc </strong></code> </a></td> <td> 574function called when texture can be released</td> 575 </tr> <tr> <td><a name="SkImage_MakeFromTexture_4_releaseContext"> <code><strong>releaseContext </strong></code> </a></td> <td> 576state passed to <a href="#SkImage_MakeFromTexture_4_textureReleaseProc">textureReleaseProc</a></td> 577 </tr> 578</table> 579 580### Return Value 581 582created <a href="#Image">Image</a>, or nullptr 583 584### Example 585 586<div><fiddle-embed name="c7be9423f7c2ef819523ba4d607d17b8" gpu="true"></fiddle-embed></div> 587 588### See Also 589 590<a href="#SkImage_MakeFromAdoptedTexture">MakeFromAdoptedTexture</a><sup><a href="#SkImage_MakeFromAdoptedTexture_2">[2]</a></sup> <a href="#SkSurface_MakeFromBackendTexture">SkSurface::MakeFromBackendTexture</a><sup><a href="#SkSurface_MakeFromBackendTexture_2">[2]</a></sup> 591 592--- 593 594<a name="SkImage_MakeCrossContextFromEncoded"></a> 595## MakeCrossContextFromEncoded 596 597<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 598static sk_sp<SkImage> MakeCrossContextFromEncoded(GrContext* context, sk_sp<SkData> data, 599 bool buildMips, SkColorSpace* dstColorSpace) 600</pre> 601 602Creates <a href="#Image">Image</a> from encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>. <a href="#Image">Image</a> is uploaded to GPU back-end using <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a>. 603 604Created <a href="#Image">Image</a> is available to other GPU contexts, and is available across thread 605boundaries. All contexts must be in the same GPU_Share_Group, or otherwise 606share resources. 607 608When <a href="#Image">Image</a> is no longer referenced, <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> releases texture memory 609asynchronously. 610 611<a href="undocumented#Texture">Texture</a> decoded from <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a> is uploaded to match <a href="SkSurface_Reference#Surface">Surface</a> created with 612<a href="#SkImage_MakeCrossContextFromEncoded_dstColorSpace">dstColorSpace</a>. <a href="undocumented#Color_Space">Color Space</a> of <a href="#Image">Image</a> is determined by encoded <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a>. 613 614<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeCrossContextFromEncoded_data">data</a> is recognized and supported, and if <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> 615supports moving resources. Recognized formats vary by platform and GPU back-end. 616 617<a href="#Image">Image</a> is returned using <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> if <a href="#SkImage_MakeCrossContextFromEncoded_context">context</a> is nullptr or does not support 618moving resources between contexts. 619 620### Parameters 621 622<table> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_context"> <code><strong>context </strong></code> </a></td> <td> 623<a href="undocumented#GPU_Context">GPU Context</a></td> 624 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_data"> <code><strong>data </strong></code> </a></td> <td> 625<a href="#Image">Image</a> to decode</td> 626 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_buildMips"> <code><strong>buildMips </strong></code> </a></td> <td> 627create <a href="#Image">Image</a> as <a href="undocumented#Mip_Map">Mip Map</a> if true</td> 628 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromEncoded_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 629range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td> 630 </tr> 631</table> 632 633### Return Value 634 635created <a href="#Image">Image</a>, or nullptr 636 637### Example 638 639<div><fiddle-embed name="069c7b116479e3ca46f953f07dcbdd36"></fiddle-embed></div> 640 641### See Also 642 643<a href="#SkImage_MakeCrossContextFromPixmap">MakeCrossContextFromPixmap</a> 644 645--- 646 647<a name="SkImage_MakeCrossContextFromPixmap"></a> 648## MakeCrossContextFromPixmap 649 650<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 651static sk_sp<SkImage> MakeCrossContextFromPixmap(GrContext* context, const SkPixmap& pixmap, 652 bool buildMips, SkColorSpace* dstColorSpace) 653</pre> 654 655Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a>. <a href="#Image">Image</a> is uploaded to GPU back-end using <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a>. 656 657Created <a href="#Image">Image</a> is available to other GPU contexts, and is available across thread 658boundaries. All contexts must be in the same GPU_Share_Group, or otherwise 659share resources. 660 661When <a href="#Image">Image</a> is no longer referenced, <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> releases texture memory 662asynchronously. 663 664<a href="undocumented#Texture">Texture</a> created from <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a> is uploaded to match <a href="SkSurface_Reference#Surface">Surface</a> created with 665<a href="#SkImage_MakeCrossContextFromPixmap_dstColorSpace">dstColorSpace</a>. <a href="undocumented#Color_Space">Color Space</a> of <a href="#Image">Image</a> is determined by <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a>.<a href="#SkImage_colorSpace">colorSpace</a>. 666 667<a href="#Image">Image</a> is returned referring to GPU back-end if <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> is not nullptr, 668format of data is recognized and supported, and if <a href="#SkImage_MakeCrossContextFromPixmap_context">context</a> supports moving 669resources between contexts. Otherwise, <a href="#SkImage_MakeCrossContextFromPixmap_pixmap">pixmap</a> pixel data is copied and <a href="#Image">Image</a> 670as returned in raster format if possible; nullptr may be returned. 671Recognized GPU formats vary by platform and GPU back-end. 672 673### Parameters 674 675<table> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_context"> <code><strong>context </strong></code> </a></td> <td> 676<a href="undocumented#GPU_Context">GPU Context</a></td> 677 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 678<a href="#Info">Image Info</a>, pixel address, and row bytes</td> 679 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_buildMips"> <code><strong>buildMips </strong></code> </a></td> <td> 680create <a href="#Image">Image</a> as <a href="undocumented#Mip_Map">Mip Map</a> if true</td> 681 </tr> <tr> <td><a name="SkImage_MakeCrossContextFromPixmap_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 682range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td> 683 </tr> 684</table> 685 686### Return Value 687 688created <a href="#Image">Image</a>, or nullptr 689 690### Example 691 692<div><fiddle-embed name="45bca8747b8f49b5be34b520897ef048"></fiddle-embed></div> 693 694### See Also 695 696<a href="#SkImage_MakeCrossContextFromEncoded">MakeCrossContextFromEncoded</a> 697 698--- 699 700<a name="SkImage_MakeFromAdoptedTexture"></a> 701## MakeFromAdoptedTexture 702 703<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 704static sk_sp<SkImage> MakeFromAdoptedTexture(GrContext* context, 705 const GrBackendTexture& backendTexture, 706 GrSurfaceOrigin surfaceOrigin, 707 SkAlphaType alphaType = kPremul_SkAlphaType, 708 sk_sp<SkColorSpace> colorSpace = nullptr) 709</pre> 710 711Deprecated. 712 713### Parameters 714 715<table> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_context"> <code><strong>context </strong></code> </a></td> <td> 716<a href="undocumented#GPU_Context">GPU Context</a></td> 717 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 718texture residing on GPU</td> 719 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 720one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 721 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 722one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 723<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 724 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 725range of colors; may be nullptr</td> 726 </tr> 727</table> 728 729### Return Value 730 731created <a href="#Image">Image</a>, or nullptr 732 733### See Also 734 735<a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 736 737--- 738 739<a name="SkImage_MakeFromAdoptedTexture_2"></a> 740 741<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 742static sk_sp<SkImage> MakeFromAdoptedTexture(GrContext* context, 743 const GrBackendTexture& backendTexture, 744 GrSurfaceOrigin surfaceOrigin, SkColorType colorType, 745 SkAlphaType alphaType = kPremul_SkAlphaType, 746 sk_sp<SkColorSpace> colorSpace = nullptr) 747</pre> 748 749Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromAdoptedTexture_2_backendTexture">backendTexture</a> associated with <a href="#SkImage_MakeFromAdoptedTexture_2_context">context</a>. <a href="#SkImage_MakeFromAdoptedTexture_2_backendTexture">backendTexture</a> and 750returned <a href="#Image">Image</a> are managed internally, and are released when no longer needed. 751 752<a href="#Image">Image</a> is returned if format of <a href="#SkImage_MakeFromAdoptedTexture_2_backendTexture">backendTexture</a> is recognized and supported. 753Recognized formats vary by GPU back-end. 754 755### Parameters 756 757<table> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_context"> <code><strong>context </strong></code> </a></td> <td> 758<a href="undocumented#GPU_Context">GPU Context</a></td> 759 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 760texture residing on GPU</td> 761 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 762one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 763 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_colorType"> <code><strong>colorType </strong></code> </a></td> <td> 764one of: <a href="SkImageInfo_Reference#SkColorType">kUnknown SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>, 765<a href="SkImageInfo_Reference#SkColorType">kRGB 565 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>, 766<a href="SkImageInfo_Reference#SkColorType">kRGBA 8888 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kBGRA 8888 SkColorType</a>, 767<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="SkImageInfo_Reference#SkColorType">kRGBA F16 SkColorType</a></td> 768 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 769one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 770<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 771 </tr> <tr> <td><a name="SkImage_MakeFromAdoptedTexture_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 772range of colors; may be nullptr</td> 773 </tr> 774</table> 775 776### Return Value 777 778created <a href="#Image">Image</a>, or nullptr 779 780### Example 781 782<div><fiddle-embed name="b07964ec9c5c8a6febba805f1cf4d071" gpu="true"></fiddle-embed></div> 783 784### See Also 785 786<a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 787 788--- 789 790<a name="SkImage_MakeFromYUVTexturesCopy"></a> 791## MakeFromYUVTexturesCopy 792 793<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 794static sk_sp<SkImage> MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 795 const GrBackendObject yuvTextureHandles[3], 796 const SkISize yuvSizes[3], 797 GrSurfaceOrigin surfaceOrigin, 798 sk_sp<SkColorSpace> colorSpace = nullptr) 799</pre> 800 801Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on GPU. 802<a href="#SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles">yuvTextureHandles</a> contain pixels for YUV planes of <a href="#Image">Image</a>. 803<a href="#SkImage_MakeFromYUVTexturesCopy_yuvSizes">yuvSizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 804zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 805<a href="#SkImage_MakeFromYUVTexturesCopy_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 806 807### Parameters 808 809<table> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td> 810<a href="undocumented#GPU_Context">GPU Context</a></td> 811 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 812one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 813<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 814 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td> 815array of YUV textures on GPU</td> 816 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td> 817dimensions of YUV textures</td> 818 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 819one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 820 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 821range of colors; may be nullptr</td> 822 </tr> 823</table> 824 825### Return Value 826 827created <a href="#Image">Image</a>, or nullptr 828 829### See Also 830 831<a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a><sup><a href="#SkImage_MakeFromNV12TexturesCopy_2">[2]</a></sup> 832 833--- 834 835<a name="SkImage_MakeFromYUVTexturesCopy_2"></a> 836 837<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 838static sk_sp<SkImage> MakeFromYUVTexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 839 const GrBackendTexture yuvTextureHandles[3], 840 const SkISize yuvSizes[3], 841 GrSurfaceOrigin surfaceOrigin, 842 sk_sp<SkColorSpace> colorSpace = nullptr) 843</pre> 844 845Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a>, an array of textures on GPU. 846<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles">yuvTextureHandles</a> contain pixels for YUV planes of <a href="#Image">Image</a>. 847<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvSizes">yuvSizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 848zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 849<a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvSizes">yuvSizes</a>[0]. <a href="#SkImage_MakeFromYUVTexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 850 851### Parameters 852 853<table> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_context"> <code><strong>context </strong></code> </a></td> <td> 854<a href="undocumented#GPU_Context">GPU Context</a></td> 855 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 856one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 857<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 858 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvTextureHandles"> <code><strong>yuvTextureHandles </strong></code> </a></td> <td> 859array of YUV textures on GPU</td> 860 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_yuvSizes"> <code><strong>yuvSizes </strong></code> </a></td> <td> 861dimensions of YUV textures</td> 862 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 863one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 864 </tr> <tr> <td><a name="SkImage_MakeFromYUVTexturesCopy_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 865range of colors; may be nullptr</td> 866 </tr> 867</table> 868 869### Return Value 870 871created <a href="#Image">Image</a>, or nullptr 872 873### See Also 874 875<a href="#SkImage_MakeFromNV12TexturesCopy">MakeFromNV12TexturesCopy</a><sup><a href="#SkImage_MakeFromNV12TexturesCopy_2">[2]</a></sup> 876 877--- 878 879<a name="SkImage_MakeFromNV12TexturesCopy"></a> 880## MakeFromNV12TexturesCopy 881 882<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 883static sk_sp<SkImage> MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 884 const GrBackendObject nv12TextureHandles[2], 885 const SkISize nv12Sizes[2], 886 GrSurfaceOrigin surfaceOrigin, 887 sk_sp<SkColorSpace> colorSpace = nullptr) 888</pre> 889 890Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on GPU. 891<a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for YUV_Component_Y plane. 892<a href="#SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for YUV_Component_U plane, 893followed by pixels for YUV_Component_V plane. 894<a href="#SkImage_MakeFromNV12TexturesCopy_nv12Sizes">nv12Sizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 895zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 896<a href="#SkImage_MakeFromNV12TexturesCopy_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 897 898### Parameters 899 900<table> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_context"> <code><strong>context </strong></code> </a></td> <td> 901<a href="undocumented#GPU_Context">GPU Context</a></td> 902 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 903one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 904<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 905 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td> 906array of YUV textures on GPU</td> 907 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td> 908dimensions of YUV textures</td> 909 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 910one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 911 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 912range of colors; may be nullptr</td> 913 </tr> 914</table> 915 916### Return Value 917 918created <a href="#Image">Image</a>, or nullptr 919 920### See Also 921 922<a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 923 924--- 925 926<a name="SkImage_MakeFromNV12TexturesCopy_2"></a> 927 928<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 929static sk_sp<SkImage> MakeFromNV12TexturesCopy(GrContext* context, SkYUVColorSpace yuvColorSpace, 930 const GrBackendTexture nv12TextureHandles[2], 931 const SkISize nv12Sizes[2], 932 GrSurfaceOrigin surfaceOrigin, 933 sk_sp<SkColorSpace> colorSpace = nullptr) 934</pre> 935 936Creates <a href="#Image">Image</a> from copy of <a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>, an array of textures on GPU. 937<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[0] contains pixels for YUV_Component_Y plane. 938<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles">nv12TextureHandles</a>[1] contains pixels for YUV_Component_U plane, 939followed by pixels for YUV_Component_V plane. 940<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes">nv12Sizes</a> conain dimensions for each pixel plane. Dimensions must be greater than 941zero but may differ from plane to plane. Returned <a href="#Image">Image</a> has the dimensions 942<a href="#SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes">nv12Sizes</a>[0]. <a href="#SkImage_MakeFromNV12TexturesCopy_2_yuvColorSpace">yuvColorSpace</a> describes how YUV colors convert to RGB colors. 943 944### Parameters 945 946<table> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_context"> <code><strong>context </strong></code> </a></td> <td> 947<a href="undocumented#GPU_Context">GPU Context</a></td> 948 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_yuvColorSpace"> <code><strong>yuvColorSpace </strong></code> </a></td> <td> 949one of: <a href="SkImageInfo_Reference#SkYUVColorSpace">kJPEG SkYUVColorSpace</a>, <a href="SkImageInfo_Reference#SkYUVColorSpace">kRec601 SkYUVColorSpace</a>, 950<a href="SkImageInfo_Reference#SkYUVColorSpace">kRec709 SkYUVColorSpace</a></td> 951 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12TextureHandles"> <code><strong>nv12TextureHandles </strong></code> </a></td> <td> 952array of YUV textures on GPU</td> 953 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_nv12Sizes"> <code><strong>nv12Sizes </strong></code> </a></td> <td> 954dimensions of YUV textures</td> 955 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_surfaceOrigin"> <code><strong>surfaceOrigin </strong></code> </a></td> <td> 956one of: <a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>, <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a></td> 957 </tr> <tr> <td><a name="SkImage_MakeFromNV12TexturesCopy_2_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 958range of colors; may be nullptr</td> 959 </tr> 960</table> 961 962### Return Value 963 964created <a href="#Image">Image</a>, or nullptr 965 966### See Also 967 968<a href="#SkImage_MakeFromYUVTexturesCopy">MakeFromYUVTexturesCopy</a><sup><a href="#SkImage_MakeFromYUVTexturesCopy_2">[2]</a></sup> 969 970--- 971 972## <a name="SkImage_BitDepth"></a> Enum SkImage::BitDepth 973 974<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 975enum class <a href="#SkImage_BitDepth">BitDepth</a> { 976<a href="#SkImage_kU8">kU8</a>, 977<a href="#SkImage_kF16">kF16</a>, 978};</pre> 979 980### Constants 981 982<table> 983 <tr> 984 <td><a name="SkImage_kU8"> <code><strong>SkImage::kU8 </strong></code> </a></td><td>0</td><td>Use 8 bits per <a href="#ARGB">Color ARGB</a> component using unsigned integer format.</td> 985 </tr> 986 <tr> 987 <td><a name="SkImage_kF16"> <code><strong>SkImage::kF16 </strong></code> </a></td><td>1</td><td>Use 16 bits per <a href="#ARGB">Color ARGB</a> component using half-precision floating point format.</td> 988 </tr> 989</table> 990 991### See Also 992 993<a href="#SkImage_MakeFromPicture">MakeFromPicture</a> 994 995 996 997<a name="SkImage_MakeFromPicture"></a> 998## MakeFromPicture 999 1000<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1001static sk_sp<SkImage> MakeFromPicture(sk_sp<SkPicture> picture, const SkISize& dimensions, 1002 const SkMatrix* matrix, const SkPaint* paint, 1003 BitDepth bitDepth, sk_sp<SkColorSpace> colorSpace) 1004</pre> 1005 1006Creates <a href="#Image">Image</a> from <a href="#SkImage_MakeFromPicture_picture">picture</a>. Returned <a href="#Image">Image</a> width and height are set by dimensions. 1007<a href="#Image">Image</a> draws <a href="#SkImage_MakeFromPicture_picture">picture</a> with <a href="#SkImage_MakeFromPicture_matrix">matrix</a> and <a href="#SkImage_MakeFromPicture_paint">paint</a>, set to <a href="#SkImage_MakeFromPicture_bitDepth">bitDepth</a> and <a href="#SkImage_colorSpace">colorSpace</a>. 1008 1009If <a href="#SkImage_MakeFromPicture_matrix">matrix</a> is nullptr, draws with identity <a href="SkMatrix_Reference#Matrix">Matrix</a>. If <a href="#SkImage_MakeFromPicture_paint">paint</a> is nullptr, draws 1010with default <a href="SkPaint_Reference#Paint">Paint</a>. <a href="#SkImage_colorSpace">colorSpace</a> may be nullptr. 1011 1012### Parameters 1013 1014<table> <tr> <td><a name="SkImage_MakeFromPicture_picture"> <code><strong>picture </strong></code> </a></td> <td> 1015stream of drawing commands</td> 1016 </tr> <tr> <td><a name="SkImage_MakeFromPicture_dimensions"> <code><strong>dimensions </strong></code> </a></td> <td> 1017width and height</td> 1018 </tr> <tr> <td><a name="SkImage_MakeFromPicture_matrix"> <code><strong>matrix </strong></code> </a></td> <td> 1019<a href="SkMatrix_Reference#Matrix">Matrix</a> to rotate, scale, translate, and so on; may be nullptr</td> 1020 </tr> <tr> <td><a name="SkImage_MakeFromPicture_paint"> <code><strong>paint </strong></code> </a></td> <td> 1021<a href="SkPaint_Reference#Paint">Paint</a> to apply transparency, filtering, and so on; may be nullptr</td> 1022 </tr> <tr> <td><a name="SkImage_MakeFromPicture_bitDepth"> <code><strong>bitDepth </strong></code> </a></td> <td> 10238 bit integer or 16 bit float: per component</td> 1024 </tr> <tr> <td><a name="SkImage_MakeFromPicture_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 1025range of colors; may be nullptr</td> 1026 </tr> 1027</table> 1028 1029### Return Value 1030 1031created <a href="#Image">Image</a>, or nullptr 1032 1033### Example 1034 1035<div><fiddle-embed name="4aa2879b9e44dfd6648995326d2c4dcf"></fiddle-embed></div> 1036 1037### See Also 1038 1039<a href="#SkCanvas_drawPicture">SkCanvas::drawPicture</a><sup><a href="#SkCanvas_drawPicture_2">[2]</a></sup><sup><a href="#SkCanvas_drawPicture_3">[3]</a></sup><sup><a href="#SkCanvas_drawPicture_4">[4]</a></sup> 1040 1041--- 1042 1043<a name="SkImage_MakeFromAHardwareBuffer"></a> 1044## MakeFromAHardwareBuffer 1045 1046<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1047static sk_sp<SkImage> MakeFromAHardwareBuffer(AHardwareBuffer* hardwareBuffer, 1048 SkAlphaType alphaType = kPremul_SkAlphaType, 1049 sk_sp<SkColorSpace> colorSpace = nullptr) 1050</pre> 1051 1052Creates <a href="#Image">Image</a> from Android hardware buffer. 1053Returned <a href="#Image">Image</a> takes a reference on the buffer. 1054 1055Only available on Android, when __ANDROID_API__ is defined to be 26 or greater. 1056 1057### Parameters 1058 1059<table> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_hardwareBuffer"> <code><strong>hardwareBuffer </strong></code> </a></td> <td> 1060AHardwareBuffer Android hardware buffer</td> 1061 </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_alphaType"> <code><strong>alphaType </strong></code> </a></td> <td> 1062one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 1063<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a></td> 1064 </tr> <tr> <td><a name="SkImage_MakeFromAHardwareBuffer_colorSpace"> <code><strong>colorSpace </strong></code> </a></td> <td> 1065range of colors; may be nullptr</td> 1066 </tr> 1067</table> 1068 1069### Return Value 1070 1071created <a href="#Image">Image</a>, or nullptr 1072 1073### See Also 1074 1075<a href="#SkImage_MakeFromRaster">MakeFromRaster</a> 1076 1077--- 1078 1079<a name="SkImage_width"></a> 1080## width 1081 1082<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1083int width() const 1084</pre> 1085 1086Returns pixel count in each row. 1087 1088### Return Value 1089 1090pixel width in <a href="#Image">Image</a> 1091 1092### Example 1093 1094<div><fiddle-embed name="39a6d0bbeac6d957c2338e0bff865cf8"></fiddle-embed></div> 1095 1096### See Also 1097 1098<a href="#SkImage_dimensions">dimensions</a> <a href="#SkImage_height">height</a> 1099 1100--- 1101 1102<a name="SkImage_height"></a> 1103## height 1104 1105<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1106int height() const 1107</pre> 1108 1109Returns pixel row count. 1110 1111### Return Value 1112 1113pixel height in <a href="#Image">Image</a> 1114 1115### Example 1116 1117<div><fiddle-embed name="6e563cb8351d34bd8af555a51bcd7a96"></fiddle-embed></div> 1118 1119### See Also 1120 1121<a href="#SkImage_dimensions">dimensions</a> <a href="#SkImage_width">width</a> 1122 1123--- 1124 1125<a name="SkImage_dimensions"></a> 1126## dimensions 1127 1128<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1129SkISize dimensions() const 1130</pre> 1131 1132Returns <a href="undocumented#ISize">ISize</a> { <a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a> }. 1133 1134### Return Value 1135 1136integral size of <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> 1137 1138### Example 1139 1140<div><fiddle-embed name="96b4bc43b3667df9ba9e2dafb770d33c"></fiddle-embed></div> 1141 1142### See Also 1143 1144<a href="#SkImage_height">height</a> <a href="#SkImage_width">width</a> <a href="#SkImage_bounds">bounds</a> 1145 1146--- 1147 1148<a name="SkImage_bounds"></a> 1149## bounds 1150 1151<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1152SkIRect bounds() const 1153</pre> 1154 1155Returns <a href="SkIRect_Reference#IRect">IRect</a> { 0, 0, <a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a> }. 1156 1157### Return Value 1158 1159integral rectangle from origin to <a href="#SkImage_width">width</a> and <a href="#SkImage_height">height</a> 1160 1161### Example 1162 1163<div><fiddle-embed name="c204b38b3fc08914b0a634aa4eaec894"></fiddle-embed></div> 1164 1165### See Also 1166 1167<a href="#SkImage_dimensions">dimensions</a> 1168 1169--- 1170 1171<a name="SkImage_uniqueID"></a> 1172## uniqueID 1173 1174<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1175uint32_t uniqueID() const 1176</pre> 1177 1178Returns value unique to image. <a href="#Image">Image</a> contents cannot change after <a href="#Image">Image</a> is 1179created. Any operation to create a new <a href="#Image">Image</a> will receive generate a new 1180unique number. 1181 1182### Return Value 1183 1184unique identifier 1185 1186### Example 1187 1188<div><fiddle-embed name="d70194c9c51e700335f95de91846d023"></fiddle-embed></div> 1189 1190### See Also 1191 1192<a href="#SkImage_isLazyGenerated">isLazyGenerated</a> 1193 1194--- 1195 1196<a name="SkImage_alphaType"></a> 1197## alphaType 1198 1199<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1200SkAlphaType alphaType() const 1201</pre> 1202 1203Returns <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, one of: <a href="SkImageInfo_Reference#SkAlphaType">kUnknown SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, 1204<a href="SkImageInfo_Reference#SkAlphaType">kPremul SkAlphaType</a>, <a href="SkImageInfo_Reference#SkAlphaType">kUnpremul SkAlphaType</a>. 1205 1206<a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> returned was a parameter to an <a href="#Image">Image</a> constructor, 1207or was parsed from encoded data. 1208 1209### Return Value 1210 1211<a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> in <a href="#Image">Image</a> 1212 1213### Example 1214 1215<div><fiddle-embed name="dac1403132a42459d6881585efbfe74b"></fiddle-embed></div> 1216 1217### See Also 1218 1219<a href="#SkImageInfo_alphaType">SkImageInfo::alphaType</a> 1220 1221--- 1222 1223<a name="SkImage_colorSpace"></a> 1224## colorSpace 1225 1226<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1227SkColorSpace* colorSpace() const 1228</pre> 1229 1230Returns <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with <a href="#Image">Image</a>. The 1231reference count of <a href="undocumented#Color_Space">Color Space</a> is unchanged. The returned <a href="undocumented#Color_Space">Color Space</a> is 1232immutable. 1233 1234<a href="undocumented#Color_Space">Color Space</a> returned was passed to an <a href="#Image">Image</a> constructor, 1235or was parsed from encoded data. <a href="undocumented#Color_Space">Color Space</a> returned may be ignored when <a href="#Image">Image</a> 1236is drawn, depending on the capabilities of the <a href="SkSurface_Reference#Surface">Surface</a> receiving the drawing. 1237 1238### Return Value 1239 1240<a href="undocumented#Color_Space">Color Space</a> in <a href="#Image">Image</a>, or nullptr 1241 1242### Example 1243 1244<div><fiddle-embed name="4468d573f42af6f5e234be10a5453bb2"></fiddle-embed></div> 1245 1246### See Also 1247 1248<a href="#SkImage_refColorSpace">refColorSpace</a> <a href="#SkImage_makeColorSpace">makeColorSpace</a> 1249 1250--- 1251 1252<a name="SkImage_refColorSpace"></a> 1253## refColorSpace 1254 1255<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1256sk_sp<SkColorSpace> refColorSpace() const 1257</pre> 1258 1259Returns a smart pointer to <a href="undocumented#Color_Space">Color Space</a>, the range of colors, associated with 1260<a href="#Image">Image</a>. The smart pointer tracks the number of objects sharing this 1261<a href="undocumented#SkColorSpace">SkColorSpace</a> reference so the memory is released when the owners destruct. 1262 1263The returned <a href="undocumented#SkColorSpace">SkColorSpace</a> is immutable. 1264 1265<a href="undocumented#Color_Space">Color Space</a> returned was passed to an <a href="#Image">Image</a> constructor, 1266or was parsed from encoded data. <a href="undocumented#Color_Space">Color Space</a> returned may be ignored when <a href="#Image">Image</a> 1267is drawn, depending on the capabilities of the <a href="SkSurface_Reference#Surface">Surface</a> receiving the drawing. 1268 1269### Return Value 1270 1271<a href="undocumented#Color_Space">Color Space</a> in <a href="#Image">Image</a>, or nullptr, wrapped in a smart pointer 1272 1273### Example 1274 1275<div><fiddle-embed name="59b2078ebfbda8736a57c0486ae33332"></fiddle-embed></div> 1276 1277### See Also 1278 1279<a href="#SkImage_colorSpace">colorSpace</a> <a href="#SkImage_makeColorSpace">makeColorSpace</a> 1280 1281--- 1282 1283<a name="SkImage_isAlphaOnly"></a> 1284## isAlphaOnly 1285 1286<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1287bool isAlphaOnly() const 1288</pre> 1289 1290Returns true if <a href="#Image">Image</a> pixels represent transparency only. If true, each pixel 1291is packed in 8 bits as defined by <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>. 1292 1293### Return Value 1294 1295true if pixels represent a transparency mask 1296 1297### Example 1298 1299<div><fiddle-embed name="50762c73b8ea91959c5a7b68fbf1062d"> 1300 1301#### Example Output 1302 1303~~~~ 1304alphaOnly = true 1305~~~~ 1306 1307</fiddle-embed></div> 1308 1309### See Also 1310 1311<a href="#SkImage_alphaType">alphaType</a> <a href="#SkImage_isOpaque">isOpaque</a> 1312 1313--- 1314 1315<a name="SkImage_isOpaque"></a> 1316## isOpaque 1317 1318<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1319bool isOpaque() const 1320</pre> 1321 1322Returns true if pixels ignore their <a href="#Alpha">Alpha</a> value and are treated as fully opaque. 1323 1324### Return Value 1325 1326true if <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a> 1327 1328### Example 1329 1330<div><fiddle-embed name="e3340460003b74ee286d625e68589d65"> 1331 1332#### Example Output 1333 1334~~~~ 1335isOpaque = false 1336isOpaque = true 1337~~~~ 1338 1339</fiddle-embed></div> 1340 1341### See Also 1342 1343<a href="#SkImage_alphaType">alphaType</a> <a href="#SkImage_isAlphaOnly">isAlphaOnly</a> 1344 1345--- 1346 1347<a name="SkImage_makeShader"></a> 1348## makeShader 1349 1350<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1351sk_sp<SkShader> makeShader(SkShader::TileMode tileMode1, SkShader::TileMode tileMode2, 1352 const SkMatrix* localMatrix = nullptr) const 1353</pre> 1354 1355Creates <a href="undocumented#Shader">Shader</a> from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> dimensions are taken from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> uses 1356<a href="#SkShader_TileMode">SkShader::TileMode</a> rules to fill drawn area outside <a href="#Image">Image</a>. <a href="#SkImage_makeShader_localMatrix">localMatrix</a> permits 1357transforming <a href="#Image">Image</a> before <a href="#Matrix">Canvas Matrix</a> is applied. 1358 1359### Parameters 1360 1361<table> <tr> <td><a name="SkImage_makeShader_tileMode1"> <code><strong>tileMode1 </strong></code> </a></td> <td> 1362tiling in x, one of: <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a>, <a href="#SkShader_kRepeat_TileMode">SkShader::kRepeat TileMode</a>, 1363<a href="#SkShader_kMirror_TileMode">SkShader::kMirror TileMode</a></td> 1364 </tr> <tr> <td><a name="SkImage_makeShader_tileMode2"> <code><strong>tileMode2 </strong></code> </a></td> <td> 1365tiling in y, one of: <a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a>, <a href="#SkShader_kRepeat_TileMode">SkShader::kRepeat TileMode</a>, 1366<a href="#SkShader_kMirror_TileMode">SkShader::kMirror TileMode</a></td> 1367 </tr> <tr> <td><a name="SkImage_makeShader_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td> 1368<a href="#Image">Image</a> transformation, or nullptr</td> 1369 </tr> 1370</table> 1371 1372### Return Value 1373 1374<a href="undocumented#Shader">Shader</a> containing <a href="#Image">Image</a> 1375 1376### Example 1377 1378<div><fiddle-embed name="1c6de6fe72b00b5be970f5f718363449"></fiddle-embed></div> 1379 1380### See Also 1381 1382<a href="#SkImage_scalePixels">scalePixels</a> 1383 1384--- 1385 1386<a name="SkImage_makeShader_2"></a> 1387 1388<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1389sk_sp<SkShader> makeShader(const SkMatrix* localMatrix = nullptr) const 1390</pre> 1391 1392Creates <a href="undocumented#Shader">Shader</a> from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> dimensions are taken from <a href="#Image">Image</a>. <a href="undocumented#Shader">Shader</a> uses 1393<a href="#SkShader_kClamp_TileMode">SkShader::kClamp TileMode</a> to fill drawn area outside <a href="#Image">Image</a>. <a href="#SkImage_makeShader_2_localMatrix">localMatrix</a> permits 1394transforming <a href="#Image">Image</a> before <a href="#Matrix">Canvas Matrix</a> is applied. 1395 1396### Parameters 1397 1398<table> <tr> <td><a name="SkImage_makeShader_2_localMatrix"> <code><strong>localMatrix </strong></code> </a></td> <td> 1399<a href="#Image">Image</a> transformation, or nullptr</td> 1400 </tr> 1401</table> 1402 1403### Return Value 1404 1405<a href="undocumented#Shader">Shader</a> containing <a href="#Image">Image</a> 1406 1407### Example 1408 1409<div><fiddle-embed name="10172fca71b9dbdcade772513ffeb27e"></fiddle-embed></div> 1410 1411### See Also 1412 1413<a href="#SkImage_scalePixels">scalePixels</a> 1414 1415--- 1416 1417<a name="SkImage_peekPixels"></a> 1418## peekPixels 1419 1420<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1421bool peekPixels(SkPixmap* pixmap) const 1422</pre> 1423 1424Copies <a href="#Image">Image</a> pixel address, row bytes, and <a href="#Info">Image Info</a> to <a href="#SkImage_peekPixels_pixmap">pixmap</a>, if address 1425is available, and returns true. If pixel address is not available, return 1426false and leave <a href="#SkImage_peekPixels_pixmap">pixmap</a> unchanged. 1427 1428### Parameters 1429 1430<table> <tr> <td><a name="SkImage_peekPixels_pixmap"> <code><strong>pixmap </strong></code> </a></td> <td> 1431storage for pixel state if pixels are readable; otherwise, ignored</td> 1432 </tr> 1433</table> 1434 1435### Return Value 1436 1437true if <a href="#Image">Image</a> has direct access to pixels 1438 1439### Example 1440 1441<div><fiddle-embed name="900c0eab8dfdecd8301ed5be95887f8e"> 1442 1443#### Example Output 1444 1445~~~~ 1446------------ 1447--xx----x--- 1448-x--x--x---- 1449-x--x--x---- 1450-x--x-x----- 1451--xx-xx-xx-- 1452-----x-x--x- 1453----x--x--x- 1454----x--x--x- 1455---x----xx-- 1456------------ 1457~~~~ 1458 1459</fiddle-embed></div> 1460 1461### See Also 1462 1463<a href="#SkImage_readPixels">readPixels</a><sup><a href="#SkImage_readPixels_2">[2]</a></sup> 1464 1465--- 1466 1467<a name="SkImage_getTexture"></a> 1468## getTexture 1469 1470<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1471GrTexture* getTexture() const 1472</pre> 1473 1474Deprecated. 1475 1476--- 1477 1478<a name="SkImage_isTextureBacked"></a> 1479## isTextureBacked 1480 1481<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1482bool isTextureBacked() const 1483</pre> 1484 1485Returns true the contents of <a href="#Image">Image</a> was created on or uploaded to GPU memory, 1486and is available as a <a href="undocumented#GPU_Texture">GPU Texture</a>. 1487 1488### Return Value 1489 1490true if <a href="#Image">Image</a> is a <a href="undocumented#GPU_Texture">GPU Texture</a> 1491 1492### Example 1493 1494<div><fiddle-embed name="96fd92d399778486a51c5d828ef99322" gpu="true"></fiddle-embed></div> 1495 1496### See Also 1497 1498<a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_isValid">isValid</a> 1499 1500--- 1501 1502<a name="SkImage_isValid"></a> 1503## isValid 1504 1505<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1506bool isValid(GrContext* context) const 1507</pre> 1508 1509Returns true if <a href="#Image">Image</a> can be drawn on either <a href="undocumented#Raster_Surface">Raster Surface</a> or <a href="undocumented#GPU_Surface">GPU Surface</a>. 1510If <a href="#SkImage_isValid_context">context</a> is nullptr, tests if <a href="#Image">Image</a> draws on <a href="undocumented#Raster_Surface">Raster Surface</a>; 1511otherwise, tests if <a href="#Image">Image</a> draws on <a href="undocumented#GPU_Surface">GPU Surface</a> associated with <a href="#SkImage_isValid_context">context</a>. 1512 1513<a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> may become invalid if associated <a href="undocumented#GrContext">GrContext</a> is 1514invalid. <a href="#Lazy_Image">Lazy Image</a> may be invalid and may not draw to <a href="undocumented#Raster_Surface">Raster Surface</a> or 1515<a href="undocumented#GPU_Surface">GPU Surface</a> or both. 1516 1517### Parameters 1518 1519<table> <tr> <td><a name="SkImage_isValid_context"> <code><strong>context </strong></code> </a></td> <td> 1520<a href="undocumented#GPU_Context">GPU Context</a></td> 1521 </tr> 1522</table> 1523 1524### Return Value 1525 1526true if <a href="#Image">Image</a> can be drawn 1527 1528### Example 1529 1530<div><fiddle-embed name="daf1507ab3a5f7cb0f90058cbc028402" gpu="true"></fiddle-embed></div> 1531 1532### See Also 1533 1534<a href="#SkImage_isTextureBacked">isTextureBacked</a> <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> 1535 1536--- 1537 1538<a name="SkImage_getTextureHandle"></a> 1539## getTextureHandle 1540 1541<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1542GrBackendObject getTextureHandle(bool flushPendingGrContextIO, GrSurfaceOrigin* origin = nullptr) const 1543</pre> 1544 1545Retrieves the back-end API handle of texture. If <a href="#SkImage_getTextureHandle_flushPendingGrContextIO">flushPendingGrContextIO</a> is true, 1546complete deferred I/O operations. 1547 1548If <a href="#SkImage_getTextureHandle_origin">origin</a> in not nullptr, copies location of content drawn into <a href="#Image">Image</a>. 1549 1550### Parameters 1551 1552<table> <tr> <td><a name="SkImage_getTextureHandle_flushPendingGrContextIO"> <code><strong>flushPendingGrContextIO </strong></code> </a></td> <td> 1553flag to flush outstanding requests</td> 1554 </tr> <tr> <td><a name="SkImage_getTextureHandle_origin"> <code><strong>origin </strong></code> </a></td> <td> 1555storage for one of: <a href="undocumented#GrSurfaceOrigin">kTopLeft GrSurfaceOrigin</a>, 1556<a href="undocumented#GrSurfaceOrigin">kBottomLeft GrSurfaceOrigin</a>; or nullptr</td> 1557 </tr> 1558</table> 1559 1560### Return Value 1561 1562back-end API texture handle, or nullptr 1563 1564### Example 1565 1566<div><fiddle-embed name="f8943191063bfcc69f29f2b149df5c6d" gpu="true"></fiddle-embed></div> 1567 1568### Example 1569 1570<div><fiddle-embed name="a86c580638fcf83f782047b95c60f43f" gpu="true"></fiddle-embed></div> 1571 1572### See Also 1573 1574<a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> <a href="#SkImage_isTextureBacked">isTextureBacked</a> 1575 1576--- 1577 1578## <a name="SkImage_CachingHint"></a> Enum SkImage::CachingHint 1579 1580<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1581enum <a href="#SkImage_CachingHint">CachingHint</a> { 1582<a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, 1583<a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, 1584};</pre> 1585 1586<a href="#SkImage_CachingHint">CachingHint</a> selects whether Skia may internally cache <a href="#Bitmap">Bitmaps</a> generated by 1587decoding <a href="#Image">Image</a>, or by copying <a href="#Image">Image</a> from GPU to CPU. The default behavior 1588allows caching <a href="#Bitmap">Bitmaps</a>. 1589 1590Choose <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a> if <a href="#Image">Image</a> pixels are to be used only once, or 1591if <a href="#Image">Image</a> pixels reside in a cache outside of Skia, or to reduce memory pressure. 1592 1593Choosing <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a> does not ensure that pixels will be cached. 1594<a href="#Image">Image</a> pixels may not be cached if memory requirements are too large or 1595pixels are not accessible. 1596 1597### Constants 1598 1599<table> 1600 <tr> 1601 <td><a name="SkImage_kAllow_CachingHint"> <code><strong>SkImage::kAllow_CachingHint </strong></code> </a></td><td>0</td><td>Allows Skia to internally cache decoded and copied pixels.</td> 1602 </tr> 1603 <tr> 1604 <td><a name="SkImage_kDisallow_CachingHint"> <code><strong>SkImage::kDisallow_CachingHint </strong></code> </a></td><td>1</td><td>Disallows Skia from internally caching decoded and copied pixels.</td> 1605 </tr> 1606</table> 1607 1608### See Also 1609 1610<a href="#SkImage_readPixels">readPixels</a><sup><a href="#SkImage_readPixels_2">[2]</a></sup> <a href="#SkImage_scalePixels">scalePixels</a> 1611 1612 1613 1614<a name="SkImage_readPixels"></a> 1615## readPixels 1616 1617<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1618bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY, 1619 CachingHint cachingHint = kAllow_CachingHint) const 1620</pre> 1621 1622Copies <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Image">Image</a> to <a href="#SkImage_readPixels_dstPixels">dstPixels</a>. Copy starts at offset (<a href="#SkImage_readPixels_srcX">srcX</a>, <a href="#SkImage_readPixels_srcY">srcY</a>), 1623and does not exceed <a href="#Image">Image</a> (<a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a>). 1624 1625<a href="#SkImage_readPixels_dstInfo">dstInfo</a> specifies width, height, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, and <a href="undocumented#Color_Space">Color Space</a> of 1626destination. <a href="#SkImage_readPixels_dstRowBytes">dstRowBytes</a> specifics the gap from one destination row to the next. 1627Returns true if pixels are copied. Returns false if: 1628 1629<table> <tr> 1630 <td><a href="#SkImage_readPixels_dstInfo">dstInfo</a>.addr() equals nullptr</td> </tr> <tr> 1631 <td><a href="#SkImage_readPixels_dstRowBytes">dstRowBytes</a> is less than <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">minRowBytes</a></td> </tr> <tr> 1632 <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> 1633</table> 1634 1635Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is 1636<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="SkImageInfo_Reference#SkImageInfo">colorType</a> must match. 1637If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. 1638If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_alphaType">alphaType</a> must 1639match. If <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is nullptr, <a href="#SkImage_readPixels_dstInfo">dstInfo</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. Returns 1640false if pixel conversion is not possible. 1641 1642<a href="#SkImage_readPixels_srcX">srcX</a> and <a href="#SkImage_readPixels_srcY">srcY</a> may be negative to copy only top or left of source. Returns 1643false if <a href="#SkImage_width">width</a> or <a href="#SkImage_height">height</a> is zero or negative. 1644Returns false ifabs(srcX) >= <a href="#Image">Image</a> <a href="#SkImage_width">width</a>, 1645or ifabs(srcY) >= <a href="#Image">Image</a> <a href="#SkImage_height">height</a>. 1646 1647If <a href="#SkImage_readPixels_cachingHint">cachingHint</a> is <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, pixels may be retained locally. 1648If <a href="#SkImage_readPixels_cachingHint">cachingHint</a> is <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, pixels are not added to the local cache. 1649 1650### Parameters 1651 1652<table> <tr> <td><a name="SkImage_readPixels_dstInfo"> <code><strong>dstInfo </strong></code> </a></td> <td> 1653destination width, height, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a></td> 1654 </tr> <tr> <td><a name="SkImage_readPixels_dstPixels"> <code><strong>dstPixels </strong></code> </a></td> <td> 1655destination pixel storage</td> 1656 </tr> <tr> <td><a name="SkImage_readPixels_dstRowBytes"> <code><strong>dstRowBytes </strong></code> </a></td> <td> 1657destination row length</td> 1658 </tr> <tr> <td><a name="SkImage_readPixels_srcX"> <code><strong>srcX </strong></code> </a></td> <td> 1659column index whose absolute value is less than <a href="#SkImage_width">width</a></td> 1660 </tr> <tr> <td><a name="SkImage_readPixels_srcY"> <code><strong>srcY </strong></code> </a></td> <td> 1661row index whose absolute value is less than <a href="#SkImage_height">height</a></td> 1662 </tr> <tr> <td><a name="SkImage_readPixels_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> 1663one of: <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a></td> 1664 </tr> 1665</table> 1666 1667### Return Value 1668 1669true if pixels are copied to <a href="#SkImage_readPixels_dstPixels">dstPixels</a> 1670 1671### Example 1672 1673<div><fiddle-embed name="8aa8ca63dff4641dfc6ea8a3c555d59c"></fiddle-embed></div> 1674 1675### See Also 1676 1677<a href="#SkImage_scalePixels">scalePixels</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a><sup><a href="#SkBitmap_readPixels_2">[2]</a></sup><sup><a href="#SkBitmap_readPixels_3">[3]</a></sup><sup><a href="#SkBitmap_readPixels_4">[4]</a></sup> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a><sup><a href="#SkPixmap_readPixels_2">[2]</a></sup><sup><a href="#SkPixmap_readPixels_3">[3]</a></sup><sup><a href="#SkPixmap_readPixels_4">[4]</a></sup><sup><a href="#SkPixmap_readPixels_5">[5]</a></sup> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a><sup><a href="#SkCanvas_readPixels_2">[2]</a></sup><sup><a href="#SkCanvas_readPixels_3">[3]</a></sup> <a href="#SkSurface_readPixels">SkSurface::readPixels</a><sup><a href="#SkSurface_readPixels_2">[2]</a></sup><sup><a href="#SkSurface_readPixels_3">[3]</a></sup> 1678 1679--- 1680 1681<a name="SkImage_readPixels_2"></a> 1682 1683<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1684bool readPixels(const SkPixmap& dst, int srcX, int srcY, CachingHint cachingHint = kAllow_CachingHint) const 1685</pre> 1686 1687Copies a <a href="SkRect_Reference#Rect">Rect</a> of pixels from <a href="#Image">Image</a> to <a href="#SkImage_readPixels_2_dst">dst</a>. Copy starts at (<a href="#SkImage_readPixels_2_srcX">srcX</a>, <a href="#SkImage_readPixels_2_srcY">srcY</a>), and 1688does not exceed <a href="#Image">Image</a> (<a href="#SkImage_width">width</a>, <a href="#SkImage_height">height</a>). 1689 1690<a href="#SkImage_readPixels_2_dst">dst</a> specifies width, height, <a href="SkImageInfo_Reference#Color_Type">Color Type</a>, <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a>, <a href="undocumented#Color_Space">Color Space</a>, pixel storage, 1691and row bytes of destination. <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">rowBytes</a> specifics the gap from one destination 1692row to the next. Returns true if pixels are copied. Returns false if: 1693 1694<table> <tr> 1695 <td><a href="#SkImage_readPixels_2_dst">dst</a> pixel storage equals nullptr</td> </tr> <tr> 1696 <td><a href="#SkImage_readPixels_2_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">rowBytes</a> is less than <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a></td> </tr> <tr> 1697 <td><a href="undocumented#Pixel_Ref">Pixel Ref</a> is nullptr</td> </tr> 1698</table> 1699 1700Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is 1701<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> must match. 1702If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. 1703If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a> must 1704match. If <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is nullptr, <a href="#SkImage_readPixels_2_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. Returns 1705false if pixel conversion is not possible. 1706<a href="#SkImage_readPixels_2_srcX">srcX</a> and <a href="#SkImage_readPixels_2_srcY">srcY</a> may be negative to copy only top or left of source. Returns 1707false if <a href="#SkImage_width">width</a> or <a href="#SkImage_height">height</a> is zero or negative. 1708Returns false ifabs(srcX) >= <a href="#Image">Image</a> <a href="#SkImage_width">width</a>, 1709or ifabs(srcY) >= <a href="#Image">Image</a> <a href="#SkImage_height">height</a>. 1710 1711If <a href="#SkImage_readPixels_2_cachingHint">cachingHint</a> is <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, pixels may be retained locally. 1712If <a href="#SkImage_readPixels_2_cachingHint">cachingHint</a> is <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, pixels are not added to the local cache. 1713 1714### Parameters 1715 1716<table> <tr> <td><a name="SkImage_readPixels_2_dst"> <code><strong>dst </strong></code> </a></td> <td> 1717destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> 1718 </tr> <tr> <td><a name="SkImage_readPixels_2_srcX"> <code><strong>srcX </strong></code> </a></td> <td> 1719column index whose absolute value is less than <a href="#SkImage_width">width</a></td> 1720 </tr> <tr> <td><a name="SkImage_readPixels_2_srcY"> <code><strong>srcY </strong></code> </a></td> <td> 1721row index whose absolute value is less than <a href="#SkImage_height">height</a></td> 1722 </tr> <tr> <td><a name="SkImage_readPixels_2_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> 1723one of: <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a></td> 1724 </tr> 1725</table> 1726 1727### Return Value 1728 1729true if pixels are copied to <a href="#SkImage_readPixels_2_dst">dst</a> 1730 1731### Example 1732 1733<div><fiddle-embed name="b77a73c4baa63a4a8e2a4fdd96144d0b"></fiddle-embed></div> 1734 1735### See Also 1736 1737<a href="#SkImage_scalePixels">scalePixels</a> <a href="#SkBitmap_readPixels">SkBitmap::readPixels</a><sup><a href="#SkBitmap_readPixels_2">[2]</a></sup><sup><a href="#SkBitmap_readPixels_3">[3]</a></sup><sup><a href="#SkBitmap_readPixels_4">[4]</a></sup> <a href="#SkPixmap_readPixels">SkPixmap::readPixels</a><sup><a href="#SkPixmap_readPixels_2">[2]</a></sup><sup><a href="#SkPixmap_readPixels_3">[3]</a></sup><sup><a href="#SkPixmap_readPixels_4">[4]</a></sup><sup><a href="#SkPixmap_readPixels_5">[5]</a></sup> <a href="#SkCanvas_readPixels">SkCanvas::readPixels</a><sup><a href="#SkCanvas_readPixels_2">[2]</a></sup><sup><a href="#SkCanvas_readPixels_3">[3]</a></sup> <a href="#SkSurface_readPixels">SkSurface::readPixels</a><sup><a href="#SkSurface_readPixels_2">[2]</a></sup><sup><a href="#SkSurface_readPixels_3">[3]</a></sup> 1738 1739--- 1740 1741<a name="SkImage_scalePixels"></a> 1742## scalePixels 1743 1744<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1745bool scalePixels(const SkPixmap& dst, SkFilterQuality filterQuality, 1746 CachingHint cachingHint = kAllow_CachingHint) const 1747</pre> 1748 1749Copies <a href="#Image">Image</a> to <a href="#SkImage_scalePixels_dst">dst</a>, scaling pixels to fit <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_width">width</a> and <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_height">height</a>, and 1750converting pixels to match <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> and <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a>. Returns true if 1751pixels are copied. Returns false if <a href="#SkImage_scalePixels_dst">dst</a>.addr() is nullptr, or <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">rowBytes</a> is 1752less than <a href="#SkImage_scalePixels_dst">dst</a> <a href="#SkImageInfo_minRowBytes">SkImageInfo::minRowBytes</a>. 1753 1754Pixels are copied only if pixel conversion is possible. If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is 1755<a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, or <a href="SkImageInfo_Reference#SkColorType">kAlpha 8 SkColorType</a>; <a href="#SkImage_scalePixels_dst">dst</a>.<a href="SkPixmap_Reference#SkPixmap">colorType</a> must match. 1756If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a> is <a href="SkImageInfo_Reference#SkColorType">kGray 8 SkColorType</a>, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. 1757If <a href="#Image">Image</a> <a href="SkImageInfo_Reference#Alpha_Type">Alpha Type</a> is <a href="SkImageInfo_Reference#SkAlphaType">kOpaque SkAlphaType</a>, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_alphaType">alphaType</a> must 1758match. If <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is nullptr, <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_colorSpace">colorSpace</a> must match. Returns 1759false if pixel conversion is not possible. 1760 1761Scales the image, with <a href="#SkImage_scalePixels_filterQuality">filterQuality</a>, to match <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_width">width</a> and <a href="#SkImage_scalePixels_dst">dst</a>.<a href="#SkImage_height">height</a>. 1762<a href="#SkImage_scalePixels_filterQuality">filterQuality</a> <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a> is fastest, typically implemented with 1763<a href="undocumented#Filter_Quality_Nearest_Neighbor">Filter Quality Nearest Neighbor</a>. <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a> is typically implemented with 1764<a href="undocumented#Filter_Quality_Bilerp">Filter Quality Bilerp</a>. <a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a> is typically implemented with 1765<a href="undocumented#Filter_Quality_Bilerp">Filter Quality Bilerp</a>, and <a href="undocumented#Filter_Quality_MipMap">Filter Quality MipMap</a> when size is reduced. 1766<a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a> is slowest, typically implemented with <a href="undocumented#Filter_Quality_BiCubic">Filter Quality BiCubic</a>. 1767 1768If <a href="#SkImage_scalePixels_cachingHint">cachingHint</a> is <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, pixels may be retained locally. 1769If <a href="#SkImage_scalePixels_cachingHint">cachingHint</a> is <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a>, pixels are not added to the local cache. 1770 1771### Parameters 1772 1773<table> <tr> <td><a name="SkImage_scalePixels_dst"> <code><strong>dst </strong></code> </a></td> <td> 1774destination <a href="SkPixmap_Reference#Pixmap">Pixmap</a>: <a href="#Info">Image Info</a>, pixels, row bytes</td> 1775 </tr> <tr> <td><a name="SkImage_scalePixels_filterQuality"> <code><strong>filterQuality </strong></code> </a></td> <td> 1776one of: <a href="undocumented#SkFilterQuality">kNone SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kLow SkFilterQuality</a>, 1777<a href="undocumented#SkFilterQuality">kMedium SkFilterQuality</a>, <a href="undocumented#SkFilterQuality">kHigh SkFilterQuality</a></td> 1778 </tr> <tr> <td><a name="SkImage_scalePixels_cachingHint"> <code><strong>cachingHint </strong></code> </a></td> <td> 1779one of: <a href="#SkImage_kAllow_CachingHint">kAllow CachingHint</a>, <a href="#SkImage_kDisallow_CachingHint">kDisallow CachingHint</a></td> 1780 </tr> 1781</table> 1782 1783### Return Value 1784 1785true if pixels are scaled to fit <a href="#SkImage_scalePixels_dst">dst</a> 1786 1787### Example 1788 1789<div><fiddle-embed name="5949c9a63610cae30019e5b1899ee38f"></fiddle-embed></div> 1790 1791### See Also 1792 1793<a href="#SkCanvas_drawImage">SkCanvas::drawImage</a><sup><a href="#SkCanvas_drawImage_2">[2]</a></sup> <a href="#SkImage_readPixels">readPixels</a><sup><a href="#SkImage_readPixels_2">[2]</a></sup> <a href="#SkPixmap_scalePixels">SkPixmap::scalePixels</a> 1794 1795--- 1796 1797<a name="SkImage_encodeToData"></a> 1798## encodeToData 1799 1800<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1801sk_sp<SkData> encodeToData(SkEncodedImageFormat encodedImageFormat, int quality) const 1802</pre> 1803 1804Encodes <a href="#Image">Image</a> pixels, returning result as <a href="undocumented#SkData">SkData</a>. 1805 1806Returns nullptr if encoding fails, or if <a href="#SkImage_encodeToData_encodedImageFormat">encodedImageFormat</a> is not supported. 1807 1808<a href="#Image">Image</a> encoding in a format requires both building with one or more of: 1809SK_HAS_JPEG_LIBRARY, SK_HAS_PNG_LIBRARY, SK_HAS_WEBP_LIBRARY; and platform support 1810for the encoded format. 1811 1812If SK_BUILD_FOR_MAC or SK_BUILD_FOR_IOS is defined, <a href="#SkImage_encodeToData_encodedImageFormat">encodedImageFormat</a> can 1813additionally be one of: <a href="#SkEncodedImageFormat_kICO">SkEncodedImageFormat::kICO</a>, <a href="#SkEncodedImageFormat_kBMP">SkEncodedImageFormat::kBMP</a>, 1814<a href="#SkEncodedImageFormat_kGIF">SkEncodedImageFormat::kGIF</a>. 1815 1816<a href="#SkImage_encodeToData_quality">quality</a> is a platform and format specific metric trading off size and encoding 1817error. When used, <a href="#SkImage_encodeToData_quality">quality</a> equaling 100 encodes with the least error. <a href="#SkImage_encodeToData_quality">quality</a> may 1818be ignored by the encoder. 1819 1820### Parameters 1821 1822<table> <tr> <td><a name="SkImage_encodeToData_encodedImageFormat"> <code><strong>encodedImageFormat </strong></code> </a></td> <td> 1823one of: <a href="#SkEncodedImageFormat_kJPEG">SkEncodedImageFormat::kJPEG</a>, <a href="#SkEncodedImageFormat_kPNG">SkEncodedImageFormat::kPNG</a>, 1824<a href="#SkEncodedImageFormat_kWEBP">SkEncodedImageFormat::kWEBP</a></td> 1825 </tr> <tr> <td><a name="SkImage_encodeToData_quality"> <code><strong>quality </strong></code> </a></td> <td> 1826encoder specific metric with 100 equaling best</td> 1827 </tr> 1828</table> 1829 1830### Return Value 1831 1832encoded <a href="#Image">Image</a>, or nullptr 1833 1834### Example 1835 1836<div><fiddle-embed name="7a3bf8851bb7160e4e49c48f8c09639d"></fiddle-embed></div> 1837 1838### See Also 1839 1840<a href="#SkImage_refEncodedData">refEncodedData</a> <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1841 1842--- 1843 1844<a name="SkImage_encodeToData_2"></a> 1845 1846<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1847sk_sp<SkData> encodeToData() const 1848</pre> 1849 1850Encodes <a href="#Image">Image</a> pixels, returning result as <a href="undocumented#SkData">SkData</a>. Returns existing encoded data 1851if present; otherwise, <a href="#Image">Image</a> is encoded with <a href="#SkEncodedImageFormat_kPNG">SkEncodedImageFormat::kPNG</a>. Skia 1852must be built with SK_HAS_PNG_LIBRARY to encode <a href="#Image">Image</a>. 1853 1854Returns nullptr if existing encoded data is missing or invalid, and 1855encoding fails. 1856 1857### Return Value 1858 1859encoded <a href="#Image">Image</a>, or nullptr 1860 1861### Example 1862 1863<div><fiddle-embed name="30cee813f6aa476b0a9c8a24283e53a3"></fiddle-embed></div> 1864 1865### See Also 1866 1867<a href="#SkImage_refEncodedData">refEncodedData</a> <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1868 1869--- 1870 1871<a name="SkImage_refEncodedData"></a> 1872## refEncodedData 1873 1874<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1875sk_sp<SkData> refEncodedData() const 1876</pre> 1877 1878Returns encoded <a href="#Image">Image</a> pixels as <a href="undocumented#SkData">SkData</a>, if <a href="#Image">Image</a> was created from supported 1879encoded stream format. Platform support for formats vary and may require building 1880with one or more of: SK_HAS_JPEG_LIBRARY, SK_HAS_PNG_LIBRARY, SK_HAS_WEBP_LIBRARY. 1881 1882Returns nullptr if <a href="#Image">Image</a> contents are not encoded. 1883 1884### Return Value 1885 1886encoded <a href="#Image">Image</a>, or nullptr 1887 1888### Example 1889 1890<div><fiddle-embed name="91866923b37edd673c18232fdf3eabd8" gpu="true"></fiddle-embed></div> 1891 1892### See Also 1893 1894<a href="#SkImage_encodeToData">encodeToData</a><sup><a href="#SkImage_encodeToData_2">[2]</a></sup> <a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1895 1896--- 1897 1898<a name="SkImage_toString"></a> 1899## toString 1900 1901<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1902const char* toString(SkString* string) const 1903</pre> 1904 1905Appends <a href="#Image">Image</a> description to <a href="#SkImage_toString_string">string</a>, including unique ID, width, height, and 1906whether the image is opaque. 1907 1908### Parameters 1909 1910<table> <tr> <td><a name="SkImage_toString_string"> <code><strong>string </strong></code> </a></td> <td> 1911storage for description; existing content is preserved</td> 1912 </tr> 1913</table> 1914 1915### Return Value 1916 1917<a href="#SkImage_toString_string">string</a> appended with <a href="#Image">Image</a> description 1918 1919### Example 1920 1921<div><fiddle-embed name="e5eae6d362434154730e3bacff165ebd"></fiddle-embed></div> 1922 1923### See Also 1924 1925<a href="#SkPaint_toString">SkPaint::toString</a> 1926 1927--- 1928 1929<a name="SkImage_makeSubset"></a> 1930## makeSubset 1931 1932<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1933sk_sp<SkImage> makeSubset(const SkIRect& subset) const 1934</pre> 1935 1936Returns <a href="#SkImage_makeSubset_subset">subset</a> of <a href="#Image">Image</a>. <a href="#SkImage_makeSubset_subset">subset</a> must be fully contained by <a href="#Image">Image</a> <a href="#SkImage_dimensions">dimensions</a>. 1937The implementation may share pixels, or may copy them. 1938 1939Returns nullptr if <a href="#SkImage_makeSubset_subset">subset</a> is empty, or <a href="#SkImage_makeSubset_subset">subset</a> is not contained by bounds, or 1940pixels in <a href="#Image">Image</a> could not be read or copied. 1941 1942### Parameters 1943 1944<table> <tr> <td><a name="SkImage_makeSubset_subset"> <code><strong>subset </strong></code> </a></td> <td> 1945bounds of returned <a href="#Image">Image</a></td> 1946 </tr> 1947</table> 1948 1949### Return Value 1950 1951partial or full <a href="#Image">Image</a>, or nullptr 1952 1953### Example 1954 1955<div><fiddle-embed name="93669037c9eb9d142e7776b9f936fa96"></fiddle-embed></div> 1956 1957### See Also 1958 1959<a href="#SkImage_MakeFromEncoded">MakeFromEncoded</a> 1960 1961--- 1962 1963<a name="SkImage_makeTextureImage"></a> 1964## makeTextureImage 1965 1966<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 1967sk_sp<SkImage> makeTextureImage(GrContext* context, SkColorSpace* dstColorSpace) const 1968</pre> 1969 1970Returns <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> associated with <a href="#SkImage_makeTextureImage_context">context</a>. Returned <a href="#Image">Image</a> is 1971compatible with <a href="SkSurface_Reference#Surface">Surface</a> created with <a href="#SkImage_makeTextureImage_dstColorSpace">dstColorSpace</a>. Returns original 1972<a href="#Image">Image</a> if <a href="#SkImage_makeTextureImage_context">context</a> and <a href="#SkImage_makeTextureImage_dstColorSpace">dstColorSpace</a> match. 1973 1974Returns nullptr if <a href="#SkImage_makeTextureImage_context">context</a> is nullptr, or if <a href="#Image">Image</a> was created with another 1975<a href="undocumented#GrContext">GrContext</a>. 1976 1977### Parameters 1978 1979<table> <tr> <td><a name="SkImage_makeTextureImage_context"> <code><strong>context </strong></code> </a></td> <td> 1980<a href="undocumented#GPU_Context">GPU Context</a></td> 1981 </tr> <tr> <td><a name="SkImage_makeTextureImage_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 1982range of colors of matching <a href="SkSurface_Reference#Surface">Surface</a> on GPU</td> 1983 </tr> 1984</table> 1985 1986### Return Value 1987 1988created <a href="#Image">Image</a>, or nullptr 1989 1990### Example 1991 1992<div><fiddle-embed name="7d060e137662b233960200b7b2597ba6" gpu="true"></fiddle-embed></div> 1993 1994### See Also 1995 1996<a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> 1997 1998--- 1999 2000<a name="SkImage_makeNonTextureImage"></a> 2001## makeNonTextureImage 2002 2003<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2004sk_sp<SkImage> makeNonTextureImage() const 2005</pre> 2006 2007Returns <a href="SkImage_Reference#Raster_Image">Raster Image</a> or <a href="#Lazy_Image">Lazy Image</a>. Copies <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> into 2008CPU memory if needed. Returns original <a href="#Image">Image</a> if unencoded in <a href="undocumented#Raster_Bitmap">Raster Bitmap</a>, 2009or if encoded in a stream. 2010 2011Returns nullptr if backed by <a href="undocumented#GPU_Texture">GPU Texture</a> and copy fails. 2012 2013### Return Value 2014 2015<a href="SkImage_Reference#Raster_Image">Raster Image</a>, <a href="#Lazy_Image">Lazy Image</a>, or nullptr 2016 2017### Example 2018 2019<div><fiddle-embed name="220d369551a553f8ba4cd1c21b97a793" gpu="true"></fiddle-embed></div> 2020 2021### See Also 2022 2023incomplete 2024 2025--- 2026 2027<a name="SkImage_makeRasterImage"></a> 2028## makeRasterImage 2029 2030<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2031sk_sp<SkImage> makeRasterImage() const 2032</pre> 2033 2034Returns <a href="SkImage_Reference#Raster_Image">Raster Image</a>. Copies <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> into CPU memory, 2035or decodes <a href="#Image">Image</a> from <a href="#Lazy_Image">Lazy Image</a>. Returns original <a href="#Image">Image</a> if unencoded in 2036<a href="undocumented#Raster_Bitmap">Raster Bitmap</a>. 2037 2038Returns nullptr if copy, decode, or pixel read fails. 2039 2040### Return Value 2041 2042<a href="SkImage_Reference#Raster_Image">Raster Image</a>, or nullptr 2043 2044### Example 2045 2046<div><fiddle-embed name="d821b8e345df9ff0c8cbb6d91c588c02" gpu="true"></fiddle-embed></div> 2047 2048### See Also 2049 2050<a href="#SkImage_isTextureBacked">isTextureBacked</a> <a href="#SkImage_isLazyGenerated">isLazyGenerated</a> <a href="#SkImage_MakeFromRaster">MakeFromRaster</a> 2051 2052--- 2053 2054<a name="SkImage_makeWithFilter"></a> 2055## makeWithFilter 2056 2057<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2058sk_sp<SkImage> makeWithFilter(const SkImageFilter* filter, const SkIRect& subset, 2059 const SkIRect& clipBounds, SkIRect* outSubset, SkIPoint* offset) const 2060</pre> 2061 2062Creates filtered <a href="#Image">Image</a>. <a href="#SkImage_makeWithFilter_filter">filter</a> processes original <a href="#Image">Image</a>, potentially changing 2063color, position, and size. <a href="#SkImage_makeWithFilter_subset">subset</a> is the bounds of original <a href="#Image">Image</a> processed 2064by <a href="#SkImage_makeWithFilter_filter">filter</a>. <a href="#SkImage_makeWithFilter_clipBounds">clipBounds</a> is the expected bounds of the filtered <a href="#Image">Image</a>. <a href="#SkImage_makeWithFilter_outSubset">outSubset</a> 2065is required storage for the actual bounds of the filtered <a href="#Image">Image</a>. <a href="#SkImage_makeWithFilter_offset">offset</a> is 2066required storage for translation of returned <a href="#Image">Image</a>. 2067 2068Returns nullptr if <a href="#Image">Image</a> could not be created. If nullptr is returned, <a href="#SkImage_makeWithFilter_outSubset">outSubset</a> 2069and <a href="#SkImage_makeWithFilter_offset">offset</a> are undefined. 2070 2071<a href="#SkImage_makeWithFilter">makeWithFilter</a> is optimized to support <a href="#Image">Image</a> backed by <a href="undocumented#GPU_Texture">GPU Texture</a> drawn in an 2072animation with <a href="undocumented#SkImageFilter">SkImageFilter</a> that vary in size from one frame to the next. The 2073created <a href="#Image">Image</a> is drawn at an increased size so that <a href="undocumented#GPU_Texture">GPU Texture</a> can be reused 2074with different sized effects. <a href="#SkImage_makeWithFilter_outSubset">outSubset</a> describes the valid bounds of <a href="undocumented#GPU_Texture">GPU Texture</a> 2075returned. The returned <a href="#Image">Image</a> may be much larger than required for the <a href="#SkImage_makeWithFilter_filter">filter</a>. 2076<a href="#SkImage_makeWithFilter_offset">offset</a> translates the returned <a href="#Image">Image</a> to keep subsequent animation frames 2077aligned with respect to each other. 2078 2079### Parameters 2080 2081<table> <tr> <td><a name="SkImage_makeWithFilter_filter"> <code><strong>filter </strong></code> </a></td> <td> 2082how <a href="#Image">Image</a> is sampled when transformed</td> 2083 </tr> <tr> <td><a name="SkImage_makeWithFilter_subset"> <code><strong>subset </strong></code> </a></td> <td> 2084incomplete</td> 2085 </tr> <tr> <td><a name="SkImage_makeWithFilter_clipBounds"> <code><strong>clipBounds </strong></code> </a></td> <td> 2086incomplete</td> 2087 </tr> <tr> <td><a name="SkImage_makeWithFilter_outSubset"> <code><strong>outSubset </strong></code> </a></td> <td> 2088incomplete</td> 2089 </tr> <tr> <td><a name="SkImage_makeWithFilter_offset"> <code><strong>offset </strong></code> </a></td> <td> 2090incomplete</td> 2091 </tr> 2092</table> 2093 2094### Return Value 2095 2096filtered <a href="#Image">Image</a>, or nullptr 2097 2098### Example 2099 2100<div><fiddle-embed name="eabb12543886ace5e1212af220a19c6d" gpu="true"><div>In each frame of the animation, filtered <a href="#Image">Image</a> is drawn in a different location. 2101By translating canvas by returned <a href="#SkImage_makeWithFilter_offset">offset</a>, <a href="#Image">Image</a> appears stationary.</div></fiddle-embed></div> 2102 2103### See Also 2104 2105<a href="#SkPaint_setImageFilter">SkPaint::setImageFilter</a> 2106 2107--- 2108 2109# <a name="SkImage_DeferredTextureImageUsageParams"></a> Struct SkImage::DeferredTextureImageUsageParams 2110Used only by Chrome; to be deprecated. 2111 2112<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2113struct <a href="#SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams">DeferredTextureImageUsageParams</a> { 2114<a href="#SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams">DeferredTextureImageUsageParams(const SkMatrix matrix, const SkFilterQuality quality, 2115int preScaleMipLevel)</a>; 2116<a href="SkMatrix_Reference#SkMatrix">SkMatrix</a> <a href="#SkImage_DeferredTextureImageUsageParams_fMatrix">fMatrix</a>; 2117<a href="undocumented#SkFilterQuality">SkFilterQuality</a> <a href="#SkImage_DeferredTextureImageUsageParams_fQuality">fQuality</a>; 2118int <a href="#SkImage_DeferredTextureImageUsageParams_fPreScaleMipLevel">fPreScaleMipLevel</a>; 2119};</pre> 2120 2121<a name="SkImage_DeferredTextureImageUsageParams_fMatrix"> <code><strong>SkMatrix fMatrix</strong></code> </a> 2122 2123<a name="SkImage_DeferredTextureImageUsageParams_fQuality"> <code><strong>SkFilterQuality fQuality</strong></code> </a> 2124 2125<a name="SkImage_DeferredTextureImageUsageParams_fPreScaleMipLevel"> <code><strong>int fPreScaleMipLevel</strong></code> </a> 2126 2127<a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams"></a> 2128## DeferredTextureImageUsageParams 2129 2130<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2131DeferredTextureImageUsageParams(const SkMatrix matrix, const SkFilterQuality quality, 2132 int preScaleMipLevel) 2133</pre> 2134 2135### Parameters 2136 2137<table> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_matrix"> <code><strong>matrix </strong></code> </a></td> <td> 2138incomplete</td> 2139 </tr> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_quality"> <code><strong>quality </strong></code> </a></td> <td> 2140incomplete</td> 2141 </tr> <tr> <td><a name="SkImage_DeferredTextureImageUsageParams_DeferredTextureImageUsageParams_preScaleMipLevel"> <code><strong>preScaleMipLevel </strong></code> </a></td> <td> 2142incomplete</td> 2143 </tr> 2144</table> 2145 2146### Return Value 2147 2148incomplete 2149 2150### Example 2151 2152<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2153 2154### See Also 2155 2156incomplete 2157 2158--- 2159 2160### Example 2161 2162<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2163 2164### See Also 2165 2166incomplete 2167 2168<a name="SkImage_getDeferredTextureImageData"></a> 2169## getDeferredTextureImageData 2170 2171<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2172size_t getDeferredTextureImageData(const GrContextThreadSafeProxy& contextThreadSafeProxy, 2173 const DeferredTextureImageUsageParams deferredTextureImageUsageParams[], 2174 int paramCnt, void* buffer, SkColorSpace* dstColorSpace = nullptr, 2175 SkColorType dstColorType = kN32_SkColorType) const 2176</pre> 2177 2178Used only by Chrome; to be deprecated. 2179 2180This method allows clients to capture the data necessary to turn a <a href="#SkImage">SkImage</a> into a texture- 2181backed image. If the original image is codec-backed this will decode into a format optimized 2182for the context represented by the proxy. This method is thread safe with respect to the 2183<a href="undocumented#GrContext">GrContext</a> whence the proxy came. Clients allocate and manage the storage of the deferred 2184texture data and control its lifetime. No cleanup is required, thus it is safe to simply free 2185the memory out from under the data. 2186 2187The same method is used both for getting the size necessary for pre-uploaded texture data 2188and for retrieving the data. The params array represents the set of draws over which to 2189optimize the pre-upload data. 2190 2191When called with a null <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> this returns the size that the client must allocate in order 2192to create deferred texture data for this image (or zero if this is an inappropriate 2193candidate). The <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> allocated by the client should be 8 byte aligned. 2194 2195When <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> is not null this fills in the deferred texture data for this image in the 2196provided <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> (assuming this is an appropriate candidate image and the <a href="#SkImage_getDeferredTextureImageData_buffer">buffer</a> is 2197appropriately aligned). Upon success the size written is returned, otherwise 0. 2198 2199<a href="#SkImage_getDeferredTextureImageData_dstColorSpace">dstColorSpace</a> is the <a href="undocumented#Color_Space">Color Space</a> of the surface where this texture will ultimately be used. 2200If the method determines that mip-maps are needed, this helps determine the correct strategy 2201for building them (gamma-correct or not). 2202 2203<a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a> is the color type of the surface where this texture will ultimately be used. 2204This determines the format with which the image will be uploaded to the GPU. If <a href="#SkImage_getDeferredTextureImageData_dstColorType">dstColorType</a> 2205does not support <a href="undocumented#Color_Space">Color Space</a> (low bit depth types such as <a href="SkImageInfo_Reference#SkColorType">kARGB 4444 SkColorType</a>), 2206then <a href="#SkImage_getDeferredTextureImageData_dstColorSpace">dstColorSpace</a> must be null. 2207 2208### Parameters 2209 2210<table> <tr> <td><a name="SkImage_getDeferredTextureImageData_contextThreadSafeProxy"> <code><strong>contextThreadSafeProxy </strong></code> </a></td> <td> 2211thread safe GPU context</td> 2212 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_deferredTextureImageUsageParams"> <code><strong>deferredTextureImageUsageParams </strong></code> </a></td> <td> 2213array of <a href="#Image">Image</a> transformations</td> 2214 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_paramCnt"> <code><strong>paramCnt </strong></code> </a></td> <td> 2215entries in <a href="#SkImage_getDeferredTextureImageData_deferredTextureImageUsageParams">deferredTextureImageUsageParams</a> array</td> 2216 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_buffer"> <code><strong>buffer </strong></code> </a></td> <td> 2217storage for <a href="undocumented#GPU_Texture">GPU Texture</a> data, or nullptr</td> 2218 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_dstColorSpace"> <code><strong>dstColorSpace </strong></code> </a></td> <td> 2219<a href="SkSurface_Reference#Surface">Surface</a> <a href="undocumented#Color_Space">Color Space</a>, or nullptr</td> 2220 </tr> <tr> <td><a name="SkImage_getDeferredTextureImageData_dstColorType"> <code><strong>dstColorType </strong></code> </a></td> <td> 2221<a href="SkSurface_Reference#Surface">Surface</a> <a href="SkImageInfo_Reference#Color_Type">Color Type</a></td> 2222 </tr> 2223</table> 2224 2225### Return Value 2226 2227size of storage for <a href="undocumented#GPU_Texture">GPU Texture</a> data 2228 2229### Example 2230 2231<div><fiddle-embed name="31d224ac4d22ba60221c565f9a12ad50" gpu="true"></fiddle-embed></div> 2232 2233### See Also 2234 2235<a href="#SkImage_MakeFromDeferredTextureImageData">MakeFromDeferredTextureImageData</a> 2236 2237--- 2238 2239<a name="SkImage_MakeFromDeferredTextureImageData"></a> 2240## MakeFromDeferredTextureImageData 2241 2242<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2243static sk_sp<SkImage> MakeFromDeferredTextureImageData(GrContext* context, const void* data, 2244 SkBudgeted budgeted) 2245</pre> 2246 2247Used only by Chrome; to be deprecated. 2248 2249Returns a texture-backed image from <a href="#SkImage_MakeFromDeferredTextureImageData_data">data</a> produced in <a href="#SkImage_getDeferredTextureImageData">SkImage::getDeferredTextureImageData</a>. 2250The <a href="#SkImage_MakeFromDeferredTextureImageData_context">context</a> must be the <a href="#SkImage_MakeFromDeferredTextureImageData_context">context</a> that provided the proxy passed to 2251<a href="#SkImage_getDeferredTextureImageData">getDeferredTextureImageData</a>. 2252 2253### Parameters 2254 2255<table> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_context"> <code><strong>context </strong></code> </a></td> <td> 2256<a href="undocumented#GPU_Context">GPU Context</a></td> 2257 </tr> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_data"> <code><strong>data </strong></code> </a></td> <td> 2258incomplete</td> 2259 </tr> <tr> <td><a name="SkImage_MakeFromDeferredTextureImageData_budgeted"> <code><strong>budgeted </strong></code> </a></td> <td> 2260incomplete</td> 2261 </tr> 2262</table> 2263 2264### Return Value 2265 2266incomplete 2267 2268### Example 2269 2270<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2271 2272### See Also 2273 2274incomplete 2275 2276--- 2277 2278<a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> 2279 2280<a name="SkImage_MakeBackendTextureFromSkImage"></a> 2281## MakeBackendTextureFromSkImage 2282 2283<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2284static bool MakeBackendTextureFromSkImage(GrContext* context, sk_sp<SkImage> image, 2285 GrBackendTexture* backendTexture, 2286 BackendTextureReleaseProc* backendTextureReleaseProc) 2287</pre> 2288 2289Creates a <a href="undocumented#GrBackendTexture">GrBackendTexture</a> from the provided <a href="#SkImage">SkImage</a>. Returns true on success. The 2290<a href="undocumented#GrBackendTexture">GrBackendTexture</a> and <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> are populated on success. It is the callers 2291responsibility to call the <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> once they have deleted the texture. 2292Note that the <a href="#SkImage_BackendTextureReleaseProc">BackendTextureReleaseProc</a> allows Skia to clean up auxiliary data related 2293to the <a href="undocumented#GrBackendTexture">GrBackendTexture</a>, and is not a substitute for the client deleting the <a href="undocumented#GrBackendTexture">GrBackendTexture</a> 2294themselves. 2295 2296If <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is both texture backed and singly referenced; that is, its only 2297reference was transferred using std::move(): <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a> is returned in <a href="#SkImage_MakeBackendTextureFromSkImage_backendTexture">backendTexture</a> 2298without conversion or making a copy. 2299 2300If the <a href="#SkImage">SkImage</a> is not texture backed, this function will generate a texture with the <a href="#SkImage_MakeBackendTextureFromSkImage_image">image</a>'s 2301contents and return that. 2302 2303### Parameters 2304 2305<table> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_context"> <code><strong>context </strong></code> </a></td> <td> 2306<a href="undocumented#GPU_Context">GPU Context</a></td> 2307 </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_image"> <code><strong>image </strong></code> </a></td> <td> 2308incomplete</td> 2309 </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_backendTexture"> <code><strong>backendTexture </strong></code> </a></td> <td> 2310incomplete</td> 2311 </tr> <tr> <td><a name="SkImage_MakeBackendTextureFromSkImage_backendTextureReleaseProc"> <code><strong>backendTextureReleaseProc </strong></code> </a></td> <td> 2312incomplete</td> 2313 </tr> 2314</table> 2315 2316### Return Value 2317 2318incomplete 2319 2320### Example 2321 2322<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2323 2324### See Also 2325 2326incomplete 2327 2328--- 2329 2330## <a name="SkImage_LegacyBitmapMode"></a> Enum SkImage::LegacyBitmapMode 2331 2332<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2333enum <a href="#SkImage_LegacyBitmapMode">LegacyBitmapMode</a> { 2334<a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a>, 2335<a href="#SkImage_kRW_LegacyBitmapMode">kRW LegacyBitmapMode</a>, 2336};</pre> 2337 2338Helper functions to convert to <a href="SkBitmap_Reference#SkBitmap">SkBitmap</a> 2339 2340### Constants 2341 2342<table> 2343 <tr> 2344 <td><a name="SkImage_kRO_LegacyBitmapMode"> <code><strong>SkImage::kRO_LegacyBitmapMode </strong></code> </a></td><td>0</td><td></td> 2345 </tr> 2346 <tr> 2347 <td><a name="SkImage_kRW_LegacyBitmapMode"> <code><strong>SkImage::kRW_LegacyBitmapMode </strong></code> </a></td><td>1</td><td></td> 2348 </tr> 2349</table> 2350 2351### Example 2352 2353<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2354 2355### See Also 2356 2357incomplete 2358 2359 2360 2361<a name="SkImage_asLegacyBitmap"></a> 2362## asLegacyBitmap 2363 2364<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2365bool asLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode legacyBitmapMode) const 2366</pre> 2367 2368Creates raster <a href="SkBitmap_Reference#Bitmap">Bitmap</a> with same pixels as <a href="#Image">Image</a>. If <a href="#SkImage_asLegacyBitmap_legacyBitmapMode">legacyBitmapMode</a> is 2369<a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a>, returned <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> is read-only and immutable. 2370Returns true if <a href="SkBitmap_Reference#Bitmap">Bitmap</a> is stored in <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a>. Returns false and resets <a href="#SkImage_asLegacyBitmap_bitmap">bitmap</a> if 2371<a href="SkBitmap_Reference#Bitmap">Bitmap</a> write did not succeed. 2372 2373### Parameters 2374 2375<table> <tr> <td><a name="SkImage_asLegacyBitmap_bitmap"> <code><strong>bitmap </strong></code> </a></td> <td> 2376storage for legacy <a href="SkBitmap_Reference#Bitmap">Bitmap</a></td> 2377 </tr> <tr> <td><a name="SkImage_asLegacyBitmap_legacyBitmapMode"> <code><strong>legacyBitmapMode </strong></code> </a></td> <td> 2378one of: <a href="#SkImage_kRO_LegacyBitmapMode">kRO LegacyBitmapMode</a>, <a href="#SkImage_kRW_LegacyBitmapMode">kRW LegacyBitmapMode</a></td> 2379 </tr> 2380</table> 2381 2382### Return Value 2383 2384true if <a href="SkBitmap_Reference#Bitmap">Bitmap</a> was created 2385 2386### Example 2387 2388<div><fiddle-embed name="882e8e0103048009a25cfc20400492f7"></fiddle-embed></div> 2389 2390### See Also 2391 2392incomplete 2393 2394--- 2395 2396<a name="SkImage_isLazyGenerated"></a> 2397## isLazyGenerated 2398 2399<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2400bool isLazyGenerated() const 2401</pre> 2402 2403Returns true if <a href="#Image">Image</a> is backed by an image-generator or other service that creates 2404and caches its pixels or texture on-demand. 2405 2406### Return Value 2407 2408true if <a href="#Image">Image</a> is created as needed 2409 2410### Example 2411 2412<div><fiddle-embed name="a8b8bd4bfe968e2c63085f867665227f"></fiddle-embed></div> 2413 2414### Example 2415 2416<div><fiddle-embed name="070dd0405890b84c07827d93fa01c331" gpu="true"></fiddle-embed></div> 2417 2418### See Also 2419 2420<a href="#SkImage_isTextureBacked">isTextureBacked</a> MakeNonTextureImage 2421 2422--- 2423 2424<a name="SkImage_makeColorSpace"></a> 2425## makeColorSpace 2426 2427<pre style="padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0"> 2428sk_sp<SkImage> makeColorSpace(sk_sp<SkColorSpace> target, SkTransferFunctionBehavior premulBehavior) const 2429</pre> 2430 2431Creates <a href="#Image">Image</a> in <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a>. 2432Returns nullptr if <a href="#Image">Image</a> could not be created. 2433 2434Returns original <a href="#Image">Image</a> if it is in <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a>. 2435Otherwise, converts pixels from <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> to <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a>. 2436If <a href="#Image">Image</a> <a href="#SkImage_colorSpace">colorSpace</a> returns nullptr, <a href="#Image">Image</a> <a href="undocumented#Color_Space">Color Space</a> is assumed to be sRGB. 2437 2438<a href="undocumented#SkTransferFunctionBehavior">SkTransferFunctionBehavior</a> is to be deprecated. 2439 2440Set <a href="#SkImage_makeColorSpace_premulBehavior">premulBehavior</a> to <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a> to convert <a href="#Image">Image</a> 2441pixels to a linear space, before converting to destination <a href="SkImageInfo_Reference#Color_Type">Color Type</a> 2442and <a href="undocumented#Color_Space">Color Space</a>. 2443 2444Set <a href="#SkImage_makeColorSpace_premulBehavior">premulBehavior</a> to <a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a> to treat <a href="#Image">Image</a> 2445pixels as linear, when converting to destination <a href="SkImageInfo_Reference#Color_Type">Color Type</a> 2446and <a href="undocumented#Color_Space">Color Space</a>, ignoring pixel encoding. 2447 2448### Parameters 2449 2450<table> <tr> <td><a name="SkImage_makeColorSpace_target"> <code><strong>target </strong></code> </a></td> <td> 2451<a href="undocumented#Color_Space">Color Space</a> describing color range of returned <a href="#Image">Image</a></td> 2452 </tr> <tr> <td><a name="SkImage_makeColorSpace_premulBehavior"> <code><strong>premulBehavior </strong></code> </a></td> <td> 2453one of: <a href="#SkTransferFunctionBehavior_kRespect">SkTransferFunctionBehavior::kRespect</a>, 2454<a href="#SkTransferFunctionBehavior_kIgnore">SkTransferFunctionBehavior::kIgnore</a></td> 2455 </tr> 2456</table> 2457 2458### Return Value 2459 2460created <a href="#Image">Image</a> in <a href="#SkImage_makeColorSpace_target">target</a> <a href="undocumented#Color_Space">Color Space</a> 2461 2462### Example 2463 2464<div><fiddle-embed name="ab8bcb9acecbee444019a724d2b0503c"></fiddle-embed></div> 2465 2466### See Also 2467 2468MakeFromPixture <a href="#SkImage_MakeFromTexture">MakeFromTexture</a><sup><a href="#SkImage_MakeFromTexture_2">[2]</a></sup><sup><a href="#SkImage_MakeFromTexture_3">[3]</a></sup><sup><a href="#SkImage_MakeFromTexture_4">[4]</a></sup> 2469 2470--- 2471 2472