Нанести водяной знак на изображение webp - PullRequest
1 голос
/ 29 мая 2019

Я использую это решение для нанесения водяного знака на изображение, вот мой код:

for (int i = 0; i < Request.Files.Count; i++)
{                        
    Image imgg = Image.FromFile(Server.MapPath(@"\Images\WaterMark.png"));

    HttpPostedFileBase file = Request.Files[i];

    using (Image image = Image.FromStream(file.InputStream, true, true)) //Parameter is not valid exception on uploading .webp file
    using (Image watermarkImage = imgg)
    {
         using (Graphics imageGraphics = Graphics.FromImage(image))
         using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
         {
              int x = 4;
              int y = image.Height - watermarkImage.Height - 30;
              watermarkBrush.TranslateTransform(x, y);
              imageGraphics.FillRectangle(watermarkBrush,
              new Rectangle(new Point(x, y), new Size(watermarkImage.Width + 1, watermarkImage.Height)));

              string extension = System.IO.Path.GetExtension(file.FileName);
              filename = "temp" + DateTime.UtcNow.Ticks + extension;
              filename = Server.MapPath(@"~\Images\Ads\" + filename);
              var i2 = new Bitmap(image);
              //  image.Save(Server.MapPath(@"~\Images\Ads\" + filename));
              System.IO.Directory.CreateDirectory(Server.MapPath(@"~\Images\Ads\"));

              i2.Save(filename);                                
         }
    }
}

Это прекрасно работает для всех изображений, кроме .webp. Когда я загружаю изображение .webp, я получаю следующее исключение на Image.FromStream

Параметр недействителен

Как я могу применить водяной знак на .webp изображении?

...