Use bitmap.asImage()

Change-Id: Ie16194937530d7cd75f84d9af66c31b77875ef83
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/347043
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/bench/BulkRectBench.cpp b/bench/BulkRectBench.cpp
index 321087d..ebf4df9 100644
--- a/bench/BulkRectBench.cpp
+++ b/bench/BulkRectBench.cpp
@@ -221,7 +221,7 @@
             SkBitmap bm;
             bm.allocN32Pixels(256, 256);
             bm.eraseColor(fColors[i].toSkColor());
-            auto image = SkImage::MakeFromBitmap(bm);
+            auto image = bm.asImage();
 
             fImages[i] = direct ? image->makeTextureImage(direct) : std::move(image);
         }
diff --git a/docs/examples/Canvas_SrcRectConstraint.cpp b/docs/examples/Canvas_SrcRectConstraint.cpp
index e42eabf..69b07ce 100644
--- a/docs/examples/Canvas_SrcRectConstraint.cpp
+++ b/docs/examples/Canvas_SrcRectConstraint.cpp
@@ -15,7 +15,7 @@
     canvas->scale(16, 16);
     canvas->drawBitmap(redBorder, 0, 0, nullptr);
     canvas->resetMatrix();
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(redBorder);
+    sk_sp<SkImage> image = redBorder.asImage();
     SkPaint lowPaint;
     lowPaint.setFilterQuality(kLow_SkFilterQuality);
     for (auto constraint : { SkCanvas::kStrict_SrcRectConstraint,
diff --git a/docs/examples/Canvas_drawImageNine.cpp b/docs/examples/Canvas_drawImageNine.cpp
index 0cad667..b75c2ab 100644
--- a/docs/examples/Canvas_drawImageNine.cpp
+++ b/docs/examples/Canvas_drawImageNine.cpp
@@ -21,7 +21,7 @@
         }
         left = right;
     }
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image = bitmap.asImage();
     SkImage* imagePtr = image.get();
     for (auto dest: { 20, 30, 40, 60, 90 } ) {
         canvas->drawImageNine(imagePtr, center, SkRect::MakeWH(dest, dest), nullptr);
diff --git a/docs/examples/Canvas_drawImageNine_2.cpp b/docs/examples/Canvas_drawImageNine_2.cpp
index 826e18a..661dccf 100644
--- a/docs/examples/Canvas_drawImageNine_2.cpp
+++ b/docs/examples/Canvas_drawImageNine_2.cpp
@@ -21,7 +21,7 @@
         }
         left = right;
     }
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image = bitmap.asImage();
     for (auto dest: { 20, 30, 40, 60, 90 } ) {
         canvas->drawImageNine(image, center, SkRect::MakeWH(dest, 110 - dest), nullptr);
         canvas->translate(dest + 4, 0);
diff --git a/docs/examples/Canvas_drawImageRect.cpp b/docs/examples/Canvas_drawImageRect.cpp
index 3548d4d..fc01726 100644
--- a/docs/examples/Canvas_drawImageRect.cpp
+++ b/docs/examples/Canvas_drawImageRect.cpp
@@ -12,7 +12,7 @@
     SkBitmap redBorder;
     redBorder.installPixels(SkImageInfo::MakeN32Premul(4, 4),
             (void*) pixels, sizeof(pixels[0]));
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(redBorder);
+    sk_sp<SkImage> image = redBorder.asImage();
     SkPaint lowPaint;
     for (auto constraint : {
             SkCanvas::kFast_SrcRectConstraint,
diff --git a/docs/examples/Canvas_drawImageRect_4.cpp b/docs/examples/Canvas_drawImageRect_4.cpp
index 2c49dc0..b80a270 100644
--- a/docs/examples/Canvas_drawImageRect_4.cpp
+++ b/docs/examples/Canvas_drawImageRect_4.cpp
@@ -9,7 +9,7 @@
     SkBitmap bitmap;
     bitmap.installPixels(SkImageInfo::MakeN32Premul(2, 2),
             (void*) pixels, sizeof(pixels[0]));
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image = bitmap.asImage();
     SkPaint paint;
     canvas->scale(4, 4);
     for (auto alpha : { 50, 100, 150, 255 } ) {
diff --git a/docs/examples/Canvas_drawImageRect_5.cpp b/docs/examples/Canvas_drawImageRect_5.cpp
index b494683..22111e1 100644
--- a/docs/examples/Canvas_drawImageRect_5.cpp
+++ b/docs/examples/Canvas_drawImageRect_5.cpp
@@ -9,7 +9,7 @@
     SkBitmap bitmap;
     bitmap.installPixels(SkImageInfo::MakeN32Premul(2, 2),
             (void*) pixels, sizeof(pixels[0]));
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image = bitmap.asImage();
     SkPaint paint;
     canvas->scale(4, 4);
     for (auto color : { SK_ColorRED, SK_ColorBLUE, SK_ColorGREEN } ) {
diff --git a/docs/examples/Canvas_drawImageRect_6.cpp b/docs/examples/Canvas_drawImageRect_6.cpp
index 7aeabe4..8940fa2 100644
--- a/docs/examples/Canvas_drawImageRect_6.cpp
+++ b/docs/examples/Canvas_drawImageRect_6.cpp
@@ -9,7 +9,7 @@
     SkBitmap bitmap;
     bitmap.installPixels(SkImageInfo::MakeN32Premul(2, 2),
             (void*) pixels, sizeof(pixels[0]));
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image = bitmap.asImage();
     SkPaint paint;
     canvas->scale(4, 4);
     for (auto color : { SK_ColorRED, SK_ColorBLUE, SK_ColorGREEN } ) {
diff --git a/docs/examples/Image_MakeFromBitmap.cpp b/docs/examples/Image_MakeFromBitmap.cpp
index d8d6046..b93a30b 100644
--- a/docs/examples/Image_MakeFromBitmap.cpp
+++ b/docs/examples/Image_MakeFromBitmap.cpp
@@ -13,9 +13,9 @@
     SkPixmap pixmap(imageInfo, storage[0], sizeof(storage) / 5);
     SkBitmap bitmap;
     bitmap.installPixels(pixmap);
-    sk_sp<SkImage> image1 = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image1 = bitmap.asImage();
     bitmap.setImmutable();
-    sk_sp<SkImage> image2 = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image2 = bitmap.asImage();
     *pixmap.writable_addr8(2, 2) = 0x00;
     canvas->scale(10, 10);
     canvas->drawImage(image1, 0, 0);
diff --git a/docs/examples/Image_isLazyGenerated_b.cpp b/docs/examples/Image_isLazyGenerated_b.cpp
index 9ee0b0e..e480ce6 100644
--- a/docs/examples/Image_isLazyGenerated_b.cpp
+++ b/docs/examples/Image_isLazyGenerated_b.cpp
@@ -22,7 +22,7 @@
                 image->isLazyGenerated() ? "is lazily generated" : "not lazily generated",
                 20, image->height() * 3 / 4, font, paint);
     };
-    sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source));
+    sk_sp<SkImage> bitmapImage(source.asImage());
     sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(dContext, backEndTexture,
                                                          kTopLeft_GrSurfaceOrigin,
                                                          kRGBA_8888_SkColorType,
diff --git a/docs/examples/Image_isTextureBacked.cpp b/docs/examples/Image_isTextureBacked.cpp
index 9e5de90..9749168 100644
--- a/docs/examples/Image_isTextureBacked.cpp
+++ b/docs/examples/Image_isTextureBacked.cpp
@@ -21,7 +21,7 @@
         canvas->drawString(image->isTextureBacked() ? "is GPU texture" : "not GPU texture",
                            20, image->height() * 3 / 4, font, paint);
     };
-    sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source));
+    sk_sp<SkImage> bitmapImage(source.asImage());
     sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(dContext, backEndTexture,
                                                          kTopLeft_GrSurfaceOrigin,
                                                          kRGBA_8888_SkColorType,
diff --git a/docs/examples/Image_isValid.cpp b/docs/examples/Image_isValid.cpp
index 6333069..128a184 100644
--- a/docs/examples/Image_isValid.cpp
+++ b/docs/examples/Image_isValid.cpp
@@ -28,7 +28,7 @@
 
         canvas->drawString(msg, 20, image->height() * 7 / 8, font, paint);
     };
-    sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source));
+    sk_sp<SkImage> bitmapImage(source.asImage());
     sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(dContext, backEndTexture,
                                                          kTopLeft_GrSurfaceOrigin,
                                                          kRGBA_8888_SkColorType,
diff --git a/docs/examples/Image_makeNonTextureImage.cpp b/docs/examples/Image_makeNonTextureImage.cpp
index 13c8a03..c25814a 100644
--- a/docs/examples/Image_makeNonTextureImage.cpp
+++ b/docs/examples/Image_makeNonTextureImage.cpp
@@ -20,7 +20,7 @@
         canvas->drawImage(nonTexture, 0, 0);
         canvas->drawString(label, 20, nonTexture->height() / 4, font, paint);
     };
-    sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source));
+    sk_sp<SkImage> bitmapImage(source.asImage());
     sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(dContext, backEndTexture,
                                                          kTopLeft_GrSurfaceOrigin,
                                                          kRGBA_8888_SkColorType,
diff --git a/docs/examples/Image_makeRasterImage.cpp b/docs/examples/Image_makeRasterImage.cpp
index 238b69a..7c46310 100644
--- a/docs/examples/Image_makeRasterImage.cpp
+++ b/docs/examples/Image_makeRasterImage.cpp
@@ -20,7 +20,7 @@
         canvas->drawImage(raster, 0, 0);
         canvas->drawString(label, 20, raster->height() / 4, font, paint);
     };
-    sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source));
+    sk_sp<SkImage> bitmapImage(source.asImage());
     sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(dContext, backEndTexture,
                                                          kTopLeft_GrSurfaceOrigin,
                                                          kRGBA_8888_SkColorType,
diff --git a/docs/examples/Image_makeTextureImage.cpp b/docs/examples/Image_makeTextureImage.cpp
index a6cd806..0c24b87 100644
--- a/docs/examples/Image_makeTextureImage.cpp
+++ b/docs/examples/Image_makeTextureImage.cpp
@@ -25,7 +25,7 @@
         canvas->drawImage(texture, 0, 0);
         canvas->drawString(label, 20, texture->height() / 4, font, paint);
     };
-    sk_sp<SkImage> bitmapImage(SkImage::MakeFromBitmap(source));
+    sk_sp<SkImage> bitmapImage(source.asImage());
 
 
     sk_sp<SkImage> textureImage(SkImage::MakeFromTexture(dContext, backEndTexture,
diff --git a/docs/examples/Image_refEncodedData.cpp b/docs/examples/Image_refEncodedData.cpp
index 39b1d07..21c0135 100644
--- a/docs/examples/Image_refEncodedData.cpp
+++ b/docs/examples/Image_refEncodedData.cpp
@@ -14,7 +14,7 @@
         sk_sp<SkImage> image;
     } tests[] = {
         { "image", image },
-        { "bitmap", SkImage::MakeFromBitmap(source) },
+        { "bitmap", source.asImage() },
         { "texture", SkImage::MakeFromTexture(dContext, backEndTexture, kTopLeft_GrSurfaceOrigin,
                                               kRGBA_8888_SkColorType, kOpaque_SkAlphaType,
                                               nullptr) }
diff --git a/docs/examples/UnpremulBugs.cpp b/docs/examples/UnpremulBugs.cpp
index 69a249e..845b25b 100644
--- a/docs/examples/UnpremulBugs.cpp
+++ b/docs/examples/UnpremulBugs.cpp
@@ -15,7 +15,7 @@
     SkBitmap bmp;
     bmp.allocPixels(info);
     fill(bmp, c, n);
-    sk_sp<SkImage> img = SkImage::MakeFromBitmap(bmp);
+    sk_sp<SkImage> img = bmp.asImage();
 
     SkPaint paint;
     const SkTileMode tile = SkTileMode::kRepeat;
diff --git a/docs/examples/UnpremulGPU.cpp b/docs/examples/UnpremulGPU.cpp
index 6908211..0e48a8b 100644
--- a/docs/examples/UnpremulGPU.cpp
+++ b/docs/examples/UnpremulGPU.cpp
@@ -12,7 +12,7 @@
             *(premulBitmap.getAddr32(x, y)) = 0x80808080;
         }
     }
-    sk_sp<SkImage> premulImage = SkImage::MakeFromBitmap(premulBitmap);
+    sk_sp<SkImage> premulImage = premulBitmap.asImage();
 
     SkImageInfo unpremulInfo = premulInfo.makeAlphaType(kUnpremul_SkAlphaType);
     SkBitmap unpremulBitmap;
@@ -22,7 +22,7 @@
             *(unpremulBitmap.getAddr32(x, y)) = 0x80FFFFFF;
         }
     }
-    sk_sp<SkImage> unpremulImage = SkImage::MakeFromBitmap(unpremulBitmap);
+    sk_sp<SkImage> unpremulImage = unpremulBitmap.asImage();
 
     SkPaint paint;
     const SkTileMode tile = SkTileMode::kRepeat;
diff --git a/docs/examples/alpha_bitmap_color_filter_mask_filter.cpp b/docs/examples/alpha_bitmap_color_filter_mask_filter.cpp
index 4af0645..45ccd76 100644
--- a/docs/examples/alpha_bitmap_color_filter_mask_filter.cpp
+++ b/docs/examples/alpha_bitmap_color_filter_mask_filter.cpp
@@ -25,7 +25,7 @@
 }
 
 void draw(SkCanvas* canvas) {
-    auto image = SkImage::MakeFromBitmap(make_alpha_image(96, 96));
+    auto image = make_alpha_image(96, 96).asImage();
     SkPaint paint;
 
     paint.setColorFilter(make_color_filter());
diff --git a/docs/examples/blur_alpha_img.cpp b/docs/examples/blur_alpha_img.cpp
index 2d00ace..d60de63 100644
--- a/docs/examples/blur_alpha_img.cpp
+++ b/docs/examples/blur_alpha_img.cpp
@@ -23,7 +23,7 @@
     SkCanvas c(bm);
     c.clear(0);
     c.drawRect(bounds, paint);
-    return SkImage::MakeFromBitmap(bm);
+    return bm.asImage();
 }
 
 void draw(SkCanvas* canvas) {
diff --git a/docs/examples/skbug_5648.cpp b/docs/examples/skbug_5648.cpp
index d298469..c577467 100644
--- a/docs/examples/skbug_5648.cpp
+++ b/docs/examples/skbug_5648.cpp
@@ -6,8 +6,8 @@
 void draw(SkCanvas*) {
     SkBitmap bitmap;
     source.extractSubset(&bitmap, {0, 0, source.width() - 1, source.height() - 1});
-    auto img0 = SkImage::MakeFromBitmap(bitmap);
-    auto img1 = SkImage::MakeFromBitmap(bitmap);
+    auto img0 = bitmap.asImage();
+    auto img1 = bitmap.asImage();
     SkDebugf("%u\n%u\n", img0->uniqueID(), img1->uniqueID());
 }
 }  // END FIDDLE
diff --git a/fuzz/FuzzDrawFunctions.cpp b/fuzz/FuzzDrawFunctions.cpp
index fb1d89c..30fdbf8 100644
--- a/fuzz/FuzzDrawFunctions.cpp
+++ b/fuzz/FuzzDrawFunctions.cpp
@@ -271,7 +271,7 @@
     SkBitmap bmp;
     init_bitmap(fuzz, &bmp);
 
-    sk_sp<SkImage> image(SkImage::MakeFromBitmap(bmp));
+    sk_sp<SkImage> image(bmp.asImage());
 
     bool bl;
     fuzz->next(&bl);
diff --git a/include/core/SkImage.h b/include/core/SkImage.h
index bb3f77a..060f58b 100644
--- a/include/core/SkImage.h
+++ b/include/core/SkImage.h
@@ -1224,6 +1224,8 @@
 
 private:
     SkImage(const SkImageInfo& info, uint32_t uniqueID);
+
+    friend class SkBitmap;
     friend class SkImage_Base;
     friend class SkMipmapBuilder;
 
diff --git a/modules/skresources/src/SkResources.cpp b/modules/skresources/src/SkResources.cpp
index ac06a12..29e8b45 100644
--- a/modules/skresources/src/SkResources.cpp
+++ b/modules/skresources/src/SkResources.cpp
@@ -141,7 +141,7 @@
                                        SkSamplingOptions(SkFilterMode::kLinear,
                                                          SkMipmapMode::kNearest),
                                        SkImage::kDisallow_CachingHint)) {
-                image = SkImage::MakeFromBitmap(bm);
+                image = bm.asImage();
             }
         } else {
             // When the image size is OK, just force-decode.
diff --git a/samplecode/SampleFilterBounds.cpp b/samplecode/SampleFilterBounds.cpp
index a0bda08..4aa2e6f 100644
--- a/samplecode/SampleFilterBounds.cpp
+++ b/samplecode/SampleFilterBounds.cpp
@@ -169,8 +169,8 @@
 
     void onOnceBeforeDraw() override {
         fBlur = SkImageFilters::Blur(8.f, 8.f, nullptr);
-        fImage = SkImage::MakeFromBitmap(ToolUtils::create_checkerboard_bitmap(
-                300, 300, SK_ColorMAGENTA, SK_ColorLTGRAY, 50));
+        fImage = ToolUtils::create_checkerboard_image(
+                300, 300, SK_ColorMAGENTA, SK_ColorLTGRAY, 50);
     }
 
     void onDrawContent(SkCanvas* canvas) override {
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index aecd2b9..d89841e 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1943,7 +1943,7 @@
     if (bitmap.drawsNothing()) {
         return nullptr;
     }
-    return SkImage::MakeFromBitmap(bitmap);
+    return bitmap.asImage();
 }
 
 void SkCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar dx, SkScalar dy, const SkPaint* paint) {
diff --git a/src/core/SkPixmap.cpp b/src/core/SkPixmap.cpp
index 48cec5c..5399991 100644
--- a/src/core/SkPixmap.cpp
+++ b/src/core/SkPixmap.cpp
@@ -238,7 +238,7 @@
                                               SkRect::Make(dst.bounds()),
                                               SkMatrix::kFill_ScaleToFit);
 
-    sk_sp<SkShader> shader = SkImageShader::Make(SkImage::MakeFromBitmap(bitmap),
+    sk_sp<SkShader> shader = SkImageShader::Make(bitmap.asImage(),
                                                  SkTileMode::kClamp,
                                                  SkTileMode::kClamp,
                                                  &sampling,
diff --git a/src/core/SkSpecialImage.cpp b/src/core/SkSpecialImage.cpp
index 4f94d8e..682dbf4 100644
--- a/src/core/SkSpecialImage.cpp
+++ b/src/core/SkSpecialImage.cpp
@@ -239,10 +239,10 @@
                 return nullptr;
             }
 
-            return SkImage::MakeFromBitmap(subsetBM);
+            return subsetBM.asImage();
         }
 
-        return SkImage::MakeFromBitmap(fBitmap);
+        return fBitmap.asImage();
     }
 
 sk_sp<SkSurface> onMakeTightSurface(SkColorType colorType, const SkColorSpace* colorSpace,
diff --git a/src/image/SkImage_Lazy.cpp b/src/image/SkImage_Lazy.cpp
index 9cca6a3..ab1d66e 100644
--- a/src/image/SkImage_Lazy.cpp
+++ b/src/image/SkImage_Lazy.cpp
@@ -244,7 +244,7 @@
         pixmap.setColorSpace(this->refColorSpace());
         if (ScopedGenerator(fSharedGenerator)->getPixels(pixmap)) {
             bitmap.setImmutable();
-            return SkImage::MakeFromBitmap(bitmap);
+            return bitmap.asImage();
         }
     }
     return nullptr;
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp
index e4b3688..582138b 100644
--- a/src/image/SkImage_Raster.cpp
+++ b/src/image/SkImage_Raster.cpp
@@ -267,7 +267,7 @@
                  subset.height());
 
     bitmap.setImmutable();
-    return MakeFromBitmap(bitmap);
+    return bitmap.asImage();
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -399,7 +399,7 @@
 
     SkAssertResult(dst.writePixels(src));
     dst.setImmutable();
-    return SkImage::MakeFromBitmap(dst);
+    return dst.asImage();
 }
 
 sk_sp<SkImage> SkImage_Raster::onReinterpretColorSpace(sk_sp<SkColorSpace> newCS) const {
diff --git a/src/image/SkSurface_Raster.cpp b/src/image/SkSurface_Raster.cpp
index 4131dfd..77ebedb 100644
--- a/src/image/SkSurface_Raster.cpp
+++ b/src/image/SkSurface_Raster.cpp
@@ -94,7 +94,7 @@
         dst.allocPixels(fBitmap.info().makeDimensions(subset->size()));
         SkAssertResult(fBitmap.readPixels(dst.pixmap(), subset->left(), subset->top()));
         dst.setImmutable(); // key, so MakeFromBitmap doesn't make a copy of the buffer
-        return SkImage::MakeFromBitmap(dst);
+        return dst.asImage();
     }
 
     SkCopyPixelsMode cpm = kIfMutable_SkCopyPixelsMode;
diff --git a/src/pdf/SkKeyedImage.cpp b/src/pdf/SkKeyedImage.cpp
index ce59da7..7b733d0 100644
--- a/src/pdf/SkKeyedImage.cpp
+++ b/src/pdf/SkKeyedImage.cpp
@@ -24,7 +24,7 @@
     fKey = SkBitmapKeyFromImage(fImage.get());
 }
 
-SkKeyedImage::SkKeyedImage(const SkBitmap& bm) : fImage(SkImage::MakeFromBitmap(bm)) {
+SkKeyedImage::SkKeyedImage(const SkBitmap& bm) : fImage(bm.asImage()) {
     if (fImage) {
         fKey = {bm.getSubset(), bm.getGenerationID()};
     }
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp
index 726e0ed..42ed89c 100644
--- a/src/pdf/SkPDFDevice.cpp
+++ b/src/pdf/SkPDFDevice.cpp
@@ -136,7 +136,8 @@
                           greyBitmap.getPixels(), greyBitmap.rowBytes(), 0, 0)) {
         return nullptr;
     }
-    return SkImage::MakeFromBitmap(greyBitmap);
+    greyBitmap.setImmutable();
+    return greyBitmap.asImage();
 }
 
 static int add_resource(SkTHashSet<SkPDFIndirectReference>& resources, SkPDFIndirectReference ref) {
diff --git a/src/pdf/SkPDFFont.cpp b/src/pdf/SkPDFFont.cpp
index e5ec7ee..be70078 100644
--- a/src/pdf/SkPDFFont.cpp
+++ b/src/pdf/SkPDFFont.cpp
@@ -462,7 +462,7 @@
                 }
             }
             bm.setImmutable();
-            return {SkImage::MakeFromBitmap(bm), {bounds.x(), bounds.y()}};
+            return {bm.asImage(), {bounds.x(), bounds.y()}};
         case SkMask::kA8_Format:
             bm.installPixels(SkImageInfo::MakeA8(bounds.width(), bounds.height()),
                              mask.fImage, mask.fRowBytes);
diff --git a/src/utils/mac/SkCreateCGImageRef.cpp b/src/utils/mac/SkCreateCGImageRef.cpp
index 74e9ce2..e69dbea 100644
--- a/src/utils/mac/SkCreateCGImageRef.cpp
+++ b/src/utils/mac/SkCreateCGImageRef.cpp
@@ -247,7 +247,7 @@
     }
 
     bm.setImmutable();
-    return SkImage::MakeFromBitmap(bm);
+    return bm.asImage();
 }
 
 #endif//defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
diff --git a/tests/DeviceTest.cpp b/tests/DeviceTest.cpp
index 60b7ff3..0557ff6 100644
--- a/tests/DeviceTest.cpp
+++ b/tests/DeviceTest.cpp
@@ -101,7 +101,7 @@
     SkASSERT(SkIRect::MakeWH(kWidth, kHeight) == special->subset());
 
     // Create a gpu-backed special image from a raster-backed SkImage
-    sk_sp<SkImage> image(SkImage::MakeFromBitmap(bm));
+    sk_sp<SkImage> image(bm.asImage());
     special = DeviceTestingAccess::MakeSpecial(gpuDev.get(), image.get());
     SkASSERT(special->isTextureBacked());
     SkASSERT(kWidth == special->width());
diff --git a/tests/FlattenableFactoryToName.cpp b/tests/FlattenableFactoryToName.cpp
index 07f2263..45b0fbd 100644
--- a/tests/FlattenableFactoryToName.cpp
+++ b/tests/FlattenableFactoryToName.cpp
@@ -37,6 +37,6 @@
     SkBitmap bm;
     bm.allocN32Pixels(8, 8);
     bm.eraseColor(SK_ColorCYAN);
-    sk_sp<SkImage> image(SkImage::MakeFromBitmap(bm));
+    sk_sp<SkImage> image(bm.asImage());
     test_flattenable(r, image->makeShader(SkSamplingOptions()).get(), "SkImage::newShader()");
 }
diff --git a/tests/GrDDLImageTest.cpp b/tests/GrDDLImageTest.cpp
index effcb96..b26ee5b 100644
--- a/tests/GrDDLImageTest.cpp
+++ b/tests/GrDDLImageTest.cpp
@@ -28,7 +28,7 @@
         bm.allocPixels();
         bm.eraseColor(SK_ColorBLACK);
         bm.setImmutable();
-        auto rasterImg = SkImage::MakeFromBitmap(bm);
+        auto rasterImg = bm.asImage();
         REPORTER_ASSERT(reporter, rasterImg->isValid(static_cast<GrRecordingContext*>(nullptr)));
 
         // raster + context:
diff --git a/tests/GrMipMappedTest.cpp b/tests/GrMipMappedTest.cpp
index 939517b..7c1b033 100644
--- a/tests/GrMipMappedTest.cpp
+++ b/tests/GrMipMappedTest.cpp
@@ -329,7 +329,7 @@
     SkPMColor* pixel = reinterpret_cast<SkPMColor*>(bmp.getPixels());
     *pixel = 0;
 
-    sk_sp<SkImage> bmpImage = SkImage::MakeFromBitmap(bmp);
+    sk_sp<SkImage> bmpImage = bmp.asImage();
 
     // Make sure we scale so we don't optimize out the use of mips.
     surface->getCanvas()->scale(0.5f, 0.5f);
diff --git a/tests/ImageBitmapTest.cpp b/tests/ImageBitmapTest.cpp
index 38053e3..4295bed 100644
--- a/tests/ImageBitmapTest.cpp
+++ b/tests/ImageBitmapTest.cpp
@@ -22,9 +22,9 @@
     (void)bm.extractSubset(&a, SkIRect::MakeXYWH(0, 0, 32, 32));
     (void)bm.extractSubset(&b, SkIRect::MakeXYWH(0, 32, 32, 32));
     REPORTER_ASSERT(r, a.getGenerationID() == b.getGenerationID());
-    auto img = SkImage::MakeFromBitmap(bm);
-    auto imgA = SkImage::MakeFromBitmap(a);
-    auto imgB = SkImage::MakeFromBitmap(b);
+    auto img = bm.asImage();
+    auto imgA = a.asImage();
+    auto imgB = b.asImage();
     REPORTER_ASSERT(r, img->uniqueID() == bm.getGenerationID());
     REPORTER_ASSERT(r, img->uniqueID() != imgA->uniqueID());
     REPORTER_ASSERT(r, img->uniqueID() != imgB->uniqueID());
diff --git a/tests/ImageFilterCacheTest.cpp b/tests/ImageFilterCacheTest.cpp
index 6f7cb64..92e7771 100644
--- a/tests/ImageFilterCacheTest.cpp
+++ b/tests/ImageFilterCacheTest.cpp
@@ -193,7 +193,7 @@
 DEF_TEST(ImageFilterCache_ImageBackedRaster, reporter) {
     SkBitmap srcBM = create_bm();
 
-    sk_sp<SkImage> srcImage(SkImage::MakeFromBitmap(srcBM));
+    sk_sp<SkImage> srcImage(srcBM.asImage());
 
     test_image_backed(reporter, nullptr, srcImage);
 }
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index c40fb09..812bcca 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -124,7 +124,7 @@
                     SkImageFilters::ColorFilter(std::move(cf), input, cropRect));
         }
         {
-            sk_sp<SkImage> gradientImage(SkImage::MakeFromBitmap(make_gradient_circle(64, 64)));
+            sk_sp<SkImage> gradientImage(make_gradient_circle(64, 64).asImage());
             sk_sp<SkImageFilter> gradientSource(SkImageFilters::Image(std::move(gradientImage)));
 
             this->addFilter("displacement map",
@@ -515,7 +515,7 @@
     sk_sp<SkImageFilter> positiveFilter(SkImageFilters::Blur(kBlurSigma, kBlurSigma, nullptr));
     sk_sp<SkImageFilter> negativeFilter(SkImageFilters::Blur(-kBlurSigma, kBlurSigma, nullptr));
 
-    sk_sp<SkImage> gradient = SkImage::MakeFromBitmap(make_gradient_circle(kWidth, kHeight));
+    sk_sp<SkImage> gradient = make_gradient_circle(kWidth, kHeight).asImage();
     sk_sp<SkSpecialImage> imgSrc(
             SkSpecialImage::MakeFromImage(dContext, SkIRect::MakeWH(kWidth, kHeight), gradient));
 
@@ -607,7 +607,7 @@
     paint.setColor(SK_ColorWHITE);
     canvas.drawRect(SkRect::MakeXYWH(kWidth / 4, kHeight / 4, kWidth / 2, kHeight / 2),
                     paint);
-    sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap);
+    sk_sp<SkImage> image = bitmap.asImage();
     sk_sp<SkSpecialImage> imgSrc(
             SkSpecialImage::MakeFromImage(dContext, SkIRect::MakeWH(kWidth, kHeight), image));
 
@@ -1002,7 +1002,7 @@
     SkBitmap greenBM;
     greenBM.allocN32Pixels(20, 20);
     greenBM.eraseColor(SK_ColorGREEN);
-    sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM));
+    sk_sp<SkImage> greenImage(greenBM.asImage());
     sk_sp<SkImageFilter> source(SkImageFilters::Image(std::move(greenImage)));
     sk_sp<SkImageFilter> merge(SkImageFilters::Merge(source, source));
 
@@ -1637,7 +1637,7 @@
         return;
     }
 
-    sk_sp<SkImage> largeImage(SkImage::MakeFromBitmap(largeBmp));
+    sk_sp<SkImage> largeImage(largeBmp.asImage());
     if (!largeImage) {
         ERRORF(reporter, "Failed to create large image.");
         return;
@@ -1954,7 +1954,7 @@
 
 // Test SkImageSource::filterBounds.
 DEF_TEST(ImageSourceBounds, reporter) {
-    sk_sp<SkImage> image(SkImage::MakeFromBitmap(make_gradient_circle(64, 64)));
+    sk_sp<SkImage> image(make_gradient_circle(64, 64).asImage());
     // Default src and dst rects.
     sk_sp<SkImageFilter> source1(SkImageFilters::Image(image));
     SkIRect imageBounds = SkIRect::MakeWH(64, 64);
diff --git a/tests/ImageFrom565Bitmap.cpp b/tests/ImageFrom565Bitmap.cpp
index 037010e..3349aa8 100644
--- a/tests/ImageFrom565Bitmap.cpp
+++ b/tests/ImageFrom565Bitmap.cpp
@@ -15,5 +15,5 @@
     bm.allocPixels(SkImageInfo::Make(
         5, 7, kRGB_565_SkColorType, kOpaque_SkAlphaType));
     bm.eraseColor(SK_ColorBLACK);
-    REPORTER_ASSERT(r, SkImage::MakeFromBitmap(bm) != nullptr);
+    REPORTER_ASSERT(r, bm.asImage() != nullptr);
 }
diff --git a/tests/ImageTest.cpp b/tests/ImageTest.cpp
index 57ce3fe..7bdf8dd6 100644
--- a/tests/ImageTest.cpp
+++ b/tests/ImageTest.cpp
@@ -314,7 +314,7 @@
         SkBitmap bm;
         rec[i].fMakeProc(&bm);
 
-        sk_sp<SkImage> image(SkImage::MakeFromBitmap(bm));
+        sk_sp<SkImage> image(bm.asImage());
         SkPixmap pmap;
 
         const bool sharedID = (image->uniqueID() == bm.getGenerationID());
@@ -511,7 +511,7 @@
         }
     }
     auto dContext = ctxInfo.directContext();
-    auto texImage = SkImage::MakeFromBitmap(bmp)->makeTextureImage(dContext);
+    auto texImage = bmp.asImage()->makeTextureImage(dContext);
     if (!texImage || texImage->alphaType() != kUnpremul_SkAlphaType) {
         ERRORF(reporter, "Failed to make unpremul texture image.");
         return;
@@ -746,7 +746,7 @@
     SkBitmap tmp;
     REPORTER_ASSERT(reporter, bitmap.extractSubset(&tmp, SkIRect::MakeWH(image->width() / 2,
                                                                          image->height() / 2)));
-    sk_sp<SkImage> subsetImage(SkImage::MakeFromBitmap(tmp));
+    sk_sp<SkImage> subsetImage(tmp.asImage());
     REPORTER_ASSERT(reporter, subsetImage.get());
 
     SkBitmap subsetBitmap;
@@ -1169,7 +1169,7 @@
     SkBitmap bitmap;
     SkImageInfo info = SkImageInfo::MakeN32(10, 10, kPremul_SkAlphaType, rec2020);
     bitmap.allocPixels(info);
-    image = SkImage::MakeFromBitmap(bitmap);
+    image = bitmap.asImage();
     REPORTER_ASSERT(r, SkColorSpace::Equals(rec2020.get(), image->colorSpace()));
 
     sk_sp<SkSurface> surface = SkSurface::MakeRaster(
@@ -1192,7 +1192,7 @@
     srgbBitmap.allocPixels(SkImageInfo::MakeS32(1, 1, kOpaque_SkAlphaType));
     *srgbBitmap.getAddr32(0, 0) = SkSwizzle_RGBA_to_PMColor(0xFF604020);
     srgbBitmap.setImmutable();
-    sk_sp<SkImage> srgbImage = SkImage::MakeFromBitmap(srgbBitmap);
+    sk_sp<SkImage> srgbImage = srgbBitmap.asImage();
     sk_sp<SkImage> p3Image = srgbImage->makeColorSpace(p3, nullptr);
     SkBitmap p3Bitmap;
     bool success = p3Image->asLegacyBitmap(&p3Bitmap);
@@ -1253,7 +1253,7 @@
     SkBitmap bm0;
     make_all_premul(&bm0);
 
-    auto img0 = SkImage::MakeFromBitmap(bm0);
+    auto img0 = bm0.asImage();
     sk_sp<SkData> data = img0->encodeToData(SkEncodedImageFormat::kPNG, 100);
     auto img1 = SkImage::MakeFromEncoded(data);
 
diff --git a/tests/RepeatedClippedBlurTest.cpp b/tests/RepeatedClippedBlurTest.cpp
index fde8bbd..81bfc33 100644
--- a/tests/RepeatedClippedBlurTest.cpp
+++ b/tests/RepeatedClippedBlurTest.cpp
@@ -53,7 +53,7 @@
         bm.eraseColor(SK_ColorRED);
         bm.eraseArea(SkIRect::MakeXYWH(1, 2, 1277, 1274), SK_ColorGREEN);
 
-        sk_sp<SkImage> rasterImg = SkImage::MakeFromBitmap(bm);
+        sk_sp<SkImage> rasterImg = bm.asImage();
         bigImg = rasterImg->makeTextureImage(dContext);
     }
 
diff --git a/tests/SerializationTest.cpp b/tests/SerializationTest.cpp
index 5a58f6d..e13d3eb 100644
--- a/tests/SerializationTest.cpp
+++ b/tests/SerializationTest.cpp
@@ -271,9 +271,9 @@
                                     const SkBitmap& invalidBitmap,
                                     bool shouldSucceed,
                                     skiatest::Reporter* reporter) {
-    sk_sp<SkImage> validImage(SkImage::MakeFromBitmap(validBitmap));
+    sk_sp<SkImage> validImage(validBitmap.asImage());
     sk_sp<SkImageFilter> validBitmapSource(SkImageFilters::Image(std::move(validImage)));
-    sk_sp<SkImage> invalidImage(SkImage::MakeFromBitmap(invalidBitmap));
+    sk_sp<SkImage> invalidImage(invalidBitmap.asImage());
     sk_sp<SkImageFilter> invalidBitmapSource(SkImageFilters::Image(std::move(invalidImage)));
     sk_sp<SkImageFilter> xfermodeImageFilter(
         SkImageFilters::Blend(SkBlendMode::kSrcOver,
diff --git a/tests/ShaderTest.cpp b/tests/ShaderTest.cpp
index 09111de..8189b48 100644
--- a/tests/ShaderTest.cpp
+++ b/tests/ShaderTest.cpp
@@ -40,13 +40,13 @@
     const int H = 100;
     SkBitmap bm;
     bm.allocN32Pixels(W, H);
-    auto img = SkImage::MakeFromBitmap(bm);
+    auto img = bm.asImage();
     const SkMatrix localM = SkMatrix::Scale(2, 3);
     const SkTileMode tmx = SkTileMode::kRepeat;
     const SkTileMode tmy = SkTileMode::kMirror;
 
     auto shader0 = bm.makeShader(tmx, tmy, SkSamplingOptions(), localM);
-    auto shader1 = SkImage::MakeFromBitmap(bm)->makeShader(tmx, tmy, SkSamplingOptions(), localM);
+    auto shader1 = bm.asImage()->makeShader(tmx, tmy, SkSamplingOptions(), localM);
 
     check_isaimage(reporter, shader0.get(), W, H, tmx, tmy, localM);
     check_isaimage(reporter, shader1.get(), W, H, tmx, tmy, localM);
diff --git a/tests/SkImageTest.cpp b/tests/SkImageTest.cpp
index 63ebef5..bbbcdfd 100644
--- a/tests/SkImageTest.cpp
+++ b/tests/SkImageTest.cpp
@@ -27,7 +27,7 @@
         canvas.drawIRect(r, p);
         SkBitmap dstBitmap;
         srcBitmap.extractSubset(&dstBitmap, r);
-        image = SkImage::MakeFromBitmap(dstBitmap);
+        image = dstBitmap.asImage();
     }
 
     SkBitmap tgt;
diff --git a/tests/SkResourceCacheTest.cpp b/tests/SkResourceCacheTest.cpp
index 89339cd..175abe1 100644
--- a/tests/SkResourceCacheTest.cpp
+++ b/tests/SkResourceCacheTest.cpp
@@ -43,7 +43,7 @@
     SkBitmap src;
     src.allocN32Pixels(5, 5);
     src.setImmutable();
-    sk_sp<SkImage> img = SkImage::MakeFromBitmap(src);
+    sk_sp<SkImage> img = src.asImage();
     const auto desc = SkBitmapCacheDesc::Make(img.get());
 
     const SkMipmap* mipmap = SkMipmapCache::FindAndRef(desc, cache);
@@ -85,7 +85,7 @@
     for (int i = 0; i < N; ++i) {
         src[i].allocN32Pixels(5, 5);
         src[i].setImmutable();
-        img[i] = SkImage::MakeFromBitmap(src[i]);
+        img[i] = src[i].asImage();
         SkMipmapCache::AddAndRef(as_IB(img[i].get()), cache)->unref();
         desc[i] = SkBitmapCacheDesc::Make(img[i].get());
     }
diff --git a/tests/SpecialImageTest.cpp b/tests/SpecialImageTest.cpp
index 0bc1518..2e08a39 100644
--- a/tests/SpecialImageTest.cpp
+++ b/tests/SpecialImageTest.cpp
@@ -159,7 +159,7 @@
 static void test_specialimage_image(skiatest::Reporter* reporter) {
     SkBitmap bm = create_bm();
 
-    sk_sp<SkImage> fullImage(SkImage::MakeFromBitmap(bm));
+    sk_sp<SkImage> fullImage(bm.asImage());
 
     sk_sp<SkSpecialImage> fullSImage(SkSpecialImage::MakeFromImage(
                                                             nullptr,
diff --git a/tests/TextureProxyTest.cpp b/tests/TextureProxyTest.cpp
index 1cece0a..affb584 100644
--- a/tests/TextureProxyTest.cpp
+++ b/tests/TextureProxyTest.cpp
@@ -229,7 +229,7 @@
         SkBitmap bm;
         bm.allocPixels(ii);
 
-        rasterImg = SkImage::MakeFromBitmap(bm);
+        rasterImg = bm.asImage();
         REPORTER_ASSERT(reporter, 0 == proxyProvider->numUniqueKeyProxies_TestOnly());
         REPORTER_ASSERT(reporter, 0 == cache->getResourceCount());
     }
diff --git a/tools/DDLPromiseImageHelper.cpp b/tools/DDLPromiseImageHelper.cpp
index 09962b5..49c42ee 100644
--- a/tools/DDLPromiseImageHelper.cpp
+++ b/tools/DDLPromiseImageHelper.cpp
@@ -315,7 +315,7 @@
     // texture wouldn't fit on the GPU. Create a separate bitmap-backed image for each thread.
     if (!curImage.isYUV() && !curImage.callbackContext(0)) {
         SkASSERT(curImage.baseLevel().isImmutable());
-        return SkImage::MakeFromBitmap(curImage.baseLevel());
+        return curImage.baseLevel().asImage();
     }
 
     SkASSERT(curImage.index() == *indexPtr);
diff --git a/tools/SkSharingProc.cpp b/tools/SkSharingProc.cpp
index 78a1d6b..ecd6b8e 100644
--- a/tools/SkSharingProc.cpp
+++ b/tools/SkSharingProc.cpp
@@ -35,7 +35,7 @@
         // Return something so the rest of the debugger can proceeed.
         SkBitmap bm;
         bm.allocPixels(SkImageInfo::MakeN32Premul(1, 1));
-        return SkImage::MakeFromBitmap(bm);
+        return bm.asImage();
     }
     SkSharingDeserialContext* context = reinterpret_cast<SkSharingDeserialContext*>(ctx);
     uint32_t fid;
diff --git a/tools/debugger/DrawCommand.cpp b/tools/debugger/DrawCommand.cpp
index 101b791..c3be6bd 100644
--- a/tools/debugger/DrawCommand.cpp
+++ b/tools/debugger/DrawCommand.cpp
@@ -721,7 +721,7 @@
 bool DrawCommand::flatten(const SkBitmap& bitmap,
                           SkJSONWriter&   writer,
                           UrlDataManager& urlDataManager) {
-    sk_sp<SkImage> image(SkImage::MakeFromBitmap(bitmap));
+    sk_sp<SkImage> image(bitmap.asImage());
     writer.appendString(DEBUGCANVAS_ATTRIBUTE_COLOR, color_type_name(bitmap.colorType()));
     writer.appendString(DEBUGCANVAS_ATTRIBUTE_ALPHA, alpha_type_name(bitmap.alphaType()));
     // Image will appear to have no uses, TODO(nifong): provide the user with a useful explanation