【问题标题】:How to decrease the color depth of jpeg image to 256 colors in c#?如何在c#中将jpeg图像的颜色深度降低到256色?
【发布时间】:2013-09-23 09:18:27
【问题描述】:
MemoryStream msSave = new MemoryStream();
ImageCodecInfo pngCodec = ImageCodecInfo
    .GetImageEncoders()
    .Where(codec => codec.FormatID.Equals(ImageFormat.Png.Guid))
    .FirstOrDefault();

if (pngCodec != null)
{
    EncoderParameters parameters = new EncoderParameters();
    parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 256);
    img.Save(msSave, pngCodec, parameters);
}

img.Save(msSave, imageFormat);

我尝试了这段代码,但没有给出正确的结果?

谁能帮帮我。

【问题讨论】:

  • 您只能将FirstOrDefault 与谓词一起使用,而不是链接WhereFirstOrDefault。此外,您可能希望只有一个编解码器与提供的 GUID 匹配,所以您真的想要SingleOrDefault

标签: c# asp.net bit color-depth


【解决方案1】:

试试这个:

//parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 256);
parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 8);

【讨论】:

  • 再试一次没有成功
【解决方案2】:
MemoryStream msSave = new MemoryStream();
ImageCodecInfo pngCodec = ImageCodecInfo
    .GetImageEncoders()
    .Where(codec => codec.FormatID.Equals(ImageFormat.Png.Guid))
    .FirstOrDefault();

if (pngCodec != null)
{
    EncoderParameters parameters = new EncoderParameters();
    parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth, 256L);
    img.Save(msSave, pngCodec, parameters);
}

img.Save(msSave, imageFormat);

这行得通吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多