我对下面的代码有疑问。我下面的代码成功地运行了一个目录,并将图片的分辨率设置为较小的尺寸。但是,文件大小不会改变。例如,尺寸为 2400x1800、文件大小为 1.5MB 的图像将缩放至 800x600,但 800x600 图片的文件大小仍为 1.5MB。我想我可能必须明确压缩图片,但我不确定。有任何想法吗?
private void Form1_Load(object sender, EventArgs e)
{
string[] files = null;
int count = 0;
files = System.IO.Directory.GetFiles(@"C:\Users\..\..\ChristmasPicsResized");
foreach (string file in files)
{
System.Drawing.Bitmap bmp = System.Drawing.Bipmap.FromFile(file);
ResizeBitmap(bmp, 807, 605).Save(
@"C:\users\..\..\TempPicHold\Pic" + count.ToString() + ".jpg");
count++;
}
}
public Bitmap ResizeBitmap(Bitmap b, int nWidth, int nHeight)
{
Bitmap result = new Bitmap(nWidth, nHeight);
using (Graphics g = Graphics.FromImage((Image)result))
g.DrawImage(b, 0, 0, nWidth, nHeight);
return result;
}
发现问题了。感谢@yetapb 显示了更清晰的代码版本,但这仍然不起作用。问题的答案是我需要明确指定图像保存的文件类型。我的猜测是,因为我没有明确指定图像格式,所以没有相应地处理图像压缩。位图只是以较小的分辨率保存,并在其上添加了“.jpg”,并且没有相应地压缩。下面的代码现在可以工作了。
files = System.IO.Directory.GetFiles(@"C:\PicFolder");
for (string file in files)
{
Bitmap tempBmp = new Bitmap(file);
Bitmap bmp = new Bitmap(tempBmp, 807, 605);
bmp.Save(
@"C:\NewPicFolder\Pic" + count + ".jpg",
System.Drawing.Imaging.ImageFormat.Jpeg);
count++;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)