我们有一个系统,提供8位灰度的图像,可以是tiff或jpg格式。但是,我们处理图像的组件期望图像以8位jpg格式提供。
当我使用.Net将tiff图像保存为jpg时,它会将其转换为24位图像。
有没有一种方法,最好是简单且快速的方式,将8位灰度tiff图像转换为等效的jpg?
当我使用.Net将tiff图像保存为jpg时,它会将其转换为24位图像。
有没有一种方法,最好是简单且快速的方式,将8位灰度tiff图像转换为等效的jpg?
Image img = Image.FromFile(filePathOriginal);
Bitmap bmp = ConvertTo8bpp(img);
EncoderParameters parameters = new EncoderParameters();
parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 8);
bmp.Save(filePathNew, jpgCodec, parameters);
bmp.Dispose();
img.Dispose();
...
private static Bitmap ConvertTo8bpp(Image img) {
var bmp = new Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);
using (var gr = Graphics.FromImage(bmp))
{
gr.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));
}
return bmp;
}
BitmapPalettes.Gray256
的.Net 2.0。 - TheBlueSky