请问使用GDI+的压缩EncoderCompression,对被压缩图片有没有格式的要求,能不能对tif文件进行压缩?谢谢~~~~

解决方案 »

  1.   

    格式应该是有要求,GDI+应该支持tif文件格式
      

  2.   

    procedure TD3DWindow.SaveGpBitmapToFile(fname: PAnsiChar; Bmp: TGpBitmap);
    var clsid: TGUID;
      ext, format: string;
      Quality: Cardinal;
      Parameters: TEncoderParameters;
    begin
      ext := ExtractFileExt(fname);
      if CompareText(ext, '.bmp') = 0 then format := 'bmp'
      else if CompareText(ext, '.jpg') = 0 then format := 'jpeg'
      else if CompareText(ext, '.png') = 0 then format := 'png'
      else if CompareText(ext, '.tif') = 0 then format := 'tiff';
      if gdiplus.GetEncoderClsid('Image/' + format, CLSID) then
      begin
        Parameters.Count := 1;
        Parameters.Parameter[0].NumberOfValues := 1;
        Quality := 100;
        Parameters.Parameter[0].Value := @Quality;
        Bmp.Save(fname, CLSID, @Parameters);
      end;
    end;
      

  3.   

    我想用EncoderValueCompressionCCITT4压缩;大概代码如下:
    aImage.Save('XXX.tif', Clsid, @Param1);  
    ......
    aImage.SaveAdd(@Param2);
    Param1用的是EncoderSaveFlag,因为要保存多页;Param2是压缩
    //Param2
    Param2.Count := 1;
    Param2.GUID  := EncoderCompression;
    Param2.Parameter[0].type_ := EncoderParameterValueTypeLong;
    Param2.Parameter[0].NumberOfValues := 1;
    Param2.Parameter[0].Value          := @Value;
    Value := EncoderValueCompressionCCITT4; 运行后没出错,但也没压缩,还是LZW
      

  4.   

    Parameters.Count := 1;
    Parameters.Parameter[0].Guid := EncoderCompression;
    Parameters.Parameter[0].NumberOfValues := 1;
    Parameters.Parameter[0].Type_ := EncoderParameterValueTypeLong;
    Value :=EncoderValueCompressionCCITT4;
    Parameters.Parameter[0].Value := @Value;肯定能压缩