con*_*att 3 c# resize image image-resizing
我对以下代码有疑问.我下面的代码成功运行了一个目录,并将图片的resoultion设置为更小的尺寸.但是,文件大小不会更改.例如,尺寸为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;
}
Run Code Online (Sandbox Code Playgroud)
发现了问题.感谢@yetapb显示更清晰的代码版本,但仍然无效.问题的答案是我需要明确指定将图像保存为的文件类型.我的猜测是,因为我没有明确指定图像格式,所以没有相应地处理图像压缩.一个Bitmap刚刚以较小的分辨率保存,并在其上打了一个".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++;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9730 次 |
| 最近记录: |