这是文档 for toDataURL
Syntax
canvas.toDataURL(type, encoderOptions);
Parameters
type Optional
A DOMString indicating the image format. The default type is image/png.
encoderOptions Optional
A Number between 0 and 1 indicating image quality if the requested type is image/jpeg or image/webp.
If this argument is anything else, the default value for image quality is used. Other arguments are ignored.
If this argument is anything else, the default value for image quality is used. Other arguments are ignored.
。图像质量的默认值是多少?
发布于 2015-11-24 21:40:02
眨眼: JPEG为0.92,WEBP为0.80。
壁虎: 0.92用于JPEG (不支持webp )
我是怎么找到的
我使用toDataURL搜索“https://code.google.com/p/chromium/codesearch”
相关代码party/WebKit/Source/core/html/HTMLCanvasElement.cpp&q=toDataURL&sq=package:chromium&l=517
看起来它设置的质量类似于so double quality = UndefinedQualityValue;
,其中UndefinedQualityValue;
是一个常数-1.0。
沿着呼叫链往下走,我们到达party/WebKit/Source/platform/graphics/ImageBuffer.cpp&sq=package:chromium&l=348&rcl=1448382621
bool ImageDataBuffer::encodeImage(const String& mimeType, const double& quality, Vector<unsigned char>* encodedImage) const
{
if (mimeType == "image/jpeg") {
int compressionQuality = JPEGImageEncoder::DefaultCompressionQuality;
if (quality >= 0.0 && quality <= 1.0)
compressionQuality = static_cast<int>(quality * 100 + 0.5);
if (!JPEGImageEncoder::encode(*this, compressionQuality, encodedImage))
return false;
} else if (mimeType == "image/webp") {
int compressionQuality = WEBPImageEncoder::DefaultCompressionQuality;
if (quality >= 0.0 && quality <= 1.0)
compressionQuality = static_cast<int>(quality * 100 + 0.5);
if (!WEBPImageEncoder::encode(*this, compressionQuality, encodedImage))
return false;
} else {
if (!PNGImageEncoder::encode(*this, encodedImage))
return false;
ASSERT(mimeType == "image/png");
}
return true;
}
其值如下:
JPEGImageEncoder::DefaultCompressionQuality = 92
来源WEBPImageEncoder::DefaultCompressionQuality = 80
来源壁虎
我们可以使用mozilla代码搜索遵循类似的过程,或者只使用谷歌的“壁虎图像编码器”,它将您带到以下值: JPEG: 0.92 来源
https://stackoverflow.com/questions/33904144
复制相似问题