2011-06-17 9 views
6

Quiero poder tomar una imagen de baja calidad de la pantalla. Puedo tomar una foto de mapa de bits, pero no importa lo que haga, no puedo bajar su calidad.Tomando una imagen de baja calidad de la pantalla

+0

Qué quiere decir la reducción de la profundidad de color o reducir el número de píxeles? –

+0

lo que pueda para reducir el tamaño del archivo. –

+0

o quieres mantener la resolución y convertirlo en un formato comprimido con pérdida como png o jpeg? –

Respuesta

3
Image bmp1 = GetScreenImage(); 

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

Msdn for more.

3

Intentaré convertir la imagen en un jpeg comprimido. Lo bueno de jpegs es que puedes establecer qué tan alta debe ser la calidad (es decir, cuánto quieres que se comprima):

Nota: la calidad debe estar entre 1 y 100 (100 es la de mayor tamaño/más alta calidad y 1 siendo el más pequeño de tamaño/calidad más baja.

public void save(string filename, Bitmap img, int quality) 
{ 
    // quality encoding 
    EncoderParameter qualParam = new EncoderParameter(Encoder.Quality, quality); 

    // code for jpeg image type 
    ImageCodecInfo jpegCodec = FindEncoderInfo("image/jpeg"); 


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

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

private ImageCodecInfo FindEncoderInfo(string mimeType) 
{ 
    // search through all codecs for all formats 
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders(); 

    for (int i = 0; i < codecs.Length; i++) 
    { 
     if (codecs[i].MimeType == mimeType) 
     { 
     return codecs[i]; 
     } 
    } 
    return null; 
} 
Cuestiones relacionadas