Сообщение от Taifune
|
var brightness = 0.25 * data[i] + 0.70 * data[i + 1] + 0.09 * data[i + 2] ;
|
Я порылся в своём старом коде и нашел немного другие множители:
Math.floor((data[0]*11+data[1]*16+data[2]*5)/32)
Это разные особенности восприятия яркости в разных условиях? Свои цифры взял из кода Qt.
А относительно оптимизации размера, можно взять исходник библиотеки для работы с подходящим форматом и тупо перевести с C/С++ или другого языка на JS. Я даже уверен что полученный код будет компактней раз так в 3. Можно так же поискать компилятор из C/C++ в JS, или интерпретатор, но тогда будет проигрыш по размеру кода и по быстродействию. Так что надо делать выбор между размерами кода и размером картинок.
Я бы предоставил все оптимизации непосредственно браузеру. Тогда код процедуры сохранения данных сведётся к такому:
location.href = canvas.toDataURL().replace("image/png", "image/octet-stream")