다음을 통해 공유


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)

Source:
Image.cs
Source:
Image.cs
Source:
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

EncoderParameters에 사용할 Image입니다.

예외

filename 또는 encodernull인 경우

이미지가 잘못된 이미지 형식으로 저장된 경우

또는

이미지를 만드는 데 사용된 동일한 파일에 이미지가 저장된 경우

예제

다음 예제에서는 BMP 파일에서 개체를 만듭니다 Bitmap . 이 코드는 비트맵을 각각 다른 품질 수준으로 세 개의 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

설명

생성된 것과 동일한 파일에 이미지를 저장하는 것은 허용되지 않으며 예외를 throw합니다.

추가 정보

적용 대상

Save(Stream, ImageCodecInfo, EncoderParameters)

Source:
Image.cs
Source:
Image.cs
Source:
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인 경우

이미지가 잘못된 이미지 형식으로 저장된 경우

설명

이미지를 생성하는 데 사용된 것과 동일한 스트림에 이미지를 저장하지 마세요. 이렇게 하면 스트림이 손상될 수 있습니다.

이미지는 오프셋이 0인 스트림에 저장해야 합니다. 이미지를 저장하기 전에 스트림에 추가 데이터가 기록된 경우 스트림의 이미지 데이터가 손상됩니다.

적용 대상

Save(String, ImageFormat)

Source:
Image.cs
Source:
Image.cs
Source:
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 또는 formatnull인 경우

이미지가 잘못된 이미지 형식으로 저장된 경우

또는

이미지를 만드는 데 사용된 동일한 파일에 이미지가 저장된 경우

예제

다음 코드 예제에서는 형식에서 비트맵을 생성하는 방법과 메서드를 사용하는 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)

Source:
Image.cs
Source:
Image.cs
Source:
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 또는 formatnull인 경우

이미지가 잘못된 이미지 형식으로 저장된 경우

설명

이미지를 생성하는 데 사용된 것과 동일한 스트림에 이미지를 저장하지 않아야 합니다. 이렇게 하면 스트림이 손상될 수 있습니다.

이미지는 오프셋이 0인 스트림에 저장해야 합니다. 이미지를 저장하기 전에 스트림에 추가 데이터가 기록된 경우 스트림의 이미지 데이터가 손상됩니다.

적용 대상

Save(String)

Source:
Image.cs
Source:
Image.cs
Source:
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단추가 포함된 폼을 Create. 코드를 양식에 붙여넣고 메서드를 단추의 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 사용하여 그래픽 이미지를 WMF(Windows 메타파일 형식) 또는 EMF(고급 메타파일 형식) 파일로 저장하면 결과 파일이 PNG(이식 가능한 네트워크 그래픽) 파일로 저장됩니다. 이 동작은 .NET Framework GDI+ 구성 요소에 파일을 .wmf 또는 .emf 파일로 저장하는 데 사용할 수 있는 인코더가 없기 때문에 발생합니다.

생성된 것과 동일한 파일에 이미지를 저장하는 것은 허용되지 않으며 예외를 throw합니다.

적용 대상