2013-05-02 118 views
0

我在上载前为图像添加水印。 im面临的问题是,如果图像很小,水印看起来很大.. 我想根据原始图像更改水印图像大小..C#根据原始图像更改水印图像大小

例如, :水印图像应该是原始图像的30%。 我在C#这样做:

imageGraphics.FillRectangle(watermarkBrush,新的Rectangle(新点(X,Y),新的大小(watermarkImage.Width + 1,watermarkImage.Height)));

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

+1

那么...你如何应用水印? 'Image'对象系列具有'.Width'和'.Height'值 - 所以你需要做一个简单的缩放操作,保留宽高比,并使用当你有水印但没有代码时,我们将无法帮助 – Basic 2013-05-02 07:44:41

+0

@基本水印: imageGraphics.FillRectangle(watermarkBrush,new Rectangle(new Point(x,y),new Size(watermarkImage.Width + 1,watermarkImage.Height))); – 2013-05-02 07:48:22

回答

0

那好吧...是这样的:

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))); 
} 

(未测试,你还需要在...点的值来填充)

代码调整大小:Resizing an Image without losing any quality

希望这有助于!

+0

嘿谢谢..我会试着让你知道.. @mortb – 2013-05-02 08:03:45

+0

你能告诉我笏“destWidth,destHeight”是? – 2013-05-02 09:18:45

+0

他们是“复制粘贴”错误。更正:) – mortb 2013-05-02 09:20:24