# Imagens

> A biblioteca de Imagens: importar arquivos PNG e JPG e o que é recusado, a grade de cartões e o inspetor dela, renomear uma imagem com as referências dela, excluir, onde uma imagem é usada, e de onde vem o logotipo padrão do relatório.

**Images** é a primeira categoria sob a raiz Assets: as figuras de que a estação é dona, importadas de arquivos que você escolhe, mais as quatro imagens que o produto semeia (a marca e o logotipo do Ganter Lab, cada um no claro e no escuro). O painel tem o título "Imagens", com a frase "Figuras importadas para os componentes de imagem do dashboard e os layouts de relatório." e a pílula de contagem ("4 imagens"). Lê-la exige **Ver a lógica**; importar, renomear e excluir exigem **Configurar a lógica**.

## Importar imagem… {#import-image}

O verbo sobre a linha Images é um seletor de arquivo (Importar imagem…): ele abre o diálogo de arquivo do próprio navegador, funciona igual na janela da estação e num navegador remoto, e lê o arquivo de onde você está. A biblioteca aceita:

| Regra | O que é recusado |
| --- | --- |
| Extensão `.png`, `.jpg` ou `.jpeg` | Qualquer outra: "'.gif' não é um tipo de imagem suportado. Use PNG ou JPG." |
| Conteúdo que é um PNG inteiro ou um JPEG inteiro | Um HEIC, PDF ou página web renomeado, ou um arquivo cortado no meio da cópia, recusado com a mesma mensagem |
| No máximo 16 MB | "A imagem é maior que o limite de 16 MB.", recusada pelo tamanho que o navegador declara, antes de os bytes viajarem |

Os bytes são copiados para a pasta de recursos da própria aplicação, sob um nome de arquivo opaco, então a figura sobrevive ao arquivo de origem ser movido ou excluído. O nome na biblioteca é o nome do arquivo sem a extensão; ele precisa higienizar para um segmento que nenhuma outra imagem use. Quando dá certo, o cartão novo fica selecionado, o inspetor dele abre, a contagem da árvore cresce e o feed diz "Imagem importada."; uma recusa diz "A importação falhou: …".

## O catálogo {#the-catalog}

Os cartões mostram a miniatura, o nome e a origem (**Sistema** numa imagem do produto, **Meus** numa importada). Filtros: **Origem** e **Por página**; uma biblioteca vazia diz "Nenhuma imagem ainda. Use Importar imagem… na barra de comandos para acrescentar uma.", e um filtro vazio diz "Nenhuma imagem combina com este filtro." com **Limpar o filtro**. O resto da grade e da paginação se comporta como em toda [biblioteca](logic-assets#the-shape-every-library-shares).

## O inspetor {#the-inspector}

Selecionar um cartão mostra a figura em corpo grande, o nome dela e:

| Linha | O que mostra |
| --- | --- |
| Endereço | `Assets.Images.<segment>`: o endereço que uma variável de saída Imagem devolve para esta figura |
| Origem | Biblioteca do produto, ou Minha biblioteca |
| Tipo | PNG ou JPG, pela extensão do arquivo |
| Dimensões | O tamanho em pixels da figura, medido quando ela é mostrada ("1280 × 720 pixels"), e um traço até lá |
| Tamanho do arquivo | O tamanho em disco (B, KB ou MB), e um traço quando o arquivo está ausente |

Uma imagem de Sistema mostra "As imagens de sistema são somente leitura." Uma imagem Meus oferece, a um papel com Configurar a lógica, **Editar** e **Excluir**; os dois ficam esmaecidos enquanto a estação está travada ou um comando de biblioteca roda.

## Editar {#edit}

O Editar abre "Editar `<name>`" no lugar da grade ("Renomeie o recurso de imagem estável e, se quiser, atualize as referências a ele."): a figura, e um campo **Nome** que é um campo de renomeação como o [de uma variável](logic-variables#name-and-address). Enquanto você digita, uma linha mostra a prévia do impacto ("Renomear atualiza os 2 locais que leem este endereço.", "Nenhuma referência usa o endereço atual.", ou "O endereço efetivo não muda; nenhuma referência precisa ser atualizada." quando o nome novo higieniza para o mesmo segmento). Enter, ou sair do campo, confirma ("Uma renomeação válida é salva com Enter ou quando o foco sai do campo."): a imagem mantém o id e o arquivo dela, toda referência enraizada ao endereço antigo é reescrita, e o feed diz "Imagem renomeada e N referências atualizadas." Um nome já ocupado é recusado no lugar, abaixo do campo. O **Voltar** devolve ao catálogo. Renomear uma imagem passa pela mesma reescrita de referências que renomear um ícone ou uma cor.

## O logotipo do relatório {#the-report-logo}

Um [layout de relatório](process-reports) desenha, como logotipo, a imagem desta biblioteca que ele nomeia. Um layout que não nomeia nenhuma desenha o Logotipo da [marca](settings-branding) da estação, que não é uma imagem desta biblioteca: a biblioteca não tem logotipo próprio para escolher. Numa estação atualizada de uma versão que marcava uma imagem como logotipo da organização, todo layout que não nomeava imagem passou a nomear essa imagem, então cada relatório imprime o mesmo logotipo de antes, e a imagem continua aqui.

## Excluir {#delete}

O **Excluir** pergunta "Excluir 'X'? As referências a ela degradam para um marcador de lugar. Isso não pode ser desfeito." e então remove a linha e o arquivo; um componente Imagem de dashboard ou um relatório que a nomeia não desenha nada no lugar. O feed diz "Imagem excluída." Uma imagem de Sistema não pode ser excluída.

## Onde uma imagem é usada {#where-an-image-is-used}

O componente [Imagem](component-image) de dashboard desenha uma imagem desta biblioteca, seja a que ele nomeia, seja a que uma [variável](logic-variables#output-types) de saída Imagem devolve (`Assets.Images.<name>` resolve para o id do recurso); um layout de relatório desenha como logotipo a imagem que ele nomeia. Nada mais lê a pasta: imagens não são ícones, não podem ser vinculadas como símbolos e não são servidas a clientes OPC UA externos.

## O que a biblioteca não faz {#what-the-library-does-not-do}

Ela não redimensiona, não recorta nem converte uma figura, não aceita SVG, GIF, BMP ou WebP, não organiza imagens em pastas, e não substitui os bytes de uma imagem no lugar: importe o arquivo novo e reaponte o que usava o antigo.
