This commit is contained in:
李志鹏
2026-01-16 15:16:33 +08:00
parent 2b7db933d9
commit 618b9bab1f
3 changed files with 128 additions and 52 deletions

View File

@@ -64,9 +64,10 @@ export async function restoreFabricObject(serializedObject, canvas) {
* @param {fabric.Object} object - 要处理的 fabric 对象
* @param {ImageData} revData - 相反的ImageData白通道的相同位置是否为透明revData为白色为透明黑色为不透明
* @param {number} diff - 差值,默认 25
* @param {Object} rgba - 自定义 rgba 值,默认 { r: 255, g: 255, b: 255, a: 255 }
* @returns {HTMLCanvasElement|null} 包含黑白通道的画布,或 null 如果失败
*/
export function getObjectAlphaToCanvas(object, revData, diff = 30) {
export function getObjectAlphaToCanvas(object, revData, diff = 30, rgba = { r: 255, g: 255, b: 255, a: 255 }) {
const image = object.getElement();
const { width, height } = image;
if (!width || !height) {
@@ -95,10 +96,10 @@ export function getObjectAlphaToCanvas(object, revData, diff = 30) {
data.data[i + 2] = 0;
data.data[i + 3] = 0;
} else {
data.data[i + 0] = 255;
data.data[i + 1] = 255;
data.data[i + 2] = 255;
data.data[i + 3] = 255;
data.data[i + 0] = rgba.r;
data.data[i + 1] = rgba.g;
data.data[i + 2] = rgba.b;
data.data[i + 3] = rgba.a;
}
} else {
data.data[i + 0] = 0;