Εργασία με εικόνες
Εργασία με εικόνες
Aspose.Cells FOSS for Java allows you to embed images directly into δελτίο εργασιών κελιά και ανακτήστε ή αφαιρέσετε υπάρχουσες εικόνες. Διαχειρίζεται μέσω της PictureCollection Εκθέτονται από κάθε Worksheet,και Κάθε ένα Picture Το αντικείμενο παρέχει πρόσβαση στα δεδομένα εικόνας, το anchor του θέση, τον εντοπισμένο τύπο εικόνας και το είδος περιεχομένου MIME.
ΕΚΤΙΜΗΣΗ
Κάθε βιβλίο παρουσιάζει τις εικόνες του μέσα από το Worksheet.getPictures(), που επιστρέφει σε PictureCollection.Μπορείτε να προσθέσετε εικόνες από ένα byte. ΑΡΕΑ, ΕΝΑΣ InputStream, ή ένα αρχείο δρόμο. η συλλογή παρέχει βοηθούς μέθοδοι για την ανίχνευση του τύπου εικόνας από ξηρούς μύθους, επίλυση του αρχείου επεκτάσεις από τα δεδομένα εικόνας, και την επέκταση χαρτογράφησης στον τύπο περιεχομένου MIME.
Η πρόσβαση σε εικόνες σε ένα φύλλο εργασίας
Αποκτήστε το PictureCollection μέσω Worksheet.getPictures().Χρησιμοποιήστε PictureCollection.getCount() Να προσδιορίσουμε πόσες φωτογραφίες υπάρχουν. Τα ατομικά εικόνες είναι προσβάσιμα μέσω μηδενικού δείκτη. PictureCollection.get(index).
Προσθέστε μια εικόνα
Τρεις υπερφόρτισης από PictureCollection.add() Διατίθεται, κάθε επιστροφή του δείκτη με βάση το μηδέν της πρόσφατα προστιθέμενης εικόνας:
add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData)Από μια μπάτα αρέαadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream)Από την InputStreamadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, fileName)Από ένα αρχείο δρόμου
// 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);Διαβάστε τις ιδιότητες εικόνας
Όταν κρατάς ένα Picture αναφορά, διαβάστε τη θέση του anchor, Τα πρώτα δεδομένα εικόνας, ο τύπος εικόνων που εντοπίστηκε και ο τρόπος περιεχομένου 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());
}Ανακαλύψτε τον τύπο εικόνας από Raw Bytes
Χρησιμοποιήστε PictureCollection.detectImageType(data) Για να καθορίσει το ImageType Η τιμή του ενού ενός byte χωρίς να το ενσωματώσετε πρώτα.
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);Αφαιρέστε μια εικόνα
Χρησιμοποιήστε PictureCollection.removeAt(index) Να διαγράψουμε μια εικόνα με την Ο δείκτης με βάση το μηδέν:
ws.getPictures().removeAt(0);Συμβουλές και βέλτιστες πρακτικές
- Χρησιμοποιήστε το
add(..., imageData)Υπερφόρτωση όταν έχετε ήδη τα bytes στη μνήμη; χρησιμοποιήστε το υπερφόρτωση ροής για να αποφύγετε την φόρτιση μεγάλων αρχείων εντελώς. - Κλήση
PictureCollection.detectImageType(data)Για να επικυρώσει την εικόνα Πρώτα από την ενσωμάτωση. - Οι γραμμές και οι στήλες των αγκών είναι δείκτες που βασίζονται σε μηδέν.
Picture.getName()επιστρέφει ένα εσωτερικό αναγνωριστικό, όχι το αρχικό όνομα.- Οι εικόνες διατηρούνται στο XLSX round-trip.
κοινά ζητήματα
| Θέμα | Αιτία | ΦΙΛΕΞΗ |
|---|---|---|
getCount() Επιστροφή 0 μετά την προσθήκη | Η ροή έκλεισε πριν ολοκληρωθεί η προσθήκη | Βεβαιωθείτε ότι το InputStream είναι ανοιχτό και αναγνωρίσιμο |
ImageType.UNKNOWN Επιστρέφει | Απαράδεκτα ή διαφθορά δεδομένα εικόνας | Ελέγξτε το αρχείο είναι ένα έγκυρο PNG, JPEG, GIF, BMP ή TIFF. |
| Η θέση της εικόνας φαίνεται λάθος | Οι δείκτες στήλης/στήλου είναι εσφαλμένοι | Χρησιμοποιήστε δείκτες με βάση το μηδέν για όλες τις παραμέτρους anchor |
FAQ
Ποια μορφές εικόνας υποστηρίζονται για ενσωμάτωση;?
Η ImageType Το enum καλύπτει PNG, JPEG, GIF, BMP, TIFF και EMF. Μπορεί να χρησιμοποιηθεί ως δυαδικό, αλλά έχει ένα ImageType από UNKNOWN.
Πώς μπορώ να πάρω την επέκταση αρχείου μιας ενσωματωμένης εικόνας;?
Κλήση PictureCollection.extensionFromData(picture.getData()) Με το Φωτογραφίες από ξηρά μπατί.
Μπορώ να αντικαταστήσω τα υπάρχοντα δεδομένα εικόνας;?
Ναι, ανακτήστε το Picture μέσω get(index) και καλεί setData(bytes).
Πώς μπορώ να βρω μια εικόνα με το όνομα;?
Εμφανίστε όλες τις φωτογραφίες με getCount() και get(index) και συγκρίνουμε Picture.getName().
Οι εικόνες διατηρούνται όταν αποθηκεύονται σε άλλες μορφές;?
Η διατήρηση εικόνας εξαρτάται από το τυποποιημένο στόχο.Το XLSX round-trip υποστηρίζεται πλήρως.
Συνοπτική αναφορά API
Φωτογραφία
| Μέθοδος | Τύπος επιστροφής | Περιγραφή |
|---|---|---|
getName() | String | Εσωτερικό όνομα της εικόνας. |
setName(name) | void | Να βάλουμε το εσωτερικό όνομα. |
getUpperLeftRow() | int | 0 με βάση την κορυφή της αριστεράς άγκυρας. |
setUpperLeftRow(row) | void | Κάντε την κορυφή αριστερά γραμμή anchor. |
getUpperLeftColumn() | int | 0 στη βάση της κορυφής αριστεράς άγκυρας. |
setUpperLeftColumn(col) | void | Εισάγετε την κορυφή αριστερή στήλη anchor. |
getLowerRightRow() | int | 0 με βάση την κατώτερη δεξιά γραμμή του εμβρύου. |
setLowerRightRow(row) | void | Βάλτε την κάτω δεξιά γραμμή anchor. |
getLowerRightColumn() | int | 0 στη βάση της δεξιάς κάτω άκρας. |
setLowerRightColumn(col) | void | Βάλτε την κάτω δεξιά στήλη anchor. |
getImageType() | ImageType | Η εικόνα που διαπιστώνεται σε μορφή enum. |
getData() | byte[] | Ακατέργαστη εικόνα bytes. |
setData(data) | void | Αντικαθιστά τα ριζικά byte εικόνας. |
getContentType() | String | MIME τύπου περιεχομένου string. |
PictureCollection
| Μέθοδος | Τύπος επιστροφής | Περιγραφή |
|---|---|---|
getCount() | int | Αριθμός φωτογραφιών στο φύλλο εργασίας. |
get(index) | Picture | Επιστρέφει την εικόνα στο μηδενικό δείκτη. |
add(...) | int | Εισάγει μια εικόνα, επιστρέφει τον δείκτη που βασίζεται στο μηδέν. |
removeAt(index) | void | Αφαιρέστε την εικόνα στο μηδενικό δείκτη. |
detectImageType(data) | ImageType | Ανακαλύπτει τη μορφή εικόνας από ξηρά byte. |
extensionFromData(data) | String | Επιστρέφει την επέκταση αρχείου για τα δεδομένα εικόνας. |
contentTypeFromExtension(ext) | String | Επιστρέφει τον τύπο MIME για μια επέκταση αρχείου. |