【发布时间】:2014-11-12 12:26:23
【问题描述】:
我正在使用下面的代码生成带水印的图像,问题是,即使生成的文件尺寸较小,生成的文件总是比原始文件大,例如:
原始.jpg (1920 * 1440) = 1.11 MB
生成的.jpg (960 * 720) = 1.77 MB
我错过了什么吗?
C#:
private void AddWaterMark(string target, string NewName, string newwidth, string newheight)
{
Image imgToResize = Image.FromFile(Path.Combine(target, NewName));
Bitmap indexedImage = new Bitmap(imgToResize, newwidth, newheight);
Graphics g = Graphics.FromImage(indexedImage);
g.DrawImage(indexedImage, new Rectangle(0, 0, newwidth, newheight), 0, 0, indexedImage.Width, indexedImage.Height, GraphicsUnit.Pixel);
g.RotateTransform(-35);
g.DrawString("WWW.example.COM", new Font("Verdana", 24, FontStyle.Bold), new SolidBrush(Color.FromArgb(75, 255, 255, 255)), -100, 350);
imgToResize.Dispose();
indexedImage.Save(target + "\\" + NewName);
indexedImage.Dispose();
g.Dispose();
}
VB:
Private Sub AddWaterMark(target As String, NewName As String, newwidth As String, newheight As String)
Dim imgToResize As Image = Image.FromFile(Path.Combine(target, NewName))
Dim indexedImage As New Bitmap(imgToResize, newwidth, newheight)
Dim g As Graphics = Graphics.FromImage(indexedImage)
g.DrawImage(indexedImage, New Rectangle(0, 0, newwidth, newheight), 0, 0, indexedImage.Width, indexedImage.Height, GraphicsUnit.Pixel)
g.RotateTransform(-35)
g.DrawString("WWW.example.COM", New Font("Verdana", 24, FontStyle.Bold), New SolidBrush(Color.FromArgb(75, 255, 255, 255)), -100, 350)
imgToResize.Dispose()
indexedImage.Save(target + "\" + NewName)
indexedImage.Dispose()
g.Dispose()
End Sub
【问题讨论】:
-
我添加了:
g.InterpolationMode = InterpolationMode.Low大小还是一样,1.77 MB!
标签: c# vb.net image watermark drawimage