C#根据原始图像更改水印图像大小

C#根据原始图像更改水印图像大小,c#,image,watermark,C#,Image,Watermark,在上传之前,我正在为我的图像添加水印。 我面临的问题是,如果图像很小,水印看起来就很大。。 我想根据原始图像更改水印图像大小 例如:水印图像应为原始图像的30%。 我用c#做这件事: FillRectangle(水印画笔,新矩形(新点(x,y),新大小(watermarkImage.Width+1,watermarkImage.Height)) 我应该怎么做才能首先获得图像大小,然后相应地更改水印图像大小???那么……类似于: Bitmap yourImage = ...; Bitmap you

在上传之前,我正在为我的图像添加水印。 我面临的问题是,如果图像很小,水印看起来就很大。。 我想根据原始图像更改水印图像大小

例如:水印图像应为原始图像的30%。 我用c#做这件事:

FillRectangle(水印画笔,新矩形(新点(x,y),新大小(watermarkImage.Width+1,watermarkImage.Height))


我应该怎么做才能首先获得图像大小,然后相应地更改水印图像大小???

那么……类似于:

Bitmap yourImage = ...;
Bitmap yourWatermark = ...;

int newWaterWidth = (int)((float)yourImage.Width * .3);
int newWaterHeight = (int)((float)yourImage.Height* .3);


using(Bitmap resizedWaterm = new Bitmap(newWaterWidth, newWaterHeight))
using(Graphics g = Graphics.FromImage((Image)resizedWaterm))
{
  g.InterpolationMode = InterpolationMode.HighQualityBicubic;
  g.DrawImage(yourWatermark, 0, 0, newWaterWidth , newWaterHeight );
}

int x = ..., y = ...;
using(Graphics g2 = Graphics.FromImage((Image)resizedWaterm))
{
  g2.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width + 1, watermarkImage.Height)));
}
(未测试,您还需要在…点处填写值)

用于从以下位置调整大小的代码:


希望这有帮助

NReco.VideoConverter.FFMpegConverter ffMpeg=新的NReco.VideoConverter.FFMpegConverter()


好。。。如何应用水印?
图像
对象族具有
宽度
高度
值-因此,您需要执行一个简单的缩放操作,以保留纵横比,并在添加水印时使用它,但如果没有代码,我们将无法执行此操作help@Basic用于水印:imageGraphics.FillRectangle(水印笔刷,新矩形)(新点(x,y),新大小(watermarkImage.Width+1,watermarkImage.Height));你能告诉我“最宽,最高”是什么吗?哦,我在想什么…:)n“x,y”是我要放置水印的位置。对吗?确切地说,它们的值与原始语句中的值相同。好的…:)谢谢插值模式给出了一个误差。。我包括了系统。drawinghey谢谢。。它工作得很好。。我评论道:“g.InterpolationMode=InterpolationMode.HighQualityBicubic;”@mortb
            string pathToVideoFile = "D:\\Projects\\Project\\Db_Script\\TAR_Dummy\\TAR_Dummy\\Videos\\"+postedFile.FileName;
            string imagePath = "D:\\Watermarks\\30.png";
            string Id = Guid.NewGuid().ToString();

            //Convert videos from one format to another
            ffMpeg.ConvertMedia(pathToVideoFile, "D:\\Watermarks\\"+Id+".flv", Format.flv);

            //Add Aatermark to videos
            ffMpeg.Invoke("-i "+pathToVideoFile+ " -i "+ imagePath + " -filter_complex \"overlay=10:10\" D:\\Watermarks\\Images\\" + Id+".mp4");

            //Get video thumbnail
            ffMpeg.GetVideoThumbnail(pathToVideoFile, "D:\\Watermarks\\Images\\" + Id.Substring(Id.Length-5)+".jpg");