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 byteadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream)Un InputStreamadd(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ème | Cause | Fixé |
|---|---|---|
getCount() Retour 0 après ajouter | Le courant a été fermé avant l’ajout complet | Assurez-vous que le InputStream est ouvert et lisible |
ImageType.UNKNOWN Retourner | Données d’image non supportées ou corrompues | Vérifiez que le fichier est valide PNG, JPEG, GIF, BMP ou TIFF |
| La position de l’image semble erronée | Les indices de la ligne/colonne sont incorrectes | Utilisez 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éthode | Type de retour | Description |
|---|---|---|
getName() | String | Nom intérieur de la photo. |
setName(name) | void | Définir le nom intérieur. |
getUpperLeftRow() | int | La ligne basée sur zéro de l’anchor supérieur gauche. |
setUpperLeftRow(row) | void | Mettez la ligne de l’anchor gauche supérieure. |
getUpperLeftColumn() | int | Colonne basée sur zéro de l’anchor supérieur gauche. |
setUpperLeftColumn(col) | void | Mettez la colonne de l’anchor à gauche supérieure. |
getLowerRightRow() | int | La ligne basée sur zéro de l’anchor droit inférieur. |
setLowerRightRow(row) | void | Mettez la ligne d’anchor à droite inférieure. |
getLowerRightColumn() | int | Colonne basée sur zéro de l’anchor droit inférieur. |
setLowerRightColumn(col) | void | Mettez la colonne d’ancre à droite inférieure. |
getImageType() | ImageType | Le format d’image enum est détecté. |
getData() | byte[] | Les images de bits. |
setData(data) | void | Remplacer les bytes d’image. |
getContentType() | String | Type de contenu MIME. |
PictureCollection
| méthode | Type de retour | Description |
|---|---|---|
getCount() | int | Nombre de photos sur le tableau. |
get(index) | Picture | Retourner l’image à l’indice basé sur zéro. |
add(...) | int | Il insère une image ; il retourne son index basé sur zéro. |
removeAt(index) | void | Récupérer l’image sur le index basé sur zéro. |
detectImageType(data) | ImageType | Détecte le format d’image à partir de bits crus. |
extensionFromData(data) | String | Retourne l’extension de fichier pour les données d’image. |
contentTypeFromExtension(ext) | String | Retourner le type MIME pour une extension de fichier. |