#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?