Используя <canvas>
элемент HTML5 , я хотел бы загрузить файл изображения (PNG, JPEG и т. Д.), Нарисовать его на холсте полностью прозрачно, а затем добавить его. Я выяснил, как загрузить изображение и нарисовать его в холст, но я не знаю, как изменить его непрозрачность, как только он был нарисован.
Вот код, который у меня есть:
var canvas = document.getElementById('myCanvas');
if (canvas.getContext)
{
var c = canvas.getContext('2d');
c.globalAlpha = 0;
var img = new Image();
img.onload = function() {
c.drawImage(img, 0, 0);
}
img.src = 'image.jpg';
}
Кто-нибудь, пожалуйста, укажите мне правильное направление, например, свойство для установки или функция для вызова, которая изменит непрозрачность?
canvas
элемент, который имеетglobalAlpha
свойство, а контекст, который вы получаете из холста.canvas2d.fillStyle = "rgba(255, 255, 255, 0.5)";
не работает. Значение должно быть в шестнадцатеричном виде.Несколько простых примеров кода для использования
globalAlpha
:Если вам нужно
img
загрузить:Ноты:
Установите
'src'
последнее, чтобы гарантировать, что вашonload
обработчик вызывается на всех платформах, даже если изображение уже находится в кэше.Оберните изменения в такие вещи, как
globalAlpha
между asave
иrestore
(на самом деле используйте их много), чтобы убедиться, что вы не забьете настройки из другого места, особенно когда биты кода рисования будут вызываться из событий.источник
globalAlpha
ничего не стирает . Он установит альфа для всего последующего рисования (он не меняет ничего уже нарисованного), поэтому в коде примера я обертываю егоsave
иrestore
ограничиваю то, к чему он применяется.Редактировать:
Ответ, помеченный как «правильный», не является правильным.Это легко сделать. Попробуйте этот код, поменяв местами «ie.jpg» с любым изображением, которое у вас есть под рукой:
Ключ - это свойство globalAlpha.
Протестировано с IE 9, FF 5, Safari 5 и Chrome 12 на Win7.
источник
Пост старый, пока я пойду с моим предложением. Предложение основано на манипулировании пикселями в контексте Canvas 2D. От MDN:
Для управления пикселями мы будем использовать две функции: getImageData и putImageData
Использование функции getImageData:
и синтаксис putImageData:
Где контекст - это ваш холст 2d контекст
Таким образом, чтобы получить значения красного, зеленого, синего и альфа, мы сделаем следующее:
Где x - смещение по x, y - смещение по y на холсте
Таким образом, у нас есть код, делающий изображение полупрозрачным
Вы можете сделать свои собственные "шейдеры" - см. Полную статью MDN здесь
источник
Ты можешь. Прозрачный холст можно быстро убрать, используя глобальную составную операцию назначения-выхода . Он не идеален на 100%, иногда оставляет некоторые следы, но его можно настроить, в зависимости от того, что необходимо (например, используйте «источник поверх» и залейте его белым цветом с альфа-каналом в 0,13, затем потушите, чтобы подготовить холст).
источник
Я думаю, что это лучше всего отвечает на вопрос, фактически изменяет альфа-значение того, что уже нарисовано. Может быть, это не было частью API, когда был задан этот вопрос.
заданный 2d контекст
c
.источник
Если вы используете библиотеку jCanvas, вы можете использовать свойство непрозрачности при рисовании. Если вам нужен эффект затухания, просто перерисуйте с разными значениями.
источник
Ты не можешь Это графика в непосредственном режиме. Но вы можете имитировать его, рисуя поверх него прямоугольник в цвете фона с непрозрачностью.
Если изображение поверх чего-то другого, чем постоянный цвет, то оно становится немного сложнее. Вы должны быть в состоянии использовать методы манипуляции с пикселями в этом случае. Просто сохраните область перед тем, как нарисовать изображение, а затем смешайте его снова с непрозрачностью.
источник