uni-app C# 后台给图片添加水印,报错

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app C# 后台给图片添加水印,报错

1 回复

在处理uni-app与C#后台交互时,为图片添加水印的功能通常涉及以下几个步骤:前端上传图片到后端,后端处理图片(添加水印),然后将处理后的图片返回给前端。如果你遇到了报错,首先需要确定报错的具体信息,以便更好地定位问题。不过,我可以提供一个基本的代码框架,供你参考和调试。

C# 后端代码示例

以下是一个使用ASP.NET Core的C#后端示例,该示例展示了如何接收上传的图片,为其添加水印,然后返回处理后的图片。

  1. 安装必要的NuGet包

    • System.Drawing.Common:用于图像处理。
  2. 控制器代码

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Drawing;
using System.IO;

namespace YourNamespace.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ImageController : ControllerBase
    {
        [HttpPost("AddWatermark")]
        public IActionResult AddWatermark(IFormFile imageFile)
        {
            if (imageFile == null || imageFile.Length == 0)
                return BadRequest("No file uploaded.");

            using (var image = Image.FromStream(imageFile.OpenReadStream()))
            using (var graphics = Graphics.FromImage(image))
            {
                var watermarkFont = new Font("Arial", 20, FontStyle.Bold, GraphicsUnit.Pixel);
                var watermarkBrush = new SolidBrush(Color.FromArgb(128, 255, 255, 255)); // 半透明白色
                var watermarkText = "Watermark";

                var textSize = graphics.MeasureString(watermarkText, watermarkFont);
                var position = new PointF(image.Width - textSize.Width - 10, image.Height - textSize.Height - 10);

                graphics.DrawString(watermarkText, watermarkFont, watermarkBrush, position);

                using (var ms = new MemoryStream())
                {
                    image.Save(ms, image.RawFormat);
                    return File(ms.ToArray(), image.RawFormat.MimeType);
                }
            }
        }
    }
}

前端uni-app代码示例

在uni-app中,你可以使用uni.uploadFile方法上传图片到上述API。

uni.uploadFile({
    url: 'https://yourserver.com/api/image/AddWatermark',
    filePath: tempFilePath, // 上传文件的路径
    name: 'imageFile',
    success: (uploadFileRes) => {
        const data = JSON.parse(uploadFileRes.data);
        // 处理返回的数据,比如显示图片
        console.log(data);
    },
    fail: (err) => {
        console.error(err);
    }
});

注意事项

  • 确保服务器允许接收文件上传。
  • 处理异常和错误情况,比如文件类型不匹配、文件过大等。
  • 根据实际需求调整水印的字体、大小、颜色和位置。
  • 如果报错信息具体指向某个环节(如文件读取、图像处理、响应返回等),应针对该环节进行深入调试。
回到顶部