Imagens
Os gráficos .NET Multi-platform App UI (.NET MAUI) incluem funcionalidade para carregar, salvar, redimensionar e reduzir o tamanho de imagens. Os formatos de imagem suportados dependem da plataforma subjacente.
As imagens são representadas pelo IImage tipo, que define as seguintes propriedades:
- Width, do tipo
float
, que define a largura de uma imagem. - Height, do tipo
float
, que define a altura de uma imagem.
Um argumento opcional ImageFormat pode ser especificado ao carregar e salvar imagens. A ImageFormat enumeração define Png
, , Gif
Jpeg
, Tiff
e Bmp
membros. No entanto, esse argumento só é usado quando o formato de imagem é suportado pela plataforma subjacente.
Observação
.NET MAUI contém duas interfaces diferentes IImage
. Microsoft.Maui.Graphics.IImage
é usado para exibição de imagens, manipulação e persistência ao exibir gráficos em um GraphicsViewarquivo . Microsoft.Maui.IImage
é a interface que abstrai o Image controle.
Carregar uma imagem
A funcionalidade de carregamento de PlatformImage imagem é fornecida pela classe. Você pode carregar imagens de um fluxo pelo FromStream método ou de uma matriz de bytes usando o PlatformImage construtor.
O exemplo a seguir mostra como carregar uma imagem:
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);
}
Neste exemplo, a imagem é recuperada do assembly, carregada como um fluxo e exibida.
Importante
O carregamento de uma imagem incorporada em um assembly requer que a imagem tenha sua ação de compilação definida como Embedded Resource em vez de MauiImage.
Redimensionar uma imagem
As imagens podem ser redimensionadas usando o Resize método, que requer width
e height
argumentos, do tipo float
, que representam as dimensões de destino da imagem. O Resize método também aceita dois argumentos opcionais:
- Um ResizeMode argumento que controla como a imagem é redimensionada para se ajustar às dimensões de destino.
- Um
bool
argumento que controla se a imagem de origem será descartada após a execução da operação de redimensionamento. Esse argumento tem comofalse
padrão , indicando que a imagem de origem não está descartada.
A ResizeMode enumeração define os membros a seguir, que especificam como redimensionar a imagem para o tamanho de destino:
Fit
, que coloca a imagem em caixa de correio para que ela se ajuste ao seu tamanho de destino.Bleed
, que recorta a imagem para que ela se ajuste ao tamanho de destino, preservando sua proporção.Stretch
, que estica a imagem para preencher o espaço disponível. Isso pode resultar em uma alteração na proporção da imagem.
O exemplo a seguir mostra como redimensionar uma imagem:
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);
}
Neste exemplo, a imagem é recuperada do assembly e carregada como um fluxo. A imagem é redimensionada usando o método, com seus argumentos especificando o novo tamanho, e que ela deve ser esticada para preencher o Resize espaço disponível. Além disso, a imagem de origem é descartada. A imagem redimensionada é então desenhada no tamanho real em (10,10).
Reduzir o tamanho de uma imagem
Você pode reduzir o tamanho das imagens usando uma das Downsize sobrecargas. A primeira sobrecarga requer um único float
valor que representa a largura ou altura máxima da imagem e reduz o tamanho da imagem, mantendo sua proporção. A segunda sobrecarga requer dois float
argumentos que representam a largura máxima e a altura máxima da imagem.
As Downsize sobrecargas também aceitam um argumento opcional bool
que controla se a imagem de origem deve ser descartada após a execução da operação de downsizing. Esse argumento tem como false
padrão , indicando que a imagem de origem não está sendo descartada.
O exemplo a seguir mostra como reduzir o tamanho de uma imagem:
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);
}
Neste exemplo, a imagem é recuperada do assembly e carregada como um fluxo. A imagem é reduzida usando o método, com o Downsize argumento especificando que sua maior dimensão deve ser definida como 100 pixels. Além disso, a imagem de origem é descartada. A imagem de tamanho reduzido é então desenhada no tamanho real em (10,10).
Salvar uma imagem
Você pode salvar imagens usando os Save métodos e SaveAsync . Cada método salva o IImage em um Stream, e permite que valores opcionais ImageFormat e de qualidade sejam especificados.
Observação
Os Save métodos e no Android e iOS podem salvar imagens nos formatos JPEG e SaveAsync PNG.
O exemplo a seguir mostra como salvar uma imagem:
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
}
}
Neste exemplo, a imagem é recuperada do assembly e carregada como um fluxo. A imagem é reduzida usando o método, com o Downsize argumento especificando que sua maior dimensão deve ser definida como 150 pixels. Além disso, a imagem de origem é descartada. A imagem de tamanho reduzido é salva em um fluxo.