Trabalhar com imagens
Trabalhar com imagens
Aspose.Cells FOSS for Java allows you to embed images directly into células da planilha e recuperar ou remover imagens existentes. Gestão através do PictureCollection expostos por cada um dos Estados-Membros. Worksheet, e cada um deles. Picture objeto fornece acesso aos dados de imagem, sua âncora posição, o tipo de imagem detectada e o seu tipo MIME.
Resumo geral
Cada folha de trabalho expõe as suas imagens através do Worksheet.getPictures(), que retorna um PictureCollection.Pode adicionar imagens de um byte . Array, um InputStream, ou um caminho de arquivo. A coleção fornece auxiliar métodos para a detecção do tipo de imagem a partir dos bytes brutos, resolvendo o ficheiro extensão a partir de dados de imagem e extensor de mapeamento para tipo de conteúdo MIME.
Acessar imagens numa planilha
Recuperar o PictureCollection via: Worksheet.getPictures().- Usar . PictureCollection.getCount() para determinar quantas fotografias estão presentes. As imagens individuais são acessíveis por índice baseado em zero através de: PictureCollection.get(index).
Adicionando uma imagem
Três sobrecargas de PictureCollection.add() são disponíveis, cada um dos quais tem uma Retornar o índice com base em zero da imagem recém-adicionada:
add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData)de uma matriz byteadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream)de um InputStreamadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, fileName)de um caminho de arquivo
// Embed an image from bytes into cells A1:C5
byte[] imgData = Files.readAllBytes(Paths.get("logo.png"));
int idx = ws.getPictures().add(0, 0, 4, 2, imgData);Leitura de Propriedades da Imagem
Uma vez que você segurar um Picture referência, ler a posição da âncora;, Dados de imagem bruta, tipo de imagem detectada e tipo do conteúdo MIME:
PictureCollection pics = ws.getPictures();
for (int i = 0; i < pics.getCount(); i++) {
Picture p = pics.get(i);
System.out.printf("Name=%s type=%s anchor=[%d,%d]-[%d,%d]%n",
p.getName(), p.getImageType(),
p.getUpperLeftRow(), p.getUpperLeftColumn(),
p.getLowerRightRow(), p.getLowerRightColumn());
}Detecção de tipo de imagem a partir de bytes cruos
Utilização: PictureCollection.detectImageType(data) para determinar o ImageType enum valor de uma matriz byte sem incorporá-lo primeiro.
PictureCollection pics = ws.getPictures();
byte[] data = Files.readAllBytes(Paths.get("chart.png"));
ImageType type = pics.detectImageType(data);
String ext = pics.extensionFromData(data);
String mime = pics.contentTypeFromExtension(ext);
System.out.printf("type=%s ext=%s mime=%s%n", type, ext, mime);Remover uma imagem
Utilização: PictureCollection.removeAt(index) para apagar uma imagem por sua índice baseado em zero:
ws.getPictures().removeAt(0);Dicas e melhores práticas
- Utilize o
add(..., imageData)sobrecarga quando você já tem os bytes na memória; use a sobrecarga de fluxo para evitar carregar arquivos grandes inteiramente. - Chama-me .
PictureCollection.detectImageType(data)para validar a imagem. Formatar antes da incorporação. - As linhas e colunas de ancoragem são índices baseados em zero.
Picture.getName()Retorna um identificador interno, não o nome do ficheiro original.- As fotos são preservadas em XLSX ida e volta.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
getCount() retorna 0 após adição. | O fluxo foi encerrado antes de a adição ser concluída . | Certifique-se de que o InputStream está aberto e legível. |
ImageType.UNKNOWN devolvido | Dados de imagem não suportados ou corrompidos | Verifique se o arquivo é um PNG, JPEG, GIF, BMP ou TIFF válido |
| Posição da imagem parece errada. | Índices de linhas/colunas incorretos. | Utilize índices baseados em zero para todos os parâmetros de ancoragem. |
FAQ
Que formatos de imagem são suportados para a incorporação?
A Comissão ImageType Enum abrange PNG, JPEG, GIF, BMP, TIFF e EMF. Outras Os formatos podem ser incorporados como dados binários, mas têm um ImageType de: UNKNOWN.
Como posso obter a extensão de arquivo de uma imagem embutida?
Chama-me . PictureCollection.extensionFromData(picture.getData()) com o imagem em bytes brutos.
Posso substituir um dado de imagem existente?
Sim, retira o… Picture via: get(index) E chama-me. setData(bytes).
Como é que encontro uma foto por nome?
Iterar sobre todas as imagens com getCount() e a) get(index) e comparar Picture.getName().
As imagens são preservadas quando salvas para outros formatos?
A preservação da imagem depende do formato alvo. XLSX de ida e volta é totalmente suportado.
Resumo de referência da API
Imagem:
| Método de avaliação | Tipo de devolução | Descrição: |
|---|---|---|
getName() | String | Nome interno da imagem. |
setName(name) | void | Indica o nome interno. |
getUpperLeftRow() | int | A linha zero da ancoragem superior esquerda. |
setUpperLeftRow(row) | void | Coloca a linha de ancoragem superior esquerda. |
getUpperLeftColumn() | int | Coluna de base zero da âncora superior esquerda. |
setUpperLeftColumn(col) | void | Coloca a coluna de ancoragem superior esquerda. |
getLowerRightRow() | int | A linha zero da âncora inferior direita. |
setLowerRightRow(row) | void | Coloca a linha de ancoragem inferior direita. |
getLowerRightColumn() | int | Coluna de base zero da âncora inferior direita. |
setLowerRightColumn(col) | void | Coloca a coluna de ancoragem inferior direita. |
getImageType() | ImageType | Valor enum do formato de imagem detectado. |
getData() | byte[] | Bytes de imagem bruta. |
setData(data) | void | Substitui os bytes da imagem bruta. |
getContentType() | String | MIME tipo de conteúdo string. |
PictureCollection
| Método de avaliação | Tipo de devolução | Descrição: |
|---|---|---|
getCount() | int | Número de imagens na folha de cálculo. |
get(index) | Picture | Retorna a imagem no índice baseado em zero. |
add(...) | int | Incorpora uma imagem; retorna o seu índice baseado em zero. |
removeAt(index) | void | Remove a imagem no índice baseado em zero. |
detectImageType(data) | ImageType | Detecta o formato da imagem a partir de bytes brutos. |
extensionFromData(data) | String | Retorna a extensão de arquivo para os dados da imagem. |
contentTypeFromExtension(ext) | String | Retorna o tipo MIME para uma extensão de arquivo. |