Compartilhar via


Imagens

Browse sample. Navegue pelo exemplo

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, , GifJpeg, Tiffe 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 como falsepadrã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 falsepadrã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.

Importante

O Save método não redefine a posição do fluxo para 0. Portanto, se você deseja salvar o fluxo em um arquivo, você deve usar o Seek método para redefinir a posição do fluxo de destino para 0 antes de copiá-lo para um arquivo.