// 新添加的水印功能----知无涯
/**
 * 为图片添加水印
 * @param {File} file - 原始图片文件
 * @param {string} text - 水印文字
 * @param {object} options - 水印配置选项
 * @returns {Promise<File>} - 返回带水印的新图片文件
 */
export const addWatermarkToImage = (file, text, options = {}) => {
    return new Promise((resolve, reject) => {
        if (!file || !(file instanceof Blob)) {
            reject(new Error('参数必须是Blob或File对象'));
            return;
        }
        if (!text) {
            reject(new Error('水印文字不能为空'));
            return;
        }

        const reader = new FileReader();
        reader.onload = (e) => {
            const img = new Image();
            img.onload = () => {
                try {
                    const canvas = document.createElement('canvas');
                    canvas.width = img.width;
                    canvas.height = img.height;
                    const ctx = canvas.getContext('2d');

                    // 绘制原始图片
                    ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

                    // 设置水印样式 - 增强可见性
                    ctx.font = options.font || 'bold 28px Arial'; // 加大字号并加粗
                    ctx.fillStyle = options.color || 'rgba(0, 0, 0, 0.7)'; // 改为黑色，提高不透明度
                    ctx.textAlign = 'center';
                    ctx.textBaseline = 'middle';

                    // 添加文字阴影增强可读性
                    ctx.shadowColor = 'rgba(255, 255, 255, 0.8)';
                    ctx.shadowBlur = 5;
                    ctx.shadowOffsetX = 1;
                    ctx.shadowOffsetY = 1;

                    // 拆分文本为多行
                    const lines = text.split('\n');
                    const lineHeight = 35; // 每行的高度，可以根据字体大小调整
                    const startY = (canvas.height / 2) - ((lines.length - 1) * lineHeight / 2);

                    // 添加水印文字
                    lines.forEach((line, index) => {
                        ctx.fillText(line, canvas.width / 2, startY + index * lineHeight);
                    });

                    // 清除阴影设置
                    ctx.shadowColor = 'transparent';

                    // 转换为Blob
                    canvas.toBlob((blob) => {
                        if (!blob) {
                            reject(new Error('图片转换失败'));
                            return;
                        }
                        const newFile = new File([blob], file.name || 'watermarked_image', {
                            type: file.type || 'image/jpeg',
                            lastModified: Date.now()
                        });
                        resolve(newFile);
                    }, file.type || 'image/jpeg');
                } catch (error) {
                    reject(error);
                }
            };
            img.onerror = () => reject(new Error('图片加载失败'));
            img.src = e.target.result;
        };
        reader.onerror = () => reject(new Error('文件读取失败'));
        reader.readAsDataURL(file);
    });
};