Прежде чем экспортировать изображение с моего холста, я создаю новый холст, где я делаю некоторые манипуляции (обрезка и т. Д.). В этом новом холсте я заполняю фон до синего, чтобы при экспорте изображения фон был синим. Однако, когда я помещаю рисунок из первого холста, он делает части фона прозрачными. Как это исправить?Рисование изображения в холсте удаляет фон Fll
Вот рисунок с первого холста:
Вот что я хочу:
Но я получаю следующее:
Вот моя часть моего кода:
//Create Copy of Canvas
var copyOfContext = document.createElement('canvas').getContext('2d');
copyOfContext.canvas.width = c.width;
copyOfContext.canvas.height = c.height;
copyOfContext.fillStyle = "yellow";
copyOfContext.fillRect(0, 0, c.width, c.height);
copyOfContext.putImageData(trimmedRect, 0, 0);
croppedImageURL = copyOfContext.canvas.toDataURL("image/png");
Edit: Причина, почему я не делаю это в моем первом холсте Ьс У меня есть конкретный вид для этого, чтобы соответствовать веб-страницы, поэтому я использую второй холст, чтобы получить результат и цвет, который я хочу. :)
'putImageData' игнорирует прозрачность и заменяет все пиксели с тем, что находится в буфере. Чтобы скопировать одну часть холста на другую, просто используйте drawImage. 'ctx1.drawImage (ctx.canvas, 0,0)' Canvas - это просто изображение, и вы можете отображать его так же, как и любое другое изображение. Нет необходимости получать pixelData – Blindman67
Спасибо Blindman. Я получаю ошибку типа, когда передаю trimmedRect в drawImage(). Так что trimmedRect по существу является прямым я вычислил, поэтому я могу получить только прямой чертеж, чтобы я мог поместить его в центр нового холста. – KingPolygon
На самом деле, я думаю, я понял это по-другому. Сначала я помещаю изображение, затем заполняю прямоугольник с помощью 'copyOfContext.globalCompositeOperation =" source-out ";'. Не уверен, есть ли какие-либо против этого. – KingPolygon