Travailler avec des images

Travailler avec des images

Aspose.Cells FOSS for Java allows you to embed images directly into les cellules de feuille de travail et récupérer ou supprimer des images existantes. Géré par le PictureCollection exposé par chaque Worksheet,et Chaque Picture l’objet fournit accès aux données d’image, son anchor position, son type d’image détecté et son genre de contenu MIME.


Vue d’ensemble

Chaque table de travail expose ses photos par le biais de Worksheet.getPictures(), qui revient à PictureCollection.Vous pouvez ajouter des images à partir d’un byte. Array, un InputStream, ou un chemin de fichier. la collection fournit une aide méthodes pour détecter le type d’image des bytes crus, résoudre le fichier Extension des données d’image, et extension de cartographie au type de contenu MIME.


Accès aux images sur un feuille de travail

Retrée le PictureCollection par via Worksheet.getPictures().Utiliser PictureCollection.getCount() Pour déterminer combien de photos sont présentes. Les images individuelles sont accessibles par index basé sur zéro. PictureCollection.get(index).


Ajouter une image

Trois surcharges de PictureCollection.add() Disponible, chaque Retourner l’indice basé sur zéro de la photo nouvellement ajoutée :

  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData) d’une arée de byte
  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream) Un InputStream
  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, fileName) De la route de fichier
// 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);

Lire les propriétés de la photo

Une fois que vous avez un Picture Lire la position de l’anchor, données d’image crude, type d’image détecté et type de contenu 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());
}

Détecter le type d’image des bytes rares

Utiliser PictureCollection.detectImageType(data) Pour déterminer le ImageType La valeur enum d’une array de byte sans l’incorporer d’abord.

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);

Supprimer une image

Utiliser PictureCollection.removeAt(index) Pour supprimer une image par son Indice basé sur zéro :

ws.getPictures().removeAt(0);

Conseils et meilleures pratiques

  • Utilisez le add(..., imageData) Si vous avez déjà les bytes dans la mémoire; utiliser le surcharge de courant pour éviter de charger les fichiers grands entièrement.
  • Appel à PictureCollection.detectImageType(data) Pour valider l’image Formats avant l’implantation.
  • Les rangs et les colonnes d’ancre sont des indices basés sur zéro.
  • Picture.getName() Il revient un identifiant interne, pas le nom de fichier original.
  • Les images sont conservées sur XLSX round-trip.

Les problèmes communs

ProblèmeCauseFixé
getCount() Retour 0 après ajouterLe courant a été fermé avant l’ajout completAssurez-vous que le InputStream est ouvert et lisible
ImageType.UNKNOWN RetournerDonnées d’image non supportées ou corrompuesVérifiez que le fichier est valide PNG, JPEG, GIF, BMP ou TIFF
La position de l’image semble erronéeLes indices de la ligne/colonne sont incorrectesUtilisez des indices basés sur zéro pour tous les paramètres d’ancre

FAQ

Quels formats d’image sont soutenus pour l’implantation ?

Le ImageType Enum couvre PNG, JPEG, GIF, BMP, TIFF et EMF. Autres Les formats peuvent être incorporés comme des données binaires mais ont un ImageType de UNKNOWN.

Comment puis-je obtenir l’extension de fichier d’une image intégrée ?

Appel à PictureCollection.extensionFromData(picture.getData()) Avec le Images de bits crus.

Puis-je remplacer des données d’image existantes ?

Oui, récupère le Picture par via get(index) et appeler setData(bytes).

Comment puis-je trouver une photo par nom ?

Réservez toutes les photos avec getCount() et get(index) et comparer Picture.getName().

Les images sont-elles conservées lors de l’enregistrement dans d’autres formats ?

La conservation de l’image dépend du format cible. XLSX round-trip est entièrement supporté.


Le résumé de référence API

Images

méthodeType de retourDescription
getName()StringNom intérieur de la photo.
setName(name)voidDéfinir le nom intérieur.
getUpperLeftRow()intLa ligne basée sur zéro de l’anchor supérieur gauche.
setUpperLeftRow(row)voidMettez la ligne de l’anchor gauche supérieure.
getUpperLeftColumn()intColonne basée sur zéro de l’anchor supérieur gauche.
setUpperLeftColumn(col)voidMettez la colonne de l’anchor à gauche supérieure.
getLowerRightRow()intLa ligne basée sur zéro de l’anchor droit inférieur.
setLowerRightRow(row)voidMettez la ligne d’anchor à droite inférieure.
getLowerRightColumn()intColonne basée sur zéro de l’anchor droit inférieur.
setLowerRightColumn(col)voidMettez la colonne d’ancre à droite inférieure.
getImageType()ImageTypeLe format d’image enum est détecté.
getData()byte[]Les images de bits.
setData(data)voidRemplacer les bytes d’image.
getContentType()StringType de contenu MIME.

PictureCollection

méthodeType de retourDescription
getCount()intNombre de photos sur le tableau.
get(index)PictureRetourner l’image à l’indice basé sur zéro.
add(...)intIl insère une image ; il retourne son index basé sur zéro.
removeAt(index)voidRécupérer l’image sur le index basé sur zéro.
detectImageType(data)ImageTypeDétecte le format d’image à partir de bits crus.
extensionFromData(data)StringRetourne l’extension de fichier pour les données d’image.
contentTypeFromExtension(ext)StringRetourner le type MIME pour une extension de fichier.

Voir aussi

 Français