Vytvoření miniatur tvarů prezentace v PHP
Úvod
Aspose.Slides se používá k vytváření souborů prezentací, kde je každá stránka snímkem. Tyto snímky lze zobrazit otevřením souborů prezentace pomocí Microsoft PowerPoint. Někdy však mohou vývojáři potřebovat zobrazit obrázky tvarů samostatně v prohlížeči obrázků. V takových případech Aspose.Slides pomáhá generovat miniatury obrázků tvarů snímků. Jak tuto funkci použít, je popsáno v tomto článku.
Tento článek vysvětluje, jak generovat miniatury snímků různými způsoby:
- Generování miniatury tvaru uvnitř snímku.
- Generování miniatury tvaru pro snímek s uživatelem definovanými rozměry.
- Generování miniatury tvaru v mezích vzhledu tvaru.
Vytvořit miniaturu tvaru ze snímku
Pro vytvoření miniatury tvaru z libovolného snímku pomocí Aspose.Slides for PHP via Java proveďte následující:
- Vytvořte instanci třídy Prezentace.
- Získejte odkaz na libovolný snímek pomocí jeho ID nebo indexu.
- Získejte miniaturu tvaru referencovaného snímku v výchozím měřítku.
- Uložte miniaturu v požadovaném formátu obrázku.
Tento ukázkový kód ukazuje, jak vytvořit miniaturu tvaru ze snímku:
# Vytvořte instanci třídy Presentation, která představuje soubor prezentace
$pres = new Presentation("Thumbnail.pptx");
try {
# Vytvořte obrázek v plném měřítku
$slideImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getImage();
# Uložte obrázek na disk ve formátu PNG
try {
$slideImage->save("output.png", ImageFormat::Png);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Vytvořit miniaturu s uživatelem definovaným měřítkem
Pro vytvoření miniatury tvaru snímku pomocí Aspose.Slides for PHP via Java proveďte následující:
- Vytvořte instanci třídy Prezentace.
- Získejte odkaz na libovolný snímek pomocí jeho ID nebo indexu.
- Získejte miniaturu tvaru referencovaného snímku s uživatelem definovanými rozměry.
- Uložte miniaturu v požadovaném formátu obrázku.
Tento ukázkový kód ukazuje, jak vytvořit miniaturu tvaru na základě definovaného měřítka:
# Vytvořte instanci třídy Presentation, která představuje soubor prezentace
$pres = new Presentation("Thumbnail.pptx");
try {
# Vytvořte obrázek v plném měřítku
$slideImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getImage(ShapeThumbnailBounds->Shape, 1, 1);
# Uložte obrázek na disk ve formátu PNG
try {
$slideImage->save("output.png", ImageFormat::Png);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Vytvořit miniaturu vzhledu tvaru na základě ohraničení
Tato metoda vytváření miniatur tvarů umožňuje vývojářům generovat miniaturu v ohraničení vzhledu tvaru. Zohledňuje všechny efekty tvaru. Vygenerovaná miniatura tvaru je omezena ohraničením snímku. Pro vytvoření miniatury tvaru snímku v jeho vzhledu proveďte následující:
- Vytvořte instanci třídy Prezentace.
- Získejte odkaz na libovolný snímek pomocí jeho ID nebo indexu.
- Získejte miniaturu referencovaného snímku s ohraničením tvaru jako vzhled.
- Uložte miniaturu v požadovaném formátu obrázku.
Tento ukázkový kód je založen na výše uvedených krocích:
# Vytvořte instanci třídy Presentation, která představuje soubor prezentace
$pres = new Presentation("Thumbnail.pptx");
try {
# Vytvořte obrázek v plném měřítku
$slideImage = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0)->getImage(ShapeThumbnailBounds->Appearance, 1, 1);
# Uložte obrázek na disk ve formátu PNG
try {
$slideImage->save("output.png", ImageFormat::Png);
} finally {
if (!java_is_null($slideImage)) {
$slideImage->dispose();
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Získat skutečné vizuální ohraničení tvaru
Vlastnosti rámce třídy Shape — Shape::getX(), Shape::getY(), Shape::getWidth() a Shape::getHeight() — popisují obdélník uložený v modelu prezentace. Obsah, který je ve skutečnosti vykreslen, může přesahovat tento rámec nebo zabírat jiný osově zarovnaný obdélník. Rotace, obrysy, šipky, rozvržení a přetečení textu, generovaná geometrie SmartArt a další efekty vykreslování mohou změnit zabranou oblast.
Použijte Shape::getVisualBounds pro výpočet této zabrané oblasti bez vytváření obrázku. Metoda vrací objekt Rectangle2D.Float ve souřadnicích snímku. Vrácený obdélník není oříznut na snímek, takže jeho souřadnice mohou být záporné, když obsah přesahuje počátek snímku.
Následující příklad získává a porovnává rámec a vizuální ohraničení:
$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();
}
Stejný objekt Rectangle2D.Float lze použít k zarovnání sousedních tvarů vlevo, vpravo, nahoře nebo dole; rezervovat dostatek místa ve generovaném rozvržení; nebo detekovat obsah mimo povolenou oblast. Vizuální ohraničení je zvláště užitečné pro SmartArt, textová pole, šipky, obrázky, otočené tvary a skupinové tvary, kde uložený rámec nemusí představovat celý vykreslený výsledek.
Použijte Shape::getVisualBounds, když potřebujete souřadnice pro rozvržení nebo validaci a nepotřebujete bitmapu. Použijte Shape::getImage, když potřebujete tvar vykreslit. S ShapeThumbnailBounds ShapeThumbnailBounds::Shape určuje velikost obrázku podle ohraničení tvaru včetně nastavení obrysu, zatímco ShapeThumbnailBounds::Appearance určuje velikost podle vzhledu tvaru a omezuje výsledek na ohraničení snímku. Naopak Shape::getVisualBounds vrací pouze vypočítaný obdélník a neomezuje jej na snímek.
Často kladené otázky
Jaké formáty obrázků lze použít při ukládání miniatur tvarů?
PNG, JPEG, BMP, GIF, TIFF, a další. Tvary lze také exportovat jako vektorové SVG uložením obsahu tvaru jako SVG.
** Jaký je rozdíl mezi ohraničením Shape a Appearance při vykreslování miniatury?**
Shape používá geometrii tvaru; Appearance zohledňuje vizuální efekty (stíny, glóby atd.).
** Co se stane, pokud je tvar označen jako skrytý? Bude se stále vykreslovat jako miniatura?**
Skrytý tvar zůstává součástí modelu a může být vykreslen; příznak skrytí ovlivňuje zobrazování v prezentaci, ale nebrání generování obrázku tvaru.
** Jsou podporovány skupinové tvary, grafy, SmartArt a další složité objekty?**
Ano. Jakýkoli objekt reprezentovaný jako Shape (včetně GroupShape, Chart a SmartArt) lze uložit jako miniaturu nebo jako SVG.
** Ovlivňují systémové fonty kvalitu miniatur textových tvarů?**
Ano. Měli byste poskytnout požadované fonty (nebo nastavit náhrady fontů), aby se předešlo nechtěným náhradám a přetékání textu.