Εργασία με εικόνες

Εργασία με εικόνες

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) Από την InputStream
  • add(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()int0 με βάση την κορυφή της αριστεράς άγκυρας.
setUpperLeftRow(row)voidΚάντε την κορυφή αριστερά γραμμή anchor.
getUpperLeftColumn()int0 στη βάση της κορυφής αριστεράς άγκυρας.
setUpperLeftColumn(col)voidΕισάγετε την κορυφή αριστερή στήλη anchor.
getLowerRightRow()int0 με βάση την κατώτερη δεξιά γραμμή του εμβρύου.
setLowerRightRow(row)voidΒάλτε την κάτω δεξιά γραμμή anchor.
getLowerRightColumn()int0 στη βάση της δεξιάς κάτω άκρας.
setLowerRightColumn(col)voidΒάλτε την κάτω δεξιά στήλη anchor.
getImageType()ImageTypeΗ εικόνα που διαπιστώνεται σε μορφή enum.
getData()byte[]Ακατέργαστη εικόνα bytes.
setData(data)voidΑντικαθιστά τα ριζικά byte εικόνας.
getContentType()StringMIME τύπου περιεχομένου string.

PictureCollection

ΜέθοδοςΤύπος επιστροφήςΠεριγραφή
getCount()intΑριθμός φωτογραφιών στο φύλλο εργασίας.
get(index)PictureΕπιστρέφει την εικόνα στο μηδενικό δείκτη.
add(...)intΕισάγει μια εικόνα, επιστρέφει τον δείκτη που βασίζεται στο μηδέν.
removeAt(index)voidΑφαιρέστε την εικόνα στο μηδενικό δείκτη.
detectImageType(data)ImageTypeΑνακαλύπτει τη μορφή εικόνας από ξηρά byte.
extensionFromData(data)StringΕπιστρέφει την επέκταση αρχείου για τα δεδομένα εικόνας.
contentTypeFromExtension(ext)StringΕπιστρέφει τον τύπο MIME για μια επέκταση αρχείου.

Δείτε επίσης

 Ελληνικά