Necesito una foto del usuario, con diferentes extensiones de formato, y siempre quiero guardarla como "jpg", para un fácil manejo. ¿hay una buena manera de hacerlo en C# sin armar la calidad?C# convertir formatos de imagen a jpg
Respuesta
Desde: http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoderparameter.aspx
private void VaryQualityLevel()
{
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.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.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder,
50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jgpEncoder,
myEncoderParameters);
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jgpEncoder,
myEncoderParameters);
// Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = new EncoderParameter(myEncoder, 0L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityZero.jpg", jgpEncoder,
myEncoderParameters);
}
...
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
Excelente gracias –
Por encima el código no parece funcionar para mí. No puede encontrar la clase ImageCodecInfo, –
funciona ... btw ¿Qué significa @symbol en @c: \ TestPhotoQualityZero.jpg significa –
Puede usar las API de imagen para crear una imagen en la memoria y luego persistir en JPG. http://msdn.microsoft.com/en-us/library/ms142147.aspx
de Windows GDI + proporciona la Image class y la Bitmap class para almacenar imágenes en la memoria y la manipulación de imágenes en la memoria. GDI + escribe imágenes en archivos de disco con la ayuda de codificadores de imagen y carga imágenes de archivos de disco con la ayuda de decodificadores de imágenes.
Compruebe Image.Save Method sobrecargas para implementar su funcionalidad. que admiten varios formatos de imagen del tipo ImageFormat Class.
seguir el ejemplo de Image.Save Method (String, ImageCodecInfo, EncoderParameters), que le permitirá ahorrar Jpg
archivo con codificación etc.
fragmento de código:
informaciónusing 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);
}
// Codec
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;
}
}
Esperanza esta ayuda ..
Utilizo esta extensión simple para convertir una secuencia, todo lo que hace es convertirla y no hace nada por la calidad.
public static Stream ConvertImage(this Stream originalStream, ImageFormat format)
{
var image = Image.FromStream(originalStream);
var stream = new MemoryStream();
image.Save(stream, format);
stream.Position = 0;
return stream;
}
uso:
var outputStream = gifStream.ConvertImage(ImageFormat.Png);
esta es la solución más fácil para este problema. la mayoría de los desarrolladores simplemente lo omiten: 3 – iceDragon
Prueba esto:
public static class BitmapExtension
{
public static void Save(this Bitmap bitmap, String fileName, ImageFormat imageFormat, long quality = 75L)
{
using (var encoderParameters = new EncoderParameters(1))
using (encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality))
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
bitmap.Save(fileName, codecs.Single(codec => codec.FormatID == imageFormat.Guid), encoderParameters);
}
}
}
...
Bitmap bitmap = new Bitmap("myImage.bmp");
bitmap.Save("myImage.jpg", ImageFormat.Jpeg, 50L);
- 1. Cómo convertir una imagen JPG a PNG
- 2. ¿Convertir imagen JPG/GIF a PNG en PHP?
- 3. Cómo convertir archivos SVG a otros formatos de imagen
- 4. convertir tiff a formato jpg
- 5. Convertidor de JPG a PDF en C#
- 6. conversión de fem a jpg
- 7. ¿Convertir tzdata a otros formatos?
- 8. Bmp a jpg/png en C#
- 9. php imagick convertir PNG a jpg
- 10. Convertir imagen jpg a formato gif, png y bmp usando PHP
- 11. PIL - Convertir Marcos GIF a JPG
- 12. SVG a JPG/PNG
- 13. PARA convertir formato .jpg a .eps
- 14. Cómo convertir bmp a jpg en vb6
- 15. ¿Convertir una imagen a XAML?
- 16. html to jpg con C#
- 17. ¿Convertir imagen a binario?
- 18. Convertir imagen a gráfica en C#
- 19. ¿Cómo puedo editar una imagen jpg a través de Java?
- 20. PIL Convertir PNG o GIF con transparencia a JPG sin
- 21. Exportar PDF a JPG (s) en C#
- 22. Conversión de imágenes .jpg a .png
- 23. cómo convertir formatos de fecha php a GMT y viceversa?
- 24. ¿Qué formatos de imagen son compatibles con CANVAS en html5?
- 25. Calidad de un JPG guardado en C#
- 26. Guardar imagen en una variedad de formatos de archivo
- 27. ¿Utiliza PHP para convertir PNG a JPG con compresión?
- 28. Problema al convertir bmp a jpg usando TJpegImage Componente
- 29. Convertir un byte arry en una imagen OpenCV en C++
- 30. ¿Combina SVG y .JPG en una imagen?
Depende de la plataforma - web, la aplicación móvil o incluso si yout aceptan tarjeta de foto :) –