Странные результаты рисования изображения на другом изображении

#c# #image #watermark #graphic

#c# #изображение #водяной знак #графический

Вопрос:

Дано изображение:

введите описание изображения здесь

И водяной знак:

введите описание изображения здесь

И код:

 var originalImageBytes = originalFile.FileBytes();

// Draw watermark
using (var ms = new MemoryStream(originalImageBytes))
using(var originalImage = Image.FromStream(ms))
using (var watermark = Image.FromFile(Settings.FSO.RootNonPublicDirectory   "Images/Watermark/Watermark.png"))
using (var g = Graphics.FromImage(originalImage))
{
    g.DrawImage(watermark, 0, 0);

    using (var msOut = new MemoryStream())
    {
        originalImage.Save(msOut, ImageFormat.Jpeg);
        return msOut.ToArray();
    }
}
  

Выдает следующий результат:

введите описание изображения здесь

Обратите внимание, размеры указаны правильно, но часть нижней части изображения отсутствует.

Щелчок правой кнопкой мыши и save-as сохранение этого изображения на моем диске выглядит поврежденным:

введите описание изображения здесь

Кто-нибудь имеет представление о том, что здесь происходит?

Комментарии:

1. попробуйте указать весь прямоугольник: g.DrawImage(watermark, new Rectangle(destX, destY, watermark.Width, watermark.Height));

2. @Plutonix, тот же результат. Изображение в браузере выглядит обрезанным, сохранить как показывает исходное изображение.

3. Решена проблема сохранения как, показывающая другое изображение, обслуживала разные байты. Обновил вопрос.

4. Я запустил ваш код, и он выдает действительное изображение без каких-либо повреждений.

5. Вы случайно не используете это на mono?