BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Facebook Spectrum melhora a confiabilidade do upload de imagens em iOS e Android

Facebook Spectrum melhora a confiabilidade do upload de imagens em iOS e Android

Favoritos

O Facebook Spectrum é uma nova biblioteca de processamento de imagens open source para iOS e Android que tem como objetivo tornar o processo de upload de imagens mais eficiente e confiável, buscando o melhor equilíbrio entre a qualidade da imagem e o tamanho do arquivo.

Como o hardware da câmera móvel melhora rapidamente, nossos telefones capturam e armazenam arquivos maiores e maiores. O upload desses arquivos grandes pode consumir dados móveis; pode levar uma eternidade para eles carregarem; e, às vezes, os arquivos não são carregados.

Além disso, o upload de imagens grandes geralmente é um desperdício, pois a imagem geralmente é redimensionada para o destinatário. Por essas razões, a abordagem que o Spectrum segue é transcodificar a imagem no dispositivo antes de carregá-lo. Isso consiste em aplicar uma lista de transformações, chamadas "receitas", de acordo com o formato da imagem e os requisitos de qualidade do desenvolvedor. Portanto, para cada imagem, a biblioteca digitalizará a receita e selecionará a receita mais eficiente, possivelmente sem perdas, para a operação solicitada, como o upload, corte ou rotação.

O redimensionamento de uma imagem, que é o fator mais importante para afetar o tamanho final da imagem, pode ser obtido usando técnicas de amostragem ou interpolação, e o Spectrum é capaz de determinar qual técnica aplicar com base no tipo de transformação necessária. Por exemplo, a amostragem é sempre mais eficiente que a interpolação, mas pode ser aplicada somente para proporções de tamanhos de imagens de entrada e saída. Para permitir a seleção das técnicas mais eficientes em um número maior de casos, o Spectrum suporta a especificação do tamanho aproximado da imagem de saída, como "exato ou menor" e "exato ou maior". Isso possibilita ajustar o tamanho da imagem de saída de forma que, por exemplo, a amostragem possa ser usada.

Este é um exemplo de como você pode transcodificar uma imagem para upload usando o Spectre:

FSPEncodeRequirement *encodeRequirement =
    [FSPEncodeRequirement encodeRequirementWithFormat:FSPEncodedImageFormat.jpeg
                                                 mode:FSPEncodeRequirementModeLossy
                                              quality:80];

FSPTransformations *transformations = [FSPTransformations new];
transformations.resizeRequirement =
    [[FSPResizeRequirement alloc] initWithMode:FSPResizeRequirementModeExactOrSmaller
                                    targetSize:CGSizeMake(2048, 2048)];

FSPEncodeOptions *options =
    [FSPEncodeOptions encodeOptionsWithEncodeRequirement:encodeRequirement
                                         transformations:transformations
                                                metadata:nil
                                           configuration:nil
                     outputPixelSpecificationRequirement:nil];

NSError *error;
FSPResultData *result = [FSPSpectrum.sharedInstance encodeImage:image options:options error:&error];

Como você pode ver no código acima, é possível codificar uma imagem JPEG especificando o formato e o nível de qualidade requerido, com ou sem perdas e qualquer atributo relativo ao formato da imagem e um conjunto de transformações desejadas, como redução. Você não precisa fornecer detalhes de baixo nível sobre como a transcodificação deve ser realizada.

O Spectrum é escrito em torno de um núcleo C++ e fornece APIs Java e Objective-C. Suporta imagens nos formatos JPEG, PNG e WebP e usa bibliotecas nativas, como MozJpeg e libpng, para um controle mais refinado da codificação de imagens, além do que é suportado pelas APIs de plataforma de propósito geral. Você pode baixá-lo do GitHub do projeto.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT