Como Size
, Width
y Height
son Get()
propiedades de System.Drawing.Image
;
¿Cómo puedo cambiar el tamaño de un objeto de imagen en tiempo de ejecución en C #?
En este momento, estoy creando un nuevo Image
uso:
// objImage is the original Image
Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));
Respuestas:
Esto realizará un cambio de tamaño de alta calidad:
wrapMode.SetWrapMode(WrapMode.TileFlipXY)
evita el efecto fantasma alrededor de los bordes de la imagen: el cambio de tamaño ingenuo muestreará píxeles transparentes más allá de los límites de la imagen, pero al reflejar la imagen podemos obtener una mejor muestra (esta configuración es muy notable)destImage.SetResolution
mantiene el DPI independientemente del tamaño físico; puede aumentar la calidad al reducir las dimensiones de la imagen o al imprimirgraphics.CompositingMode
determina si los píxeles de una imagen de origen se sobrescriben o se combinan con píxeles de fondo.SourceCopy
especifica que cuando se representa un color, sobrescribe el color de fondo.graphics.CompositingQuality
determina el nivel de calidad de representación de las imágenes en capas.graphics.InterpolationMode
determina cómo se calculan los valores intermedios entre dos puntos finalesgraphics.SmoothingMode
especifica si las líneas, las curvas y los bordes de las áreas rellenas usan suavizado (también llamado antialiasing), probablemente solo funciona en vectoresgraphics.PixelOffsetMode
afecta la calidad de renderizado al dibujar la nueva imagenMantener la relación de aspecto se deja como un ejercicio para el lector (en realidad, no creo que sea el trabajo de esta función hacer eso por usted).
Además, este es un buen artículo que describe algunas de las dificultades con el cambio de tamaño de la imagen. La función anterior cubrirá la mayoría de ellos, pero aún debe preocuparse por guardar .
fuente
Bitmap
es esencialmente solo el nombre de la clase, puede guardarlo como el tipo de archivo que desee.System.Drawing
y agregarlausing System.Drawing.Imaging;
No estoy seguro de lo que es tan difícil sobre esto, haga lo que estaba haciendo, use el constructor de mapa de bits sobrecargado para crear una imagen redimensionada, lo único que le faltaba era una conversión al tipo de datos de imagen:
fuente
yourImage
antes de asignarlo a la nueva imagen?en esta pregunta , tendrá algunas respuestas, incluida la mía:
fuente
¿Por qué no usar el
System.Drawing.Image.GetThumbnailImage
método?Ejemplo:
Fuente: http://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage.aspx
fuente
Puede probar net-vips , el enlace de C # para libvips . Es una biblioteca de procesamiento de imágenes perezosa, de transmisión y basada en la demanda, por lo que puede realizar operaciones como esta sin necesidad de cargar toda la imagen.
Por ejemplo, viene con una práctica imagen en miniatura:
También es compatible con el recorte inteligente, una forma de determinar de manera inteligente la parte más importante de la imagen y mantenerla enfocada mientras recorta la imagen. Por ejemplo:
Donde
owl.jpg
hay una composición descentrada:Da este resultado:
Primero, reduce la imagen para obtener el eje vertical a 128 píxeles, luego se reduce a 128 píxeles utilizando la
attention
estrategia. Este busca en la imagen las características que podrían captar la atención de un humano, vea losSmartcrop()
detalles.fuente
Esta voluntad -
////////////////
fuente
fuente
Low
?Este código es el mismo que el publicado en una de las respuestas anteriores ... pero convertirá píxeles transparentes a blanco en lugar de negro ... Gracias :)
fuente
En la aplicación que hice fue necesario crear una función con múltiples opciones. Es bastante grande, pero cambia el tamaño de la imagen, puede mantener la relación de aspecto y puede cortar los bordes para devolver solo el centro de la imagen:
Para facilitar el acceso a la función, es posible agregar algunas funciones sobrecargadas:
Ahora son los dos últimos booleanos opcionales para establecer. Llame a la función así:
fuente
Haga clic aquí http://bhupendrasinghsaini.blogspot.in/2014/07/resize-image-in-c.html
fuente
Este es el código que elaboré para un requisito específico, es decir: el destino siempre está en relación horizontal. Debería darte un buen comienzo.
fuente
Si estás trabajando con un
BitmapSource
:Si desea un control más fino sobre la calidad, ejecute esto primero:
(El valor predeterminado es
BitmapScalingMode.Linear
el equivalente aBitmapScalingMode.LowQuality
).fuente
Yo uso ImageProcessorCore, principalmente porque funciona .Net Core.
Y tiene más opciones, como convertir tipos, recortar imágenes y más
fuente
Cambiar el tamaño y guardar una imagen para que se ajuste a ancho y alto como un lienzo manteniendo la imagen proporcional
fuente
Utilice la siguiente función con el siguiente ejemplo para cambiar el tamaño de la imagen:
fuente
Puede usar el marco Accord.NET para esto. Proporciona algunos métodos diferentes de cambio de tamaño:
fuente
Nota: esto no funcionará con ASP.Net Core porque WebImage depende de System.Web, pero en versiones anteriores de ASP.Net usé este fragmento muchas veces y fue útil.
fuente