我认为这可能会重复,但代码不是: 我使用以下代码将图像从jpg颜色转换为jpg b& w。 TH eproblem是我的颜色jpg大小为500KB,但我转换的b& w jpg是2.18MB,如何优化这种转换的大小。
public void ConvertBlackAndWhiteImage()
{
System.Drawing.Bitmap originalImage = null;
originalImage = new System.Drawing.Bitmap(@"C:\Users\anvesh.veerelli\Pictures\ash 3.jpg");
System.Drawing.Color c;
for (int i = 0; i < originalImage.Width; i++)
{
for (int j = 0; j < originalImage.Height; j++)
{
c = originalImage.GetPixel(i, j);
int r = 0;
r = Convert.ToInt16(c.R);
int g = 0;
g = Convert.ToInt16(c.G);
int b = 0;
b = Convert.ToInt16(c.B);
int ans = (r + g + b) / 3;
if (ans > 128)
{
r = 255;
g = 255;
b = 255;
}
else
{
r = 0;
g = 0;
b = 0;
}
c = System.Drawing.Color.FromArgb(r, g, b);
originalImage.SetPixel(i, j, c);
}
}
string tmpFileName = @"C:\Users\anvesh.veerelli\Pictures\Destination\test.jpg";
originalImage.Save(tmpFileName, System.Drawing.Imaging.ImageFormat.Bmp);
}
答案 0 :(得分:2)
您只需将输出ImageFormat
更改为Jpeg即可。
即使您的文件名是JPEG,图片的内部格式也是BMP。
所以你的最后一行变成了:
originalImage.Save("", System.Drawing.Imaging.ImageFormat.Jpeg);