Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2670)

Unified Diff: Source/platform/graphics/ImageBuffer.cpp

Issue 1302423004: Support lossy and lossless <canvas>.toDataURL for webp (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/platform/graphics/ImageBuffer.cpp
diff --git a/Source/platform/graphics/ImageBuffer.cpp b/Source/platform/graphics/ImageBuffer.cpp
index ece9dc7433d21ba3177ece5950bb03cc5136dd95..809f556cda7292a611a66a97af1ca3871aa2c925 100644
--- a/Source/platform/graphics/ImageBuffer.cpp
+++ b/Source/platform/graphics/ImageBuffer.cpp
@@ -351,6 +351,12 @@ static bool encodeImage(const ImageDataBuffer& source, const String& mimeType, c
compressionQuality = static_cast<int>(*quality * 100 + 0.5);
if (!JPEGImageEncoder::encode(source, compressionQuality, encodedImage))
return false;
+ } else if (mimeType == "image/webplossless") {
+ int compressionQuality = WEBPImageEncoder::DefaultCompressionQuality;
+ if (quality && *quality >= 0.0 && *quality <= 1.0)
+ compressionQuality = static_cast<int>(*quality * 100 + 0.5);
+ if (!WEBPImageEncoder::encode(source, compressionQuality, encodedImage, WEBPImageEncoder::Lossless))
+ return false;
} else if (mimeType == "image/webp") {
int compressionQuality = WEBPImageEncoder::DefaultCompressionQuality;
if (quality && *quality >= 0.0 && *quality <= 1.0)
@@ -374,7 +380,13 @@ String ImageDataBuffer::toDataURL(const String& mimeType, const double* quality)
if (!encodeImage(*this, mimeType, quality, &encodedImage))
return "data:,";
- return "data:" + mimeType + ";base64," + base64Encode(encodedImage);
+ // webplossless is an encoder selector: map it to the actual mimeType "image/webp".
+
acterhd 2015/08/27 17:18:19 I'm used ternary operator for replace mimes.
+ String encodedImageMimeType = mimeType;
+ if (mimeType == "image/webplossless")
+ encodedImageMimeType = String("image/webp");
+
+ return "data:" + encodedImageMimeType + ";base64," + base64Encode(encodedImage);
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698