Image.Save Метод

Определение

Сохраняет это изображение в указанном потоке в указанном формате.

Перегрузки

Имя Описание
Save(String, ImageCodecInfo, EncoderParameters)

Сохраняет его Image в указанный файл с указанными параметрами кодировщика и кодировщика изображений.

Save(Stream, ImageCodecInfo, EncoderParameters)

Сохраняет это изображение в указанном потоке с указанными параметрами кодировщика и кодировщика изображений.

Save(String, ImageFormat)

Сохраняет его Image в указанный файл в указанном формате.

Save(Stream, ImageFormat)

Сохраняет это изображение в указанном потоке в указанном формате.

Save(String)

Сохраняет его Image в указанном файле или потоке.

Save(String, ImageCodecInfo, EncoderParameters)

Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs

Сохраняет его Image в указанный файл с указанными параметрами кодировщика и кодировщика изображений.

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)

Параметры

filename
String

Строка, содержащая имя файла, в который необходимо сохранить этот Imageфайл.

encoder
ImageCodecInfo

Для ImageCodecInfo этого Image.

encoderParams
EncoderParameters

Для этого Imageиспользуется.EncoderParameters

Исключения

filename или encoder есть null.

Изображение сохранено с неправильным форматом изображения.

–или–

Изображение было сохранено в том же файле, из который он был создан.

Примеры

В следующем примере создается Bitmap объект из BMP-файла. Код сохраняет растровое изображение до трех JPEG-файлов, каждый из которых имеет другой уровень качества.

#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

Комментарии

Сохранение образа в том же файле, из него не допускается и создает исключение.

См. также раздел

Применяется к

Save(Stream, ImageCodecInfo, EncoderParameters)

Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs

Сохраняет это изображение в указанном потоке с указанными параметрами кодировщика и кодировщика изображений.

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)

Параметры

stream
Stream

Место Stream сохранения изображения.

encoder
ImageCodecInfo

Для ImageCodecInfo этого Image.

encoderParams
EncoderParameters

Значение, EncoderParameters указывающее параметры, используемые кодировщиком изображений.

Исключения

stream равно null.

Изображение сохранено с неправильным форматом изображения.

Комментарии

Не сохраняйте изображение в том же потоке, который использовался для создания образа. Это может повредить потоку.

Изображение должно быть сохранено в потоке со смещением нуля. Если все дополнительные данные были записаны в поток перед сохранением изображения, данные изображения в потоке будут повреждены.

Применяется к

Save(String, ImageFormat)

Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs

Сохраняет его Image в указанный файл в указанном формате.

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)

Параметры

filename
String

Строка, содержащая имя файла, в который необходимо сохранить этот Imageфайл.

format
ImageFormat

Для ImageFormat этого Image.

Исключения

filename или format есть null.

Изображение сохранено с неправильным форматом изображения.

–или–

Изображение было сохранено в том же файле, из который он был создан.

Примеры

В следующем примере кода показано, как создать растровое изображение из типа и как использовать Save метод. Чтобы запустить этот пример, вставьте код в Форму Windows Form. Обработка события формы Paint и вызов ConstructFromResourceSaveAsGif метода, передача e как 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

Применяется к

Save(Stream, ImageFormat)

Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs

Сохраняет это изображение в указанном потоке в указанном формате.

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)

Параметры

stream
Stream

Место Stream сохранения изображения.

format
ImageFormat

Значение, ImageFormat указывающее формат сохраненного изображения.

Исключения

stream или format есть null.

Изображение сохранено с неправильным форматом изображения.

Комментарии

Следует избегать сохранения образа в том же потоке, который использовался для его создания. Это может повредить потоку.

Изображение должно быть сохранено в потоке со смещением нуля. Если все дополнительные данные были записаны в поток перед сохранением изображения, данные изображения в потоке будут повреждены.

Применяется к

Save(String)

Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs
Исходный код:
Image.cs

Сохраняет его Image в указанном файле или потоке.

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

Параметры

filename
String

Строка, содержащая имя файла, в который необходимо сохранить этот Imageфайл.

Исключения

filename равно null.

Изображение сохранено с неправильным форматом изображения.

–или–

Изображение было сохранено в том же файле, из который он был создан.

Примеры

В следующем примере кода показано, как вызвать Save метод. Этот пример предназначен для использования с Windows Forms. Создайте форму, содержащую кнопку с именем Button5. Вставьте код в форму и свяжите метод с событием кнопки Click .

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

Комментарии

Если кодировщик не существует для формата файла изображения, используется кодировщик переносимой сетевой графики (PNG). При использовании Save метода для сохранения графического изображения в виде файла метафайла Windows (WMF) или расширенного формата метафайлов (EMF) результирующий файл сохраняется в виде файла переносимой сетевой графики (PNG). Это происходит, так как компонент GDI+ платформы .NET Framework не имеет кодировщика, который можно использовать для сохранения файлов как WMF или .emf файлов.

Сохранение образа в том же файле, из него не допускается и создает исключение.

Применяется к