Index: Source/platform/graphics/ImageBuffer.cpp |
diff --git a/Source/platform/graphics/ImageBuffer.cpp b/Source/platform/graphics/ImageBuffer.cpp |
index 4061b3da4ae5643486ae32565ba5161d715af0a4..dc908a14d25ff5ff746488cbe12f8a82fd09d0f3 100644 |
--- a/Source/platform/graphics/ImageBuffer.cpp |
+++ b/Source/platform/graphics/ImageBuffer.cpp |
@@ -300,25 +300,16 @@ PassRefPtr<Uint8ClampedArray> getImageData(const IntRect& rect, GraphicsContext* |
RefPtr<Uint8ClampedArray> result = Uint8ClampedArray::createUninitialized(rect.width() * rect.height() * 4); |
- unsigned char* data = result->data(); |
- |
if (rect.x() < 0 |
|| rect.y() < 0 |
|| rect.maxX() > size.width() |
|| rect.maxY() > size.height()) |
result->zeroFill(); |
- unsigned destBytesPerRow = 4 * rect.width(); |
- SkBitmap destBitmap; |
- destBitmap.installPixels(SkImageInfo::MakeN32Premul(rect.width(), rect.height()), data, destBytesPerRow); |
- |
- SkCanvas::Config8888 config8888; |
- if (multiplied == Premultiplied) |
- config8888 = SkCanvas::kRGBA_Premul_Config8888; |
- else |
- config8888 = SkCanvas::kRGBA_Unpremul_Config8888; |
+ SkAlphaType alphaType = (multiplied == Premultiplied) ? kPremul_SkAlphaType : kUnpremul_SkAlphaType; |
+ SkImageInfo info = SkImageInfo::Make(rect.width(), rect.height(), kRGBA_8888_SkColorType, alphaType); |
- context->readPixels(&destBitmap, rect.x(), rect.y(), config8888); |
+ context->readPixels(info, result->data(), 4 * rect.width(), rect.x(), rect.y()); |
return result.release(); |
} |