Я использую это решение для нанесения водяного знака на изображение, вот мой код:
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
изображение?