2012-04-16 1 views

답변

4

첫 번째 옵션은 네이티브 EMGU images.save ("filename")입니다. 방법 그러나 품질은 크고 손실이 없습니다. 가장 좋은 방법은 다음 C# 메서드를 사용하는 것입니다.

이 함수는 saveJpeg (SaveFile.FileName, img.ToBitmap(), 100);입니다. saveJpeg (문자열 경로, 비트 맵 img, 긴 품질) 메서드를 기반으로합니다. 이 도움이

using System.Drawing.Imaging; 

private void saveJpeg(string path, Bitmap img, long quality) 
{ 
    // Encoder parameter for image quality 

    EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); 

    // Jpeg image codec 
    ImageCodecInfo jpegCodec = this.getEncoderInfo("image/jpeg"); 

    if (jpegCodec == null) 
    return; 

    EncoderParameters encoderParams = new EncoderParameters(1); 
    encoderParams.Param[0] = qualityParam; 

    img.Save(path, jpegCodec, encoderParams); 
} 

private ImageCodecInfo getEncoderInfo(string mimeType) 
{ 
    // Get image codecs for all image formats 
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); 

    // Find the correct image codec 
    for (int i = 0; i < codecs.Length; i++) 
    if (codecs[i].MimeType == mimeType) 
    return codecs[i]; 
    return null; 
} 

희망,

건배,

크리스

1

좋은 품질과 높은 속도로 빠르고 더러운 방법은 다음과 같습니다

C#

yourImage.toBitmap().Save("filename.png"); 
여기에 언급 된3210

VB

YourImage.ToBitmap().Save("filename.png") 
1

모든 방법은 좋은 그러나 여기 나를 위해 좋은 작동 다른 빠르고 간단한 방법을 공유하고있다. 먼저 Emgu.CV를 가져 오십시오. Image <,> to System.Drawing. 이미지 다음 저장 방법을 사용하여 JPEG을 메모리 스트림에 저장하십시오.

추가 참조 :

using System.Drawing.Imaging; 
using System.IO; 
using Emgu.CV; 

유형이 코드 :

MemoryStream MyMemoryStream = new MemoryStream(); 

Image MySystemImage = MyEmguImage.ToBitmap(); 
MySystemImage.Save(MyMemoryStream, ImageFormat.Jpeg); 

감사