Другим вариантом, который может быть столь же медленным, но не требующим каких-либо холстов, было бы написание алгоритма пикселизации с использованием пиксельных изображений 1x1.
Первым шагом будет уменьшение изображения до палитры 32цвета.
Тогда вы бы отобразили изображение на палитру на начальном уровне пикселизации.Например, если изображение было 100 на 200 пикселей, а пикселизация первого уровня - это сетка 50 на 100, замените изображение на, 50x100 = 5000, <IMG>
, каждое на фоновое изображение из цветовой палитры.
Это должно быть выполнено на стороне сервера и передано как массив javascript, который затем будет преобразован в <IMG>
:
image1 = [3, 4, 1, 2, ...];
станет:
<div id="image1Pixelation">
<img src="image1_3.png" width="2px" height="2px"/>
<img src="image1_4.png" width="2px" height="2px"/>
<img src="image1_1.png" width="2px" height="2px"/>
<img src="image1_2.png" width="2px" height="2px"/>
...
</div>
Затем в javascript увеличьте часть <IMG>
и уменьшите сетку, удалив часть <IMG>
, пока не будет достигнуто некоторое стоп-увеличение.
Затем замените его новым изображением с большим увеличением и перевернитеалгоритм для нового изображения.