none
BMP的图档转换成Tif二值化,为什么 Windows7 可以正常执行,WindowsXP不行呢?? RRS feed

  • 问题

  • 超级棘手~我有下面的一段语法,目的是要将BMP的图档转换成Tif二值化 
    我的计算机是Windows7 跑起来完全没有问题!!! 
    但是将程序拿到 WindowsXP 就会出现"参数无效" 
    WindowsXP 已经更新至 dotNetFX 3.5 一样错误! 
    为什么 Windows7 可以正常执行,WindowsXP不行呢?? 

    #region 将图片转成深度1的黑白图
            private unsafe void SaveTiff(Bitmap bmp)
            {           
                    ImageCodecInfo icf = GetEncoderInfo("image/tiff");
                    EncoderParameters iparams = new EncoderParameters(1);
                    System.Drawing.Imaging.Encoder iparam = System.Drawing.Imaging.Encoder.Compression;
                    EncoderParameter iparamPara = new EncoderParameter(iparam, (long)(EncoderValue.CompressionCCITT4));
                    iparams.Param[0] = iparamPara;
              
                    bmp.Save(ExePath + @"\NewOut.tif", icf, iparams);//"参数无效" 
               
                bmp.Dispose();
                iparamPara.Dispose();
    
                }
            #endregion
    
      private static ImageCodecInfo GetEncoderInfo(string mimeType)
            {
                int j;
                ImageCodecInfo[] encoders;
    
                encoders = ImageCodecInfo.GetImageDecoders();
                for (j = 0; j < encoders.Length; j++)
                {
                    if (encoders[j].MimeType == mimeType)
                        return encoders[j];
                }
                return null;
            }
    
    2010年2月25日 15:23

答案


  • System.Drawing是GDI+ flat API的封装。XP里面是GDI+ 1.0, Vista里面是GDI+ 1.1。
    你的位图有没有设调色板?


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年2月25日 17:52
    版主