Diaalakzatok bélyegképeinek létrehozása PHP-ben

Bevezetés

Az Aspose.Slides-et prezentációs fájlok létrehozására használják, ahol minden oldal egy diát jelent. Ezeket a diákat a prezentációs fájlok Microsoft PowerPoint segítségével történő megnyitásával lehet megtekinteni. De néha a fejlesztőknek külön kell megtekinteniük a alakzatok képeit egy képnézőben. Ilyen esetben az Aspose.Slides segít a diaalakzatok bélyegképének előállításában. A funkció használatát ebben a cikkben ismertetjük. Ez a cikk bemutatja, hogyan lehet a diákat különböző módokon bélyegképpé konvertálni:

  • Alakzat bélyegképének generálása egy dián belül.
  • Alakzat bélyegképének generálása a diaalakzathoz felhasználó által meghatározott méretekkel.
  • Alakzat bélyegképének generálása az alakzat megjelenésének határain belül.

Alakzat bélyegképének létrehozása egy diáról

Az Aspose.Slides for PHP via Java használatával bármely diáról alakzat bélyegképének előállításához tegye a következőket:

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze be egy diára való hivatkozást annak ID-jével vagy indexével.
  3. Szerezze meg a forma bélyegképét a hivatkozott dia alapértelmezett méretben.
  4. Mentse a bélyegképet a kívánt képfformátumban.

Ez a példa kód bemutatja, hogyan lehet egy diáról alakzat bélyegképet előállítani:

  # Példányosítsa a Presentation osztályt, amely a prezentációs fájlt képviseli
  $pres = new Presentation("Thumbnail.pptx");
  try {
    # Hozzon létre egy teljes méretű képet
    $slideImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getImage();
    # Mentse a képet lemezre PNG formátumban
    try {
      $slideImage->save("output.png", ImageFormat::Png);
    } finally {
      if (!java_is_null($slideImage)) {
        $slideImage->dispose();
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Felhasználó által meghatározott méretezési tényezővel rendelkező bélyegkép létrehozása

Az Aspose.Slides for PHP via Java használatával egy diáról alakzat bélyegképének előállításához tegye a következőket:

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze be egy diára való hivatkozást annak ID-jével vagy indexével.
  3. Szerezze meg a forma bélyegképét a hivatkozott diáról felhasználó által meghatározott méretekkel.
  4. Mentse a bélyegképet a kívánt képfformátumban.

Ez a példa kód bemutatja, hogyan lehet egy alakzat bélyegképet előállítani egy meghatározott méretezési tényező alapján:

  # Példányosítsa a Presentation osztályt, amely a prezentációs fájlt képviseli
  $pres = new Presentation("Thumbnail.pptx");
  try {
    # Hozzon létre egy teljes méretű képet
    $slideImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getImage(ShapeThumbnailBounds->Shape, 1, 1);
    # Mentse a képet lemezre PNG formátumban
    try {
      $slideImage->save("output.png", ImageFormat::Png);
    } finally {
      if (!java_is_null($slideImage)) {
        $slideImage->dispose();
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Határoláson alapuló alakzat megjelenés bélyegkép létrehozása

Ez a módszer lehetővé teszi a fejlesztők számára, hogy a forma megjelenésének határain belül bélyegképet generáljanak. Figyelembe veszi az összes formahatást. A generált forma bélyegképét a dia határai korlátozzák. A forma megjelenésének határain belül történő bélyegkép generálásához tegye a következőket:

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezze be egy diára való hivatkozást annak ID-jével vagy indexével.
  3. Szerezze meg a hivatkozott dia bélyegképét a forma határai megjelenésként legyenek használva.
  4. Mentse a bélyegképet a kívánt képfformátumban.

Ez a példa kód a fenti lépéseken alapul:

  # Példányosítsa a Presentation osztályt, amely a prezentációs fájlt képviseli
  $pres = new Presentation("Thumbnail.pptx");
  try {
    # Hozzon létre egy teljes méretű képet
    $slideImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getImage(ShapeThumbnailBounds->Appearance, 1, 1);
    # Mentse a képet lemezre PNG formátumban
    try {
      $slideImage->save("output.png", ImageFormat::Png);
    } finally {
      if (!java_is_null($slideImage)) {
        $slideImage->dispose();
      }
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Alakzat tényleges vizuális határainak lekérdezése

A Shape keret‑tulajdonságai – Shape::getX(), Shape::getY(), Shape::getWidth() és Shape::getHeight() – a prezentációs modellben tárolt téglalapot írják le. A ténylegesen megjelenített tartalom meghaladhatja ezt a keretet, vagy egy másik tengely‑igazított téglalapot foglalhat el. A forgatás, körvonalak, nyilak, szöveg elrendezése és túlcsordulása, a generált SmartArt geometria és egyéb megjelenítési hatások mind módosíthatják a lefoglalt területet.

Használja a Shape::getVisualBounds metódust a lefoglalt terület kiszámításához kép létrehozása nélkül. A metódus egy Rectangle2D.Float objektumot ad vissza diára vonatkozó koordinátákkal. A visszakapott téglalap nincs levágva a diára, így koordinátái negatívak lehetnek, ha a tartalom a dia eredeti pontja túlra nyúlik.

A következő példa lekéri és összehasonlítja a keret‑ és a vizuális határokat:

  $presentation = new Presentation("example.pptx");
  try {
      $slide = $presentation->getSlides()->get_Item(0);
      $shape = $slide->getShapes()->get_Item(0);

      $visualBounds = $shape->getVisualBounds();

      $frameX = $shape->getX();
      $frameY = $shape->getY();
      $frameWidth = $shape->getWidth();
      $frameHeight = $shape->getHeight();

      $visualX = $visualBounds->getX();
      $visualY = $visualBounds->getY();
      $visualWidth = $visualBounds->getWidth();
      $visualHeight = $visualBounds->getHeight();

      echo "Frame bounds (x, y, width, height): $frameX, $frameY, $frameWidth, $frameHeight\n";
      echo "Visual bounds (x, y, width, height): $visualX, $visualY, $visualWidth, $visualHeight\n";
  } finally {
      $presentation->dispose();
  }

Ugyanaz a Rectangle2D.Float használható a közeli alakzatok bal, jobb, felső vagy alsó élhez igazításához; elegendő hely lefoglalásához egy generált elrendezésben; vagy a megengedett régión kívüli tartalom felderítéséhez. A vizuális határok különösen hasznosak SmartArt, szövegdobozok, nyilak, képek, elforgatott alakzatok és csoportos alakzatok esetén, ahol a tárolt keret nem feltétlenül tükrözi a teljes megjelenített eredményt.

Használja a Shape::getVisualBounds metódust, ha elrendezési vagy ellenőrzési koordinátákra van szüksége, és nem igényel bitmapet. Használja a Shape::getImage metódust, ha a formát meg kell jeleníteni. A ShapeThumbnailBounds esetén a ShapeThumbnailBounds::Shape a kép méretét a forma határaiból, a körvonal beállításokkal együtt határozza meg, míg a ShapeThumbnailBounds::Appearance a forma megjelenése alapján méretezi, és korlátozza az eredményt a dia határaihoz. Ezzel szemben a Shape::getVisualBounds csak a számított téglalapot adja vissza, és nem vágja le azt a diára.

GYIK

Milyen képfájlformátumok használhatók a forma bélyegképek mentésekor?

PNG, JPEG, BMP, GIF, TIFF, és egyebek. A formák exportálhatók vektorgrafikaként SVG a forma tartalmának SVG-ként való mentésével.

Mi a különbség a Shape és az Appearance határok között a bélyegkép renderelésekor?

Shape a forma geometria alapján határozza meg; Appearance a vizuális hatásokat (árnyékok, ragyogások stb.) is figyelembe veszi.

Mi történik, ha egy forma rejtettnek van jelölve? Továbbra is megjelenik majd bélyegképként?

A rejtett forma továbbra is része a modellnek és renderelhető; a rejtett jelző a diavetítés megjelenítését befolyásolja, de nem akadályozza meg a forma képének előállítását.

Támogatottak a csoportos alakzatok, diagramok, SmartArt és egyéb komplex objektumok?

Igen. Bármely objektum, amely Shape‑ként van reprezentálva (beleértve a GroupShape, Chart és SmartArt típusokat) menthető bélyegkép vagy SVG formátumban.

A rendszerben telepített betűkészletek befolyásolják a szöveges alakzatok bélyegképeinek minőségét?

Igen. Ajánlott a szükséges betűkészleteket biztosítani (vagy betűkészlet‑helyettesítéseket beállítani), hogy elkerülje a nem kívánt helyettesítéseket és a szöveg újratervezését.