diff options
Diffstat (limited to 'src/ports')
-rw-r--r-- | src/ports/SkImageEncoder_CG.cpp | 7 | ||||
-rw-r--r-- | src/ports/SkImageEncoder_WIC.cpp | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/ports/SkImageEncoder_CG.cpp b/src/ports/SkImageEncoder_CG.cpp index b3fd243324..8c2a542fc3 100644 --- a/src/ports/SkImageEncoder_CG.cpp +++ b/src/ports/SkImageEncoder_CG.cpp @@ -89,9 +89,10 @@ bool SkEncodeImageWithCG(SkWStream* stream, const SkPixmap& pixmap, SkEncodedIma // <Error>: CGImageDestinationFinalize image destination does not have enough images // So instead we copy to 8888. if (bm.colorType() == kARGB_4444_SkColorType) { - SkBitmap bitmap8888; - bm.copyTo(&bitmap8888, kN32_SkColorType); - bm.swap(bitmap8888); + SkBitmap bitmapN32; + bitmapN32.allocPixels(bm.info().makeColorType(kN32_SkColorType)); + bm.readPixels(bitmapN32.info(), bitmapN32.getPixels(), bitmapN32.rowBytes(), 0, 0); + bm.swap(bitmapN32); } type = kUTTypePNG; break; diff --git a/src/ports/SkImageEncoder_WIC.cpp b/src/ports/SkImageEncoder_WIC.cpp index 6d355c1d47..1ae9257395 100644 --- a/src/ports/SkImageEncoder_WIC.cpp +++ b/src/ports/SkImageEncoder_WIC.cpp @@ -70,7 +70,9 @@ bool SkEncodeImageWithWIC(SkWStream* stream, const SkPixmap& pixmap, // First convert to BGRA if necessary. SkBitmap bitmap; - if (!bitmapOrig.copyTo(&bitmap, kBGRA_8888_SkColorType)) { + if (!bitmap.tryAllocPixels(bitmapOrig.info().makeColorType(kBGRA_8888_SkColorType)) || + !bitmapOrig.readPixels(bitmap.info(), bitmap.getPixels(), bitmap.rowBytes(), 0, 0)) + { return false; } |