مشاركة عبر


كيفية القيام بما يلي: المستوى ضغط JPEG التعيين

قد تحتاج إلى تعديل المعلمات من نسخة عند حفظ الصورة إلى قرص لتصغير الحجم الملف أو تحسين نوعية. يمكنك ضبط جودة JPEG نسخة بواسطة تعديل المستوى ضغط الخاصة بها. لتعيين المستوى ضغط عند حفظ نسخة بتنسيق JPEG، يجب عليك إنشاء EncoderParametersكائن وتمريرها إلى Saveأسلوب Imageفئة. يهيّئ EncoderParametersكائن حيث يتضمن صفيفة يتكون من واحد EncoderParameter. عندما تقوم إنشاء EncoderParameter، تحديد Qualityالمرمز، والمستوى ضغط الذي تريده.

مثال

المثال التالي تعليمات برمجية ينشئ على EncoderParameterالكائن ويحفظ ثلاث JPEG الصور. كل نسخة بتنسيق JPEG هو المحفوظة بالمستوى جودة آخر، بواسطة تعديل longالقيمة التي تم تمريرها إلى EncoderParameterالمنشئ. يتوافق مع المستوى جودة من 0 إلى ضغط أكبر، و يتوافق مع المستوى جودة من 100 إلى الضغط على الأقل.

    Private Sub VaryQualityLevel()
        ' Get a bitmap.
        Dim bmp1 As New Bitmap("c:\TestPhoto.jpg")
        Dim jgpEncoder As ImageCodecInfo = GetEncoder(ImageFormat.Jpeg)

        ' Create an Encoder object based on the GUID
        ' for the Quality parameter category.
        Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality

        ' Create an EncoderParameters object.
        ' An EncoderParameters object has an array of EncoderParameter
        ' objects. In this case, there is only one
        ' EncoderParameter object in the array.
        Dim myEncoderParameters As New EncoderParameters(1)

        Dim myEncoderParameter As New EncoderParameter(myEncoder, 50&)
        myEncoderParameters.Param(0) = myEncoderParameter
        bmp1.Save("c:\TestPhotoQualityFifty.jpg", jgpEncoder, myEncoderParameters)

        myEncoderParameter = New EncoderParameter(myEncoder, 100&)
        myEncoderParameters.Param(0) = myEncoderParameter
        bmp1.Save("c:\TestPhotoQualityHundred.jpg", jgpEncoder, myEncoderParameters)

        ' Save the bitmap as a JPG file with zero quality level compression.
        myEncoderParameter = New EncoderParameter(myEncoder, 0&)
        myEncoderParameters.Param(0) = myEncoderParameter
        bmp1.Save("c:\TestPhotoQualityZero.jpg", jgpEncoder, myEncoderParameters)

    End Sub 'VaryQualityLevel



...


Private Function GetEncoder(ByVal format As ImageFormat) As ImageCodecInfo

    Dim codecs As ImageCodecInfo() = ImageCodecInfo.GetImageDecoders()

    Dim codec As ImageCodecInfo
    For Each codec In codecs
        If codec.FormatID = format.Guid Then
            Return codec
        End If
    Next codec
    Return Nothing

End Function
private void VaryQualityLevel()
{
    // Get a bitmap.
    Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
    ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);

    // Create an Encoder object based on the GUID
    // for the Quality parameter category.
    System.Drawing.Imaging.Encoder myEncoder =
        System.Drawing.Imaging.Encoder.Quality;

    // Create an EncoderParameters object.
    // An EncoderParameters object has an array of EncoderParameter
    // objects. In this case, there is only one
    // EncoderParameter object in the array.
    EncoderParameters myEncoderParameters = new EncoderParameters(1);

    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jgpEncoder, myEncoderParameters);

    myEncoderParameter = new EncoderParameter(myEncoder, 100L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jgpEncoder, myEncoderParameters);

    // Save the bitmap as a JPG file with zero quality level compression.
    myEncoderParameter = new EncoderParameter(myEncoder, 0L);
    myEncoderParameters.Param[0] = myEncoderParameter;
    bmp1.Save(@"c:\TestPhotoQualityZero.jpg", jgpEncoder, myEncoderParameters);

}


...


private ImageCodecInfo GetEncoder(ImageFormat format)
{

    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();

    foreach (ImageCodecInfo codec in codecs)
    {
        if (codec.FormatID == format.Guid)
        {
            return codec;
        }
    }
    return null;
}

التحويل البرمجي للتعليمات البرمجية

يتطلب هذا المثال:

  • أحد تطبيقات Windows Forms.

  • PaintEventArgs، أي هو معلمة PaintEventHandler.

  • ملف نسخة الذي هو باسم TestPhoto.jpgووضعه في c:\.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تحديد معلمات المعتمدة بواسطة أداة ترميز

المبادئ

أنواع صور نقطية

موارد أخرى

استخدام نسخة Encoders و وحدات فك ترميز في مدارة GDI + Detection Tool