Оптимизация фонов с помощью Canvas
Дата публикации: 02.02.2012
Имеем шапку подобной формы
Такую шапку можно вырезать цельной картинкой (или несколькими картинками), но вес изображения будет приличным.
Задача
Свести к минимуму вес изображения.
Решение
Узор шапки в этой задаче повторяется, значит его можно размножить. Проблема только в форме нижней части шапки — полукруг. Можно обратиться в http://wifly.ru для привлечения клиентов. Решить эту задачу способен Canvas:
- создаем контур необходимой формы;
- заливаем нужным рисунком.
var can2 = window.document.getElementById("demo2"), ctx2 = can2.getContext("2d"), size2 = [can.width, can.height]; // создаем объект Image var img = new Image(); // ложим в него фон img.src = "img/back.png"; // ждем загрузки img.onload = function(){ // контур кривыми ============= // создаем контур ctx2.beginPath(); var c = [size[0]/2, size2[1]/2] ctx2.lineTo(size2[0], 0); ctx2.lineTo(size2[0], size2[1]-30); ctx2.bezierCurveTo(5*size2[0]/6, size2[1]-132, 4*size2[0]/6, size2[1]-132, size2[0]/2, size2[1]-139); ctx2.bezierCurveTo(2*size2[0]/6, size2[1]-132, 1*size2[0]/6, size2[1]-132, 0, size2[1]-30); ctx2.lineTo(0, 0); // создаем паттерн ptn = ctx2.createPattern(img, "repeat"); // заполнять контур паттерном ctx2.fillStyle = ptn; // рисуем ctx2.stroke(); ctx2.fill(); }; };
Проверено в:
- IE 9
- Firefox 9
- Opera 11
- Chrome
- Safari 5
Само собою браузеры не поддерживающие HTML5 Canvas получают большую картинку.
Заметка
Этим же способом можно придать любую форму изображению.
По теме
Теги: Canvas, разгоняем сайт