При использовании toDataUrl() для установки источника тега изображения я обнаружил, что изображение при сохранении намного больше исходного изображения.
В приведенном ниже примере я не указываю второй параметр для функции toDataUrl, поэтому используется качество по умолчанию. Это приводит к значительному увеличению размера оригинального изображения. При задании 1 для полного качества созданное изображение еще больше.
Кто-нибудь знает, почему это происходит или как я могу это остановить?
// create image
var image = document.createElement('img');
// set src using remote image location
image.src = 'test.jpg';
// wait til it has loaded
image.onload = function (){
// set up variables
var fWidth = image.width;
var fHeight = image.height;
// create canvas
var canvas = document.createElement('canvas');
canvas.id = 'canvas';
canvas.width = fWidth;
canvas.height = fHeight;
var context = canvas.getContext('2d');
// draw image to canvas
context.drawImage(image, 0, 0, fWidth, fHeight, 0, 0, fWidth, fHeight);
// get data url
dataUrl = canvas.toDataURL('image/jpeg');
// this image when saved is much larger than the image loaded in
document.write('<img src="' + dataUrl + '" />');
}
Спасибо: D
Вот пример, к сожалению, образ не может быть перекрестным доменом, поэтому мне нужно просто вытащить одно из изображений jsfiddle.
Изображение будет 7.4kb, если вы затем сохраните изображение, которое будет выведено, вы увидите, что оно равно 10kb. Разница более заметна с более подробными изображениями. Если вы установите для качества toDataUrl значение 1, тогда изображение будет 17kb.
Я также использую FireFox 10 для этого, при использовании Chrome размеры изображений еще больше, но не так сильно.