Hantera bildövergångar i presentationer med Python

Översikt

Bildövergångar styr hur bilder visas under en bildspelspresentation. Med Aspose.Slides för Python via .NET kan du välja en övergångseffekt för varje bild, konfigurera framsteg med musklick eller timer och justera alternativ som är specifika för en effekt. Denna artikel använder Python‑exempel för att applicera övergångar, ange exakta övergångsvaraktigheter, hantera bildtidpunkter och skapa en Morph‑övergång mellan två bilder. Exemplen visar också hur man sparar inställningarna till en PPTX‑fil.

Lägg till bildövergång

För att applicera en övergång, ladda en presentation med klassen Presentation och nå bildens slide_show_transition egendom. Ställ in dess type på ett värde från uppräkningen TransitionType, och spara sedan presentationen.

Följande exempel applicerar en Circle‑övergång på den första bilden och en Comb‑övergång på den andra. Använd en input.pptx‑fil med minst två bilder.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    if len(presentation.slides) >= 2:
        presentation.slides[0].slide_show_transition.type = slides.slideshow.TransitionType.CIRCLE
        presentation.slides[1].slide_show_transition.type = slides.slideshow.TransitionType.COMB

        presentation.save("slide-transitions.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("The input presentation must contain at least two slides.")

Lägg till avancerad bildövergång

Du kan konfigurera hur länge en bild förblir på skärmen och om ett musklick går vidare i bildspelspresentationen. Följande egenskaper styr detta beteende:

Aktivera både klick och tidsstyrd vidaregång så att visaren kan gå vidare med ett klick eller vänta på timern. För att endast använda timern, sätt advance_on_click till False. Fördröjningen styr när bildspelspresentationen går vidare; den anger inte varaktigheten för den visuella övergångseffekten.

Detta exempel tilldelar olika effekter till de tre första bilderna och aktiverar automatisk vidaregång efter 3, 5 respektive 7 sekunder. Musklick kan också gå vidare på dessa bilder. Använd en input.pptx‑fil med minst tre bilder.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    if len(presentation.slides) >= 3:
        first_transition = presentation.slides[0].slide_show_transition
        first_transition.type = slides.slideshow.TransitionType.CIRCLE
        first_transition.advance_on_click = True
        first_transition.advance_after = True
        first_transition.advance_after_time = 3000

        second_transition = presentation.slides[1].slide_show_transition
        second_transition.type = slides.slideshow.TransitionType.COMB
        second_transition.advance_on_click = True
        second_transition.advance_after = True
        second_transition.advance_after_time = 5000

        third_transition = presentation.slides[2].slide_show_transition
        third_transition.type = slides.slideshow.TransitionType.ZOOM
        third_transition.advance_on_click = True
        third_transition.advance_after = True
        third_transition.advance_after_time = 7000

        presentation.save("advanced-transitions.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("The input presentation must contain at least three slides.")

För att kontrollera om tidsstyrd vidaregång är aktiverad, läs advance_after. En lagrad fördröjning ensam indikerar inte att timern är aktiv.

Nästa exempel öppnar filen som sparades ovan, rapporterar varje aktiverad timer och inaktiverar automatisk vidaregång för bilder med en fördröjning större än två sekunder. Det aktiverar musklick för dessa bilder och sparar de uppdaterade inställningarna.

import aspose.slides as slides

with slides.Presentation("advanced-transitions.pptx") as presentation:
    for slide in presentation.slides:
        transition = slide.slide_show_transition

        if transition.advance_after:
            print(f"Slide {slide.slide_number}: advance after {transition.advance_after_time} ms.")

            if transition.advance_after_time > 2000:
                transition.advance_after = False
                transition.advance_on_click = True

    presentation.save("adjusted-transitions.pptx", slides.export.SaveFormat.PPTX)

Styr övergångstidsinställning exakt

Använd duration för att ange den exakta längden på en övergångseffekt i millisekunder. Bildens egendom slide_show_transition exponerar dessa inställningar via SlideShowTransition:

Egenskap Syfte
duration Anger varaktigheten för själva övergångseffekten, i millisekunder.
advance_after_time Anger fördröjningen innan bilden automatiskt går vidare, i millisekunder. Aktivera advance_after för att starta denna timer.
speed Väljer en fördefinierad hastighetskategori från TransitionSpeed: SLOW, MEDIUM eller FAST. Används när ingen exakt varaktighet specificeras.

[duration] styr endast övergångseffekten; den bestämmer inte hur länge bilden förblir synlig. Konfigurera den automatiska fördröjningen separat. När ingen explicit varaktighet är angiven bestämmer Aspose.Slides effektens varaktighet utifrån övergångstypen och [speed]-värdet.

Applicera samma varaktighet på varje bild

För ett enhetligt tempo, applicera samma effekt och exakta varaktighet på varje bild. Detta exempel laddar input.pptx, väljer Fade från TransitionType, och ger varje övergång en varaktighet på 750 millisekunder. Det aktiverar dessutom automatisk vidaregång efter 5000 millisekunder och inaktiverar vidaregång via musklick, och sparar sedan resultatet som PPTX.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    for slide in presentation.slides:
        transition = slide.slide_show_transition
        transition.type = slides.slideshow.TransitionType.FADE
        transition.duration = 750

        # Konfigurera automatisk bildframsteg oberoende av effektens varaktighet.
        transition.advance_after = True
        transition.advance_after_time = 5000
        transition.advance_on_click = False

    presentation.save("precise-transitions.pptx", slides.export.SaveFormat.PPTX)

Ange olika varaktigheter för enskilda bilder

Olika bilder kan ha olika varaktigheter för sina effekter. Till exempel kan du använda en kort övergång för en titelsida och en längre övergång för en sektionsintroduktion. Detta exempel sätter 500 millisekunder för den första bilden och 1200 millisekunder för den andra. Använd en input.pptx‑fil med minst två bilder.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    if len(presentation.slides) >= 2:
        first_transition = presentation.slides[0].slide_show_transition
        first_transition.type = slides.slideshow.TransitionType.FADE
        first_transition.duration = 500

        second_transition = presentation.slides[1].slide_show_transition
        second_transition.type = slides.slideshow.TransitionType.PUSH
        second_transition.duration = 1200

        presentation.save("individual-transition-durations.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("The input presentation must contain at least two slides.")

Koordinera övergångar med animerad utdata

När du förbereder en animated GIF, HTML5 presentation eller video, ange exakta övergångsvaraktigheter innan export så att de matchar den avsedda takten. Till exempel, använd en 600-millisekunders fade mellan scener och justera varje bilds fördröjning för vidaregång separat för att ge tid för dess berättelse eller innehåll.

För GIF och video, koordinera utskriftsbildhastigheten med effektens varaktighet: 600 millisekunder motsvarar 18 bildrutor vid 30 bildrutor per sekund. I HTML5, aktivera animerade övergångar i exportinställningarna. Kontrollera vilka effekter och tidsalternativ som stöds av det valda exportformatet och förhandsgranska resultatet för att bekräfta synkroniseringen.

Läs en befintlig övergångsvaraktighet

Läs duration innan du modifierar övergången för att avgöra om ett explicit värde är lagrat. Ett värde på -1 betyder att ingen explicit varaktighet är satt; ett icke‑negativt värde specificerar den lagrade varaktigheten i millisekunder. Det odefinierade värdet är inte den beräknade uppspelningsvaraktigheten: Aspose.Slides använder övergångstypen och speed för att bestämma den varaktigheten. Att sätta en övergångstyp kan initiera en varaktighet, så inspektera de ursprungliga inställningarna först.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    for slide in presentation.slides:
        transition = slide.slide_show_transition
        duration = transition.duration

        if duration >= 0:
            print(f"Slide {slide.slide_number}: stored transition duration is {duration} ms.")
        else:
            print(f"Slide {slide.slide_number}: no explicit duration; timing depends on {transition.type} and {transition.speed}.")

Morph‑övergång

Morph‑övergången animerar förändringar mellan objekt på på varandra följande bilder. För att skapa en enkel Morph‑effekt, klona en bild, flytta eller ändra storlek på ett objekt i klonen och tillämpa Morph‑övergången på den andra bilden. Detta ger övergången motsvarande objekt att animera mellan deras ursprungliga och modifierade tillstånd.

Följande exempel skapar en bild med en textruta, klonar bilden och ändrar rektangelns position och storlek i klonen. Därefter väljer det Morph från uppräkningen TransitionType för den andra bilden. Öppna den sparade filen i en presentationsvisare som stödjer Morph för att se effekten under ett bildspel.

import aspose.slides as slides

with slides.Presentation() as presentation:
    first_slide = presentation.slides[0]
    rectangle = first_slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 400, 100)
    rectangle.text_frame.text = "Morph transition"

    second_slide = presentation.slides.add_clone(first_slide)
    moved_rectangle = second_slide.shapes[0]
    moved_rectangle.x += 100
    moved_rectangle.y += 50
    moved_rectangle.width -= 200
    moved_rectangle.height -= 10

    second_slide.slide_show_transition.type = slides.slideshow.TransitionType.MORPH

    presentation.save("morph-transition.pptx", slides.export.SaveFormat.PPTX)

Morph‑övergångstyper

Uppräkningen TransitionMorphType styr hur Morph matchar och animerar innehåll:

  • BY_OBJECT behandlar varje form som ett helt objekt.
  • BY_WORD animera text genom att matcha ord där det är möjligt.
  • BY_CHAR animera text genom att matcha tecken där det är möjligt.

Ställ in övergångens type till Morph innan du får åtkomst till dess value. Värdet ger sedan objektet MorphTransition, vars egenskap morph_type väljer matchningsläget.

import aspose.slides as slides

with slides.Presentation("morph-transition.pptx") as presentation:
    if len(presentation.slides) >= 2:
        transition = presentation.slides[1].slide_show_transition
        transition.type = slides.slideshow.TransitionType.MORPH
        morph_transition = transition.value

        if isinstance(morph_transition, slides.slideshow.MorphTransition):
            morph_transition.morph_type = slides.slideshow.TransitionMorphType.BY_WORD
            presentation.save("morph-by-word.pptx", slides.export.SaveFormat.PPTX)
        else:
            print("Morph transition options are unavailable.")
    else:
        print("The input presentation must contain at least two slides.")

Ställ in övergångseffekter

Vissa övergångar exponerar ytterligare alternativ, såsom riktning eller om effekten startar från en svart skärm. Tillgängliga alternativ beror på den valda övergångens type. Ställ in typen först, och använd sedan det lämpliga övergångsobjektet från dess value.

Följande exempel applicerar en Cut‑övergång på den första bilden i input.pptx. Det sätter from_black via OptionalBlackTransition så att övergången startar från en svart skärm.

import aspose.slides as slides

with slides.Presentation("input.pptx") as presentation:
    transition = presentation.slides[0].slide_show_transition
    transition.type = slides.slideshow.TransitionType.CUT
    cut_transition = transition.value

    if isinstance(cut_transition, slides.slideshow.OptionalBlackTransition):
        cut_transition.from_black = True
        presentation.save("cut-from-black.pptx", slides.export.SaveFormat.PPTX)
    else:
        print("Cut transition options are unavailable.")

FAQ

Kan jag kontrollera uppspelningshastigheten för en bildövergång?

Ja. Föredra duration när du behöver en exakt effektvaraktighet i millisekunder. Använd speed när en fördefinierad kategori från TransitionSpeed — SLOW, MEDIUM eller FAST — är tillräcklig och ingen explicit varaktighet är angiven. Dessa inställningar styr övergångseffekten oberoende av den automatiska fördröjningen för vidaregång.

Kan jag bifoga ljud till en övergång och göra det loopat?

Ja. Tilldela inbäddat ljud till sound, sätt sound_mode till START_SOUND från uppräkningen TransitionSoundMode och aktivera sound_loop. Ljudet loopar tills nästa ljudhändelse i bildspelspresentationen.

Vad är det snabbaste sättet att applicera samma övergång på varje bild?

Iterera genom presentationens slides samling och sätt varje bilds övergångs type till samma värde. Ställ in eventuella tids- och effektalternativ i samma loop för att hålla beteendet konsekvent över alla bilder.

Hur kan jag kontrollera vilken övergång som för närvarande är inställd på en bild?

Läs egenskapen type från bildens slide_show_transition. Den returnerar ett värde från uppräkningen TransitionType; NONE betyder att ingen övergångseffekt är applicerad.