locked
image compression quality RRS feed

  • Question

  • how do I adjust the jpeg image compression quality using the BitMap Save method?
    I have a C# code fragment --- but cant seem to get it to work in C++

    private void SaveJPGWithCompressionSetting( Image image, string szFileName, long lCompression )
    {
        EncoderParameters eps = new EncoderParameters(1);
        eps.Param[0] = new EncoderParameter( Encoder.Quality, lCompression );
        ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
        image.Save( szFileName, ici, eps );
    }

    Sunday, December 6, 2009 5:33 PM

Answers

  • >how do I adjust the jpeg image compression quality using the BitMap Save method?I have a C# code fragment --- but cant seem to get it to work in C++

    In C++/CLI it'll be essentially a translation of your C# code.

    Even in native C++ using the GDI+ interfaces it's pretty similar, so
    what precisely are you having a problem with?

    FWIW, here's a snippet of some native use of GDI+:

    GUID guid;
    st = Img.GetRawFormat( &guid );
    _ASSERT( st == Ok );

    CLSID clsid;
    if ( -1 != GetEncoderClsidFromGuid( guid, clsid ) )
    {
    EncoderParameters encoderParameters;
    ULONG quality;
    rParameters.Count = 1;
    encoderParameters.Parameter[0].Guid = EncoderQuality;
    encoderParameters.Parameter[0].Type =
    EncoderParameterValueTypeLong;
    encoderParameters.Parameter[0].NumberOfValues = 1;

    // Save the image as a JPEG with quality level 0.
    quality = 100;
    encoderParameters.Parameter[0].Value = &quality;

    st = Img.Save( pFileName, &clsid, &encoderParameters );


    Dave
    • Proposed as answer by Geert van Horrik Wednesday, December 9, 2009 10:22 AM
    • Marked as answer by Nancy Shao Monday, December 14, 2009 5:38 AM
    Sunday, December 6, 2009 10:38 PM