Μετατροπή Διαφανειών Παρουσίασης σε Εικόνες σε Android

Εισαγωγή

Το Aspose.Slides for Android μέσω Java μπορεί να αποδώσει μεμονωμένες διαφάνειες από παρουσιάσεις PowerPoint και OpenDocument ως PNG, JPEG, GIF, TIFF και άλλες μορφές εικόνας.

Για να μετατρέψετε μια διαφάνεια σε εικόνα, ακολουθήστε τα παρακάτω βήματα:

  1. Φορτώστε την παρουσίαση με την κλάση Presentation.
  2. Επιλέξτε τη διαφάνεια που θέλετε να αποδώσετε.
  3. Εάν είναι απαραίτητο, ρυθμίστε την απόδοση με την κλάση RenderingOptions ή TiffOptions.
  4. Καλέστε τη μέθοδο ISlide.getImage. Επιστρέφει ένα αντικείμενο IImage.
  5. Καλέστε τη μέθοδο 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 που δέχεται μια τιμή Size για να αποδώσετε μια διαφάνεια με ακριβείς διαστάσεις σε εικονοστοιχεία.

Το παρακάτω παράδειγμα δημιουργεί μια εικόνα JPEG 1820 × 1040:

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import com.aspose.slides.android.Size;

Size imageSize = new Size(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 android.graphics.Color;
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;

float scaleX = 2f;
float scaleY = scaleX;

int commentsAreaColor = Color.rgb(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();
}

Μετατροπή διαφανειών σε εικόνες χρησιμοποιώντας επιλογές 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 com.aspose.slides.android.Size;

Size imageSize = new Size(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();
}

Μετατροπή όλων των διαφανειών σε εικόνες

Περιηγηθείτε στη συλλογή διαφανειών για να μετατρέψετε ολόκληρη την παρουσίαση σε μια σειρά εικόνων. Οι κρυμμένες διαφάνειες περιλαμβάνονται εκτός εάν τις παραλείψετε ρητά.

Το παρακάτω παράδειγμα αποδίδει κάθε διαφάνεια ως εικόνα 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 είναι διαθέσιμη σε υποστηριζόμενες εκδόσεις Android και διαμορφώσεις συσκευών, αλλά η απόδοση μπορεί να διαφέρει όταν λείπουν γραμματοσειρές ή εξαρτήσεις γραφικών. Εγκαταστήστε τις γραμματοσειρές που χρησιμοποιούνται από το πηγαίο περιεχόμενο ή διαμορφώστε κατάλληλες υποκαταστάσεις, ακολουθήστε τον οδηγό εγκατάστασης για το Aspose.Slides for Android μέσω Java, και επαληθεύστε το αποτέλεσμα στην εφαρμογή-δέκτη EMF. Οι εφαρμογές σε πλατφόρμες εκτός Windows συχνά έχουν περιορισμένη ή ασυνεπή υποστήριξη για προβολή και επεξεργασία Windows metafiles.

Απόδοση χρωματικών Emoji

Συχνές Ερωτήσεις

Υποστηρίζει το Aspose.Slides την απόδοση διαφανειών με κινούμενα σχέδια;

Όχι. Η μέθοδος ISlide.getImage αποδίδει μια στατική εικόνα της διαφάνειας και δεν εξάγει τις κινούμενες εικόνες.

Μπορούν οι κρυμμένες διαφάνειες να εξαχθούν ως εικόνες;

Ναι. Οι κρυμμένες διαφάνειες μπορούν να αποδοθούν όπως οι κανονικές διαφάνειες. Συμπεριλάβετε τις στο βρόχο επεξεργασίας, όπως φαίνεται στο παραπάνω παράδειγμα.

Διατηρούνται οι σκιές και άλλα εφέ στις εικόνες διαφανειών;

Ναι. Το Aspose.Slides αποδίδει σκιές, διαφάνειες και άλλα υποστηριζόμενα γραφικά εφέ στις εικόνες διαφανειών.