代码之家  ›  专栏  ›  技术社区  ›  alwaysVBNET

将JPEG转换为灰度8位TIFF

c#
  •  0
  • alwaysVBNET  · 技术社区  · 6 年前

    我正在尝试将图像从JPEG(带颜色)转换为带JPEG压缩的灰度8位TIFF,但我的输出是24位黑白TIFF。

    我不知道该怎么处理:

    Bitmap img = new Bitmap(oImage.FilePath);
    
    // Set Encoder Parameters
    EncoderParameters eps = new EncoderParameters(2);
    eps.Param(0) = new EncoderParameter(Encoder.ColorDepth, 8L);
    eps.Param(1) = new EncoderParameter(Encoder.Compression, long.Parse(((EncoderValue)(selEncoderValue.SelectedItem))));
    
    // Set image CodecInfo
    ImageCodecInfo[] ie = ImageCodecInfo.GetImageEncoders();
    ImageCodecInfo tiffEncoder = null;
    for (int i = 0; (i <= (ie.Length - 1)); i++) {
        if ((ie(i).MimeType == "image/tiff")) {
            tiffEncoder = ie(i);
            break;
        }        
    }
    
    string sImageConvertedFilePath = FileExistIncrementer(string.Format("{0}\\{1}_{2}.tif", Path.GetDirectoryName(oImage.FilePath), Path.GetFileNameWithoutExtension(oImage.FileName), selEncoderValue.SelectedItem.ToString));
    
    img.Save(sImageConvertedFilePath, tiffEncoder, eps);
    

    enter image description here

    0 回复  |  直到 6 年前
        1
  •  0
  •   Nemanja Vidačković    6 年前

    灰色图片就是一堆像素,每一个像素具有相同的R G B颜色值。 here you have a link with the solution