Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los gráficos .NET Multi-platform App UI (.NET MAUI) incluyen funcionalidad para cargar, guardar, cambiar el tamaño y reducir el tamaño de las imágenes. Los formatos de imagen admitidos dependen de la plataforma subyacente.
El tipo IImage representa las imágenes, que define las siguientes propiedades:
- Width, de tipo
float
, que define el ancho de una imagen. - Height, de tipo
float
, que define el alto de una imagen.
Se puede especificar un argumento opcional ImageFormat al cargar y guardar imágenes. La enumeración ImageFormat define los miembros Png
, Jpeg
, Gif
, Tiff
y Bmp
. Sin embargo, este argumento solo se usa cuando la plataforma subyacente admite el formato de imagen.
Nota:
.NET MAUI contiene dos interfaces IImage
diferentes. Microsoft.Maui.Graphics.IImage
se usa para la visualización, manipulación y persistencia de imágenes al mostrar gráficos en GraphicsView. Microsoft.Maui.IImage
es la interfaz que abstrae el control Image.
Cargar una imagen
La clase PlatformImage proporciona la funcionalidad de carga de imágenes. Puedes cargar imágenes desde una secuencia por el método FromStream o desde una matriz de bytes mediante el constructor PlatformImage.
En el ejemplo siguiente se muestra cómo cargar una imagen:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
if (image != null)
{
canvas.DrawImage(image, 10, 10, image.Width, image.Height);
}
En este ejemplo, la imagen se recupera del ensamblado, se carga como una secuencia y se muestra.
Importante
Cargar una imagen insertada en un ensamblado requiere que la imagen tenga su acción de compilación establecida en Recurso incrustado en lugar de MauiImage.
Ajuste del tamaño de una imagen
Las imágenes se pueden ajustar mediante el método Resize, que requiere argumentos width
y height
, de tipo float
, que representan las dimensiones de destino de la imagen. El método Resize también acepta dos argumentos opcionales:
- Un argumento ResizeMode que controla cómo se cambia el tamaño de la imagen para ajustarse a sus dimensiones de destino.
- Un argumento
bool
que controla si la imagen de origen se eliminará después de realizar la operación de cambio de tamaño. Este argumento tiene como valor predeterminadofalse
, lo que indica que la imagen de origen no se elimina.
La enumeración ResizeMode define los siguientes miembros, que especifican cómo cambiar el tamaño de la imagen al tamaño de destino:
Fit
, que aplica el formato letterbox a la imagen para que se ajuste a su tamaño de destino.Bleed
, que recorta la imagen para que se ajuste a su tamaño de destino, a la vez que conserva su relación de aspecto.Stretch
, que amplía la imagen para rellenar el espacio disponible. Esto puede dar lugar a un cambio en la relación de aspecto de la imagen.
En el siguiente ejemplo se muestra cómo cambiar el tamaño de una imagen:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
if (image != null)
{
IImage newImage = image.Resize(100, 60, ResizeMode.Stretch, true);
canvas.DrawImage(newImage, 10, 10, newImage.Width, newImage.Height);
}
En este ejemplo, la imagen se recupera del ensamblado y se carga como una secuencia. La imagen se cambia de tamaño mediante el método Resize, con sus argumentos especificando el nuevo tamaño y que se debe estirar para rellenar el espacio disponible. Además, se elimina la imagen de origen. A continuación, la imagen ajustada se dibuja en tamaño real a (10,10).
Reducir una imagen
Puedes reducir el tamaño de las imágenes mediante una de las sobrecargas Downsize. La primera sobrecarga requiere un único valor float
que representa el ancho o alto máximo de la imagen y reduce el tamaño de la imagen mientras mantiene su relación de aspecto. La segunda sobrecarga requiere dos argumentos float
que representan el ancho y el alto máximos de la imagen.
Las sobrecargas Downsize también aceptan un argumento opcional bool
que controla si se debe eliminar la imagen de origen después de realizar la operación de reducción de tamaño. Este argumento tiene como valor predeterminado false
, lo que indica que no se elimina la imagen de origen.
En el siguiente ejemplo se muestra cómo reducir el tamaño de una imagen:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
if (image != null)
{
IImage newImage = image.Downsize(100, true);
canvas.DrawImage(newImage, 10, 10, newImage.Width, newImage.Height);
}
En este ejemplo, la imagen se recupera del ensamblado y se carga como una secuencia. La imagen se reduce mediante el método Downsize, con el argumento que especifica que su dimensión más grande debe establecerse en 100 píxeles. Además, se elimina la imagen de origen. A continuación, la imagen de tamaño reducido se dibuja en tamaño real a (10,10).
Guardar una imagen
Puedes guardar imágenes mediante los métodos Save y SaveAsync. Cada método guarda IImage en Stream y permite especificar valores opcionales ImageFormat y de calidad.
En el siguiente ejemplo se muestra cómo guardar una imagen:
using Microsoft.Maui.Graphics.Platform;
using System.Reflection;
using IImage = Microsoft.Maui.Graphics.IImage;
IImage image;
Assembly assembly = GetType().GetTypeInfo().Assembly;
using (Stream stream = assembly.GetManifestResourceStream("GraphicsViewDemos.Resources.Images.dotnet_bot.png"))
{
image = PlatformImage.FromStream(stream);
}
// Save image to a memory stream
if (image != null)
{
IImage newImage = image.Downsize(150, true);
using (MemoryStream memStream = new MemoryStream())
{
newImage.Save(memStream);
// Reset destination stream position to 0 if saving to a file
}
}
En este ejemplo, la imagen se recupera del ensamblado y se carga como una secuencia. La imagen se reduce con el método Downsize, con el argumento que especifica que su dimensión más grande debe establecerse en 150 píxeles. Además, se elimina la imagen de origen. Después la imagen de tamaño reducido se guarda en una secuencia.