Freigeben über


Image.Save Methode

Definition

Speichert dieses Bild im angegebenen Format im angegebenen Stream.

Überlädt

Save(String, ImageCodecInfo, EncoderParameters)

Speichert dieses Image mit den angegebenen Encoder- und Bildencoderparametern in der angegebenen Datei.

Save(Stream, ImageCodecInfo, EncoderParameters)

Speichert dieses Bild mit den angegebenen Encoder- und Bildencoderparametern im angegebenen Stream.

Save(String, ImageFormat)

Speichert dieses Image im angegebenen Format in der angegebenen Datei.

Save(Stream, ImageFormat)

Speichert dieses Bild im angegebenen Format im angegebenen Stream.

Save(String)

Speichert dieses Image in der angegebenen Datei oder dem Stream.

Save(String, ImageCodecInfo, EncoderParameters)

Quelle:
Image.cs
Quelle:
Image.cs
Quelle:
Image.cs

Speichert dieses Image mit den angegebenen Encoder- und Bildencoderparametern in der angegebenen Datei.

public:
 void Save(System::String ^ filename, System::Drawing::Imaging::ImageCodecInfo ^ encoder, System::Drawing::Imaging::EncoderParameters ^ encoderParams);
public void Save (string filename, System.Drawing.Imaging.ImageCodecInfo encoder, System.Drawing.Imaging.EncoderParameters encoderParams);
public void Save (string filename, System.Drawing.Imaging.ImageCodecInfo encoder, System.Drawing.Imaging.EncoderParameters? encoderParams);
member this.Save : string * System.Drawing.Imaging.ImageCodecInfo * System.Drawing.Imaging.EncoderParameters -> unit
Public Sub Save (filename As String, encoder As ImageCodecInfo, encoderParams As EncoderParameters)

Parameter

filename
String

Eine Zeichenfolge, die den Namen der Datei enthält, in der dieses Image gespeichert werden soll.

encoder
ImageCodecInfo

Das ImageCodecInfo für dieses Image.

encoderParams
EncoderParameters

Eine Instanz von EncoderParameters, die für dieses Image verwendet werden soll.

Ausnahmen

filename oder encoder ist null.

Das Bild wurde im falschen Bildformat gespeichert.

- oder -

Das Bild wurde in derselben Datei gespeichert, aus der es erstellt wurde.

Beispiele

Im folgenden Beispiel wird ein Bitmap -Objekt aus einer BMP-Datei erstellt. Der Code speichert die Bitmap in drei JPEG-Dateien, die jeweils eine andere Qualitätsstufe aufweisen.

#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Drawing::Imaging;
static ImageCodecInfo^ GetEncoderInfo( ImageFormat^ format );
int main()
{
   Bitmap^ myBitmap;
   ImageCodecInfo^ myImageCodecInfo;
   Encoder^ myEncoder;
   EncoderParameter^ myEncoderParameter;
   EncoderParameters^ myEncoderParameters;
   
   // Create a Bitmap object based on a BMP file.
   myBitmap = gcnew Bitmap( "Shapes.bmp" );
   
   // Get an ImageCodecInfo object that represents the JPEG codec.
   myImageCodecInfo = GetEncoderInfo( ImageFormat->Jpeg );
   
   // Create an Encoder object based on the GUID
   // for the Quality parameter category.
   myEncoder = 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.
   myEncoderParameters = gcnew EncoderParameters( 1 );
   
   // Save the bitmap as a JPEG file with quality level 25.
   myEncoderParameter = gcnew EncoderParameter( myEncoder,__int64(25) );
   myEncoderParameters->Param[ 0 ] = myEncoderParameter;
   myBitmap->Save( "Shapes025.jpg", myImageCodecInfo, myEncoderParameters );
   
   // Save the bitmap as a JPEG file with quality level 50.
   myEncoderParameter = gcnew EncoderParameter( myEncoder,__int64(50) );
   myEncoderParameters->Param[ 0 ] = myEncoderParameter;
   myBitmap->Save( "Shapes050.jpg", myImageCodecInfo, myEncoderParameters );
   
   // Save the bitmap as a JPEG file with quality level 75.
   myEncoderParameter = gcnew EncoderParameter( myEncoder,__int64(75) );
   myEncoderParameters->Param[ 0 ] = myEncoderParameter;
   myBitmap->Save( "Shapes075.jpg", myImageCodecInfo, myEncoderParameters );
}

static ImageCodecInfo^ GetEncoderInfo( ImageFormat^ format )
{
   int j;
   array<ImageCodecInfo^>^encoders;
   encoders = ImageCodecInfo::GetImageEncoders();
   for ( j = 0; j < encoders->Length; ++j )
   {
      if ( encoders[ j ]->FormatID == format->Guid)
            return encoders[ j ];

   }
   return nullptr;
}
using System;
using System.Drawing;
using System.Drawing.Imaging;
class Example_SetJPEGQuality
{
    public static void Main()
    {
        Bitmap myBitmap;
        ImageCodecInfo myImageCodecInfo;
        Encoder myEncoder;
        EncoderParameter myEncoderParameter;
        EncoderParameters myEncoderParameters;
                     
        // Create a Bitmap object based on a BMP file.
        myBitmap = new Bitmap("Shapes.bmp");
                     
        // Get an ImageCodecInfo object that represents the JPEG codec.
        myImageCodecInfo = GetEncoderInfo("image/jpeg");
                     
        // Create an Encoder object based on the GUID
                     
        // for the Quality parameter category.
        myEncoder = 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.
        myEncoderParameters = new EncoderParameters(1);
                     
        // Save the bitmap as a JPEG file with quality level 25.
        myEncoderParameter = new EncoderParameter(myEncoder, 25L);
        myEncoderParameters.Param[0] = myEncoderParameter;
        myBitmap.Save("Shapes025.jpg", myImageCodecInfo, myEncoderParameters);
                     
        // Save the bitmap as a JPEG file with quality level 50.
        myEncoderParameter = new EncoderParameter(myEncoder, 50L);
        myEncoderParameters.Param[0] = myEncoderParameter;
        myBitmap.Save("Shapes050.jpg", myImageCodecInfo, myEncoderParameters);
                     
        // Save the bitmap as a JPEG file with quality level 75.
        myEncoderParameter = new EncoderParameter(myEncoder, 75L);
        myEncoderParameters.Param[0] = myEncoderParameter;
        myBitmap.Save("Shapes075.jpg", myImageCodecInfo, myEncoderParameters);
    }
    private static ImageCodecInfo GetEncoderInfo(String mimeType)
    {
        int j;
        ImageCodecInfo[] encoders;
        encoders = ImageCodecInfo.GetImageEncoders();
        for(j = 0; j < encoders.Length; ++j)
        {
            if(encoders[j].MimeType == mimeType)
                return encoders[j];
        }
        return null;
    }
}
Imports System.Drawing
Imports System.Drawing.Imaging


Class Example_SetJPEGQuality

    Public Shared Sub Main()
        Dim myBitmap As Bitmap
        Dim myImageCodecInfo As ImageCodecInfo
        Dim myEncoder As Encoder
        Dim myEncoderParameter As EncoderParameter
        Dim myEncoderParameters As EncoderParameters

        ' Create a Bitmap object based on a BMP file.
        myBitmap = New Bitmap("Shapes.bmp")

        ' Get an ImageCodecInfo object that represents the JPEG codec.
        myImageCodecInfo = GetEncoderInfo(ImageFormat.Jpeg)

        ' Create an Encoder object based on the GUID
        ' for the Quality parameter category.
        myEncoder = 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.
        myEncoderParameters = New EncoderParameters(1)

        ' Save the bitmap as a JPEG file with quality level 25.
        myEncoderParameter = New EncoderParameter(myEncoder, CType(25L, Int32))
        myEncoderParameters.Param(0) = myEncoderParameter
        myBitmap.Save("Shapes025.jpg", myImageCodecInfo, myEncoderParameters)

        ' Save the bitmap as a JPEG file with quality level 50.
        myEncoderParameter = New EncoderParameter(myEncoder, CType(50L, Int32))
        myEncoderParameters.Param(0) = myEncoderParameter
        myBitmap.Save("Shapes050.jpg", myImageCodecInfo, myEncoderParameters)

        ' Save the bitmap as a JPEG file with quality level 75.
        myEncoderParameter = New EncoderParameter(myEncoder, CType(75L, Int32))
        myEncoderParameters.Param(0) = myEncoderParameter
        myBitmap.Save("Shapes075.jpg", myImageCodecInfo, myEncoderParameters)

    End Sub

    Private Shared Function GetEncoderInfo(ByVal format As ImageFormat) As ImageCodecInfo
        Dim j As Integer
        Dim encoders() As ImageCodecInfo
        encoders = ImageCodecInfo.GetImageEncoders()

        j = 0
        While j < encoders.Length
            If encoders(j).FormatID = format.Guid Then
                Return encoders(j)
            End If
            j += 1
        End While
        Return Nothing

    End Function 'GetEncoderInfo
End Class

Hinweise

Das Speichern des Images in derselben Datei, aus der es erstellt wurde, ist nicht zulässig und löst eine Ausnahme aus.

Weitere Informationen

Gilt für:

Save(Stream, ImageCodecInfo, EncoderParameters)

Quelle:
Image.cs
Quelle:
Image.cs
Quelle:
Image.cs

Speichert dieses Bild mit den angegebenen Encoder- und Bildencoderparametern im angegebenen Stream.

public:
 void Save(System::IO::Stream ^ stream, System::Drawing::Imaging::ImageCodecInfo ^ encoder, System::Drawing::Imaging::EncoderParameters ^ encoderParams);
public void Save (System.IO.Stream stream, System.Drawing.Imaging.ImageCodecInfo encoder, System.Drawing.Imaging.EncoderParameters encoderParams);
public void Save (System.IO.Stream stream, System.Drawing.Imaging.ImageCodecInfo encoder, System.Drawing.Imaging.EncoderParameters? encoderParams);
member this.Save : System.IO.Stream * System.Drawing.Imaging.ImageCodecInfo * System.Drawing.Imaging.EncoderParameters -> unit
Public Sub Save (stream As Stream, encoder As ImageCodecInfo, encoderParams As EncoderParameters)

Parameter

stream
Stream

Der Stream zum Speichern des Bilds.

encoder
ImageCodecInfo

Das ImageCodecInfo für dieses Image.

encoderParams
EncoderParameters

Eine Instanz von EncoderParameters, die die vom Bildencoder verwendeten Parameter angibt.

Ausnahmen

stream ist null.

Das Bild wurde im falschen Bildformat gespeichert.

Hinweise

Speichern Sie ein Bild nicht in demselben Stream, der zum Erstellen des Bilds verwendet wurde. Dies kann den Stream beschädigen.

Das Bild muss im Stream mit einem Offset von 0 (null) gespeichert werden. Wenn vor dem Speichern des Bilds zusätzliche Daten in den Stream geschrieben wurden, werden die Bilddaten im Stream beschädigt.

Gilt für:

Save(String, ImageFormat)

Quelle:
Image.cs
Quelle:
Image.cs
Quelle:
Image.cs

Speichert dieses Image im angegebenen Format in der angegebenen Datei.

public:
 void Save(System::String ^ filename, System::Drawing::Imaging::ImageFormat ^ format);
public void Save (string filename, System.Drawing.Imaging.ImageFormat format);
member this.Save : string * System.Drawing.Imaging.ImageFormat -> unit
Public Sub Save (filename As String, format As ImageFormat)

Parameter

filename
String

Eine Zeichenfolge, die den Namen der Datei enthält, in der dieses Image gespeichert werden soll.

format
ImageFormat

Das ImageFormat für dieses Image.

Ausnahmen

filename oder format ist null.

Das Bild wurde im falschen Bildformat gespeichert.

- oder -

Das Bild wurde in derselben Datei gespeichert, aus der es erstellt wurde.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie eine Bitmap aus einem Typ erstellt und die -Methode verwendet Save wird. Um dieses Beispiel auszuführen, fügen Sie den Code in ein Windows Form-Formular ein. Behandeln Sie das -Ereignis des Formulars Paint , und rufen Sie die ConstructFromResourceSaveAsGif -Methode auf, und übergeben Sie e als PaintEventArgs

private:
    void ConstructFromResourceSaveAsGif(PaintEventArgs^ e)
    {
        // Construct a bitmap from the button image resource.
        Bitmap^ bmp1 = gcnew Bitmap(Button::typeid, "Button.bmp");
        String^ savePath =  
            Environment::GetEnvironmentVariable("TEMP") + "\\Button.bmp";

        try
        {
            // Save the image as a GIF.
            bmp1->Save(savePath, System::Drawing::Imaging::ImageFormat::Gif);
        }
        catch (IOException^)
        {
            // Carry on regardless
        }

        // Construct a new image from the GIF file.
        Bitmap^ bmp2 = nullptr;
        if (File::Exists(savePath))
        {
            bmp2 = gcnew Bitmap(savePath);
        }

        // Draw the two images.
        e->Graphics->DrawImage(bmp1, Point(10, 10));

        // If bmp1 did not save to disk, bmp2 may be null
        if (bmp2 != nullptr)
        {
            e->Graphics->DrawImage(bmp2, Point(10, 40));
        }

        // Dispose of the image files.
        delete bmp1;
        if (bmp2 != nullptr)
        {
            delete bmp2;
        }
    }
private void ConstructFromResourceSaveAsGif(PaintEventArgs e)
{

    // Construct a bitmap from the button image resource.
    Bitmap bmp1 = new Bitmap(typeof(Button), "Button.bmp");

    // Save the image as a GIF.
    bmp1.Save("c:\\button.gif", System.Drawing.Imaging.ImageFormat.Gif);

    // Construct a new image from the GIF file.
    Bitmap bmp2 = new Bitmap("c:\\button.gif");

    // Draw the two images.
    e.Graphics.DrawImage(bmp1, new Point(10, 10));
    e.Graphics.DrawImage(bmp2, new Point(10, 40));

    // Dispose of the image files.
    bmp1.Dispose();
    bmp2.Dispose();
}
Private Sub ConstructFromResourceSaveAsGif(ByVal e As PaintEventArgs)

    ' Construct a bitmap from the button image resource.
    Dim bmp1 As New Bitmap(GetType(Button), "Button.bmp")

    ' Save the image as a GIF.
    bmp1.Save("c:\button.gif", System.Drawing.Imaging.ImageFormat.Gif)

    ' Construct a new image from the GIF file.
    Dim bmp2 As New Bitmap("c:\button.gif")

    ' Draw the two images.
    e.Graphics.DrawImage(bmp1, New Point(10, 10))
    e.Graphics.DrawImage(bmp2, New Point(10, 40))

    ' Dispose of the image files.
    bmp1.Dispose()
    bmp2.Dispose()
End Sub

Gilt für:

Save(Stream, ImageFormat)

Quelle:
Image.cs
Quelle:
Image.cs
Quelle:
Image.cs

Speichert dieses Bild im angegebenen Format im angegebenen Stream.

public:
 void Save(System::IO::Stream ^ stream, System::Drawing::Imaging::ImageFormat ^ format);
public void Save (System.IO.Stream stream, System.Drawing.Imaging.ImageFormat format);
member this.Save : System.IO.Stream * System.Drawing.Imaging.ImageFormat -> unit
Public Sub Save (stream As Stream, format As ImageFormat)

Parameter

stream
Stream

Der Stream zum Speichern des Bilds.

format
ImageFormat

Ein ImageFormat, das das Format des gespeicherten Bilds angibt.

Ausnahmen

stream oder format ist null.

Das Bild wurde im falschen Bildformat gespeichert.

Hinweise

Sie sollten vermeiden, ein Bild in demselben Stream zu speichern, der zum Erstellen verwendet wurde. Dies kann den Stream beschädigen.

Das Bild muss im Stream mit einem Offset von 0 (null) gespeichert werden. Wenn vor dem Speichern des Bilds zusätzliche Daten in den Stream geschrieben wurden, werden die Bilddaten im Stream beschädigt.

Gilt für:

Save(String)

Quelle:
Image.cs
Quelle:
Image.cs
Quelle:
Image.cs

Speichert dieses Image in der angegebenen Datei oder dem Stream.

public:
 void Save(System::String ^ filename);
public void Save (string filename);
member this.Save : string -> unit
Public Sub Save (filename As String)

Parameter

filename
String

Eine Zeichenfolge, die den Namen der Datei enthält, in der dieses Image gespeichert werden soll.

Ausnahmen

filename ist null.

Das Bild wurde im falschen Bildformat gespeichert.

- oder -

Das Bild wurde in derselben Datei gespeichert, aus der es erstellt wurde.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die Save -Methode aufgerufen wird. Dieses Beispiel ist für die Verwendung mit Windows Forms konzipiert. Create ein Formular, das eine Schaltfläche mit dem Namen Button5enthält. Fügen Sie den Code in das Formular ein, und ordnen Sie die -Methode dem -Ereignis der Click Schaltfläche zu.

private:
   void Button5_Click( System::Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      try
      {
         if ( image1 != nullptr )
         {
            image1->Save( "c:\\myBitmap.bmp" );
            Button5->Text = "Saved file.";
         }
      }
      catch ( Exception^ ) 
      {
         MessageBox::Show( "There was a problem saving the file."
         "Check the file permissions." );
      }
   }
private void Button5_Click(System.Object sender, System.EventArgs e)
{
    try
    {
        if (image1 != null)
        {
            image1.Save("c:\\myBitmap.bmp");
            Button5.Text = "Saved file.";
        }
    }
    catch(Exception)
    {
        MessageBox.Show("There was a problem saving the file." +
            "Check the file permissions.");
    }
}
Private Sub Button5_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button5.Click
    Try
        If (image1 IsNot Nothing) Then
            image1.Save("c:\myBitmap.bmp")
            Button5.Text = "Saved file."
        End If
    Catch ex As Exception
        MessageBox.Show("There was a problem saving the file." _
        & "Check the file permissions.")
    End Try

End Sub

Hinweise

Wenn kein Encoder für das Dateiformat des Bilds vorhanden ist, wird der PNG-Encoder (Portable Network Graphics) verwendet. Wenn Sie die Save -Methode verwenden, um ein Grafikbild als WMF-Datei (Windows Metafile Format) oder EMF-Datei (Enhanced Metafile Format) zu speichern, wird die resultierende Datei als PNG-Datei (Portable Network Graphics) gespeichert. Dieses Verhalten tritt auf, weil die GDI+-Komponente des .NET Framework über keinen Encoder verfügt, den Sie zum Speichern von Dateien als WMF- oder .emf-Dateien verwenden können.

Das Speichern des Images in derselben Datei, aus der es erstellt wurde, ist nicht zulässig und löst eine Ausnahme aus.

Gilt für: