Μετατροπή Διαφανειών Παρουσίασης σε Εικόνες σε Java
Εισαγωγή
Το Aspose.Slides for Java μπορεί να αποδίδει μεμονωμένες διαφάνειες από παρουσιάσεις PowerPoint και OpenDocument ως PNG, JPEG, GIF, TIFF και άλλες μορφές εικόνας.
Για να μετατρέψετε μια διαφάνεια σε εικόνα, ακολουθήστε τα εξής βήματα:
- Φορτώστε την παρουσίαση με την κλάση Presentation.
- Επιλέξτε τη διαφάνεια που θέλετε να αποδώσετε.
- Αν χρειάζεται, διαμορφώστε την απόδοση με την κλάση RenderingOptions ή την κλάση TiffOptions.
- Κληλώστε τη μέθοδο ISlide.getImage . Επιστρέφει ένα αντικείμενο IImage.
- Κληλώστε τη μέθοδο IImage.save και καθορίστε τη μορφή εξόδου με μια τιμή ImageFormat.
Μετατροπή μιας Διαφάνειας σε Εικόνα PNG
Η πιο απλή μετατροπή χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις απόδοσης. Το προκύπτον αντικείμενο IImage μπορεί να επεξεργαστεί στη μνήμη ή να αποθηκευτεί σε αρχείο.
Το παρακάτω παράδειγμα Java αποδίδει την πρώτη διαφάνεια και την αποθηκεύει ως εικόνα PNG:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage();
try {
image.save("Slide_0.png", ImageFormat.Png);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Μετατροπή Διαφανειών σε Εικόνες με Προσαρμοσμένα Μεγέθη
Χρησιμοποιήστε την υπερφόρτωση της ISlide.getImage που δέχεται μια τιμή Dimension για να αποδώσετε μια διαφάνεια με ακριβείς διαστάσεις εικονοστοιχείων.
Το παρακάτω παράδειγμα δημιουργεί μια εικόνα JPEG 1820 × 1040:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import java.awt.Dimension;
Dimension imageSize = new Dimension(1820, 1040);
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(imageSize);
try {
image.save("Slide_0.jpg", ImageFormat.Jpeg);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Μετατροπή Διαφανειών με Σημειώσεις και Σχόλια σε Εικόνες
Από προεπιλογή, οι εικόνες διαφανειών δεν περιλαμβάνουν σημειώσεις ή σχόλια. Περνάτε ένα αντικείμενο NotesCommentsLayoutingOptions στη μέθοδο RenderingOptions.setSlidesLayoutOptions για να ελέγξετε πού εμφανίζονται οι σημειώσεις και τα σχόλια.
Το παρακάτω παράδειγμα τοποθετεί περικομμένες σημειώσεις κάτω από τη διαφάνεια και σχόλια στα δεξιά της:
import com.aspose.slides.CommentsPositions;
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.NotesCommentsLayoutingOptions;
import com.aspose.slides.NotesPositions;
import com.aspose.slides.Presentation;
import com.aspose.slides.RenderingOptions;
import java.awt.Color;
float scaleX = 2f;
float scaleY = scaleX;
Color commentsAreaColor = new Color(250, 235, 215);
NotesCommentsLayoutingOptions layoutOptions = new NotesCommentsLayoutingOptions();
layoutOptions.setNotesPosition(NotesPositions.BottomTruncated);
layoutOptions.setCommentsPosition(CommentsPositions.Right);
layoutOptions.setCommentsAreaWidth(500);
layoutOptions.setCommentsAreaColor(commentsAreaColor);
RenderingOptions renderingOptions = new RenderingOptions();
renderingOptions.setSlidesLayoutOptions(layoutOptions);
Presentation presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(renderingOptions, scaleX, scaleY);
try {
image.save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Warning
Για τη μετατροπή διαφάνειας σε εικόνα, μην περάσετε το BottomFull στη μέθοδο NotesCommentsLayoutingOptions.setNotesPosition. Οι σημειώσεις μπορεί να περιέχουν περισσότερο κείμενο από ό,τι μπορεί να φιλοξενήσει το σταθερό μέγεθος εικόνας. Χρησιμοποιήστε το BottomTruncated αντ' αυτού.Μετατροπή Διαφανειών σε Εικόνες με Χρήση Επιλογών TIFF
Η κλάση TiffOptions σας επιτρέπει να ελέγξετε το μέγεθος, την ανάλυση και άλλες ιδιότητες της αποδοθένσης εικόνας TIFF.
Το παρακάτω παράδειγμα αποδίδει την πρώτη διαφάνεια ως εικόνα TIFF 2160 × 2880 στα 300 DPI:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import com.aspose.slides.TiffOptions;
import java.awt.Dimension;
Dimension imageSize = new Dimension(2160, 2880);
TiffOptions tiffOptions = new TiffOptions();
tiffOptions.setImageSize(imageSize);
tiffOptions.setDpiX(300);
tiffOptions.setDpiY(300);
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(tiffOptions);
try {
image.save("output.tiff", ImageFormat.Tiff);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Warning
Η υποστήριξη TIFF δεν είναι εγγυημένη σε εκδόσεις Java παλαιότερες από το JDK 9.Μετατροπή Όλων των Διαφανειών σε Εικόνες
Διέλθετε τη συλλογή διαφανειών για να μετατρέψετε ολόκληρη την παρουσίαση σε μια σειρά εικόνων. Οι κρυμμένες διαφάνειες περιλαμβάνονται εκτός εάν τις παραλείψετε ρητά.
Το παρακάτω παράδειγμα αποδίδει κάθε διαφάνεια ως εικόνα JPEG με οριζόντιους και κατακόρυφους συντελεστές κλίμακας 2:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
float scaleX = 2f;
float scaleY = scaleX;
Presentation presentation = new Presentation("Presentation.pptx");
try {
int slideCount = presentation.getSlides().size();
for (int index = 0; index < slideCount; index++) {
ISlide slide = presentation.getSlides().get_Item(index);
IImage image = slide.getImage(scaleX, scaleY);
try {
image.save("Slide_" + index + ".jpg", ImageFormat.Jpeg);
} finally {
image.dispose();
}
}
} finally {
presentation.dispose();
}
Δημιουργία Εξόδου Enhanced Metafile
Το Enhanced Metafile (EMF) είναι χρήσιμο όταν γραφικά βασισμένα σε διανύσματα πρέπει να ανταλλαγούν με το Microsoft Office ή άλλα προγράμματα των Windows που υποστηρίζουν Windows metafiles. Σε αντίθεση με μια εικόνα βασισμένη σε εικονοστοιχεία, ένα EMF μπορεί να διατηρήσει τις ενέργειες διανυσματικών σχεδίων που κλιμακώνται χωρίς την ίδια απώλεια ευκρίνειας. Ωστόσο, το EMF είναι κυρίως μορφή συμβατότητας για εφαρμογές με υποστήριξη Windows metafile, όχι μια καθολική μορφή ανταλλαγής. Επιπλέον, πολύπλοκο περιεχόμενο διαφάνειας, όπως bitmap εικόνες και ορισμένα εφέ, μπορεί να αποθηκευτεί ως ραστροποιημένα στοιχεία μέσα στο διανυσματικό κοντέινερ metafile.
Εξαγωγή Διαφάνειας σε EMF
Η μέθοδος ISlide.writeAsEmf γράφει ένα ISlide σε έναν προορισμό ροής σε μορφή EMF. Το παρακάτω παράδειγμα φορτώνει μια παρουσίαση, επιλέγει την πρώτη διαφάνεια και τη γράφει σε ροή αρχείου EMF:
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import java.io.FileOutputStream;
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
FileOutputStream emfStream = new FileOutputStream("Slide_0.emf");
try {
slide.writeAsEmf(emfStream);
} finally {
emfStream.close();
}
} finally {
presentation.dispose();
}
Ο καλών είναι κάτοχος της ροής που περνά στην ISlide.writeAsEmf και είναι υπεύθυνος για το κλείσιμο της, όπως φαίνεται παραπάνω.
Μετατροπή Εικόνας SVG σε EMF και Προσθήκη της σε Παρουσίαση
Χρησιμοποιήστε το ISvgImage.writeAsEmf για να μετατρέψετε περιεχόμενο SVG σε EMF. Τα προκύπτοντα bytes μπορούν να προστεθούν στην παρουσίαση μέσω του IImageCollection.addImage και να τοποθετηθούν σε μια διαφάνεια με το IShapeCollection.addPictureFrame.
Το παρακάτω παράδειγμα δημιουργεί ένα SvgImage από κώδικα SVG, το μετατρέπει σε EMF στη μνήμη, εισάγει το metafile στην πρώτη διαφάνεια και αποθηκεύει την παρουσίαση:
import com.aspose.slides.IPPImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ISvgImage;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ShapeType;
import com.aspose.slides.SvgImage;
import java.io.ByteArrayOutputStream;
String svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>";
ISvgImage svgImage = new SvgImage(svgContent);
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ByteArrayOutputStream emfStream = new ByteArrayOutputStream();
try {
svgImage.writeAsEmf(emfStream);
byte[] emfData = emfStream.toByteArray();
IPPImage image = presentation.getImages().addImage(emfData);
slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);
} finally {
emfStream.close();
}
presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Το ISvgImage.writeAsEmf δεν αναλαμβάνει την ιδιοκτησία του ρεύματος προορισμού. Ένα ByteArrayOutputStream αποθηκεύει όλα τα παραγόμενα δεδομένα στη μνήμη, έτσι δεν απαιτείται επαναφορά θέσης πριν την κλήση του toByteArray. Ο επιστρεφόμενος πίνακας byte παραμένει έγκυρος μετά το κλείσιμο του ρεύματος.
Η δημιουργία EMF είναι διαθέσιμη στα λειτουργικά συστήματα που υποστηρίζονται από την επιλεγμένη παραμετροποίηση Aspose.Slides for Java και JDK, αλλά η απόδοση μπορεί να διαφέρει μεταξύ πλατφορμών όταν λείπουν γραμματοσειρές ή εξαρτήσεις γραφικών. Εγκαταστήστε τις γραμματοσειρές που χρησιμοποιούνται από το πηγαίο περιεχόμενο ή διαμορφώστε κατάλληλες αντικαταστάσεις, ακολουθήστε τις πλατφορμικές απαιτήσεις για το Aspose.Slides for Java, και επαληθεύστε το αποτέλεσμα στην εφαρμογή‑καταναλωτή EMF. Οι εφαρμογές Linux και macOS συχνά έχουν περιορισμένη ή ασυνεπή υποστήριξη για εμφάνιση και επεξεργασία Windows metafiles.
Απόδοση Χρωματικών Emoji
Note
Για να αποδώσετε σωστά χρωματικά emoji όταν μετατρέπετε διαφάνειες παρουσίασης σε εικόνες, οι γραμματοσειρές emoji που χρησιμοποιούνται στην παρουσίαση πρέπει να είναι εγκατεστημένες και διαθέσιμες στο σύστημα που εκτελεί τη μετατροπή. Για παράδειγμα, εάν η παρουσίαση χρησιμοποιεί Segoe UI Emoji και αυτή η γραμματοσειρά λείπει, τα emoji μπορεί να εμφανιστούν μονόχρωμα στις εικόνες εξόδου.Συχνές Ερωτήσεις
Υποστηρίζει το Aspose.Slides την απόδοση διαφανειών με κινούμενα στοιχεία;
Όχι. Η μέθοδος ISlide.getImage αποδίδει μια στατική εικόνα της διαφάνειας και δεν εξάγει τις κινήσεις.
Μπορούν οι κρυμμένες διαφάνειες να εξαχθούν ως εικόνες;
Ναι. Οι κρυμμένες διαφάνειες μπορούν να αποδοθούν όπως οι κανονικές διαφάνειες. Συμπεριλάβετε τις στον βρόχο επεξεργασίας, όπως φαίνεται στο παραπάνω παράδειγμα.
Διατηρούνται οι σκιές και άλλα εφέ στις εικόνες διαφανειών;
Ναι. Το Aspose.Slides αποδίδει σκιές, διαφάνειες και άλλα υποστηριζόμενα γραφικά εφέ στις εικόνες διαφανειών.