ایجاد تصویرهای بندانگشتی از اشکال ارائه در Python via Java

معرفی

Aspose.Slides for Python via Java می‌تواند برای ایجاد فایل‌های ارائه استفاده شود که در آن هر صفحه معادل یک اسلاید است. اسلایدها می‌توانند با باز کردن فایل‌های ارائه در Microsoft PowerPoint مشاهده شوند. اما گاهی توسعه‌دهندگان نیاز دارند تصاویر اشکال را به صورت جداگانه در یک مشاهده‌گر تصویر ببینند. در چنین مواردی Aspose.Slides for Python via Java به آن‌ها کمک می‌کند تا تصاویر بندانگشتی اشکال اسلاید را تولید کنند.

این مقاله توضیح می‌دهد که چگونه می‌توان بندانگشتی‌های اشکل را به روش‌های مختلف تولید کرد:

  • تولید یک بندانگشتی شکل در داخل یک اسلاید.
  • تولید یک بندانگشتی شکل برای یک اسلاید با ابعاد تعریف‌شده توسط کاربر.
  • تولید یک بندانگشتی شکل در محدودیت‌های ظاهر شکل.

تولید تصویر بندانگشتی شکل از یک اسلاید

برای تولید تصویر بندانگشتی شکل از هر اسلاید با استفاده از Aspose.Slides for Python via Java، مراحل زیر را انجام دهید:

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. یک مرجع به اسلایدی با استفاده از شناسه یا ایندکس آن به دست آورید.
  3. Get the shape thumbnail image برای یک شکل در اسلاید مرجع با مقیاس پیش‌فرض دریافت کنید.
  4. تصویر بندانگشتی را در قالب تصویری دلخواه خود ذخیره کنید.

این کد نمونه نشان می‌دهد که چگونه تصویر بندانگشتی شکل را از یک اسلاید تولید کنید:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation

# یک نمونه از کلاس Presentation که فایل ارائه را نشان می‌دهد ایجاد کنید.
presentation = Presentation("Thumbnail.pptx")
try:
    # یک تصویر با مقیاس کامل ایجاد کنید.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage()
    try:
        # تصویر را در قالب PNG روی دیسک ذخیره کنید.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

تولید تصویر بندانگشتی با عامل مقیاس‌گذاری تعریف‌شده توسط کاربر

برای تولید تصویر بندانگشتی شکل یک اسلاید با استفاده از Aspose.Slides for Python via Java، مراحل زیر را انجام دهید:

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. یک مرجع به اسلایدی با استفاده از شناسه یا ایندکس آن به دست آورید.
  3. Get the shape thumbnail image برای یک شکل در اسلاید مرجع با ابعاد تعریف‌شده توسط کاربر دریافت کنید.
  4. تصویر بندانگشتی را در قالب تصویری دلخواه خود ذخیره کنید.

این کد نمونه نشان می‌دهد که چگونه تصویر بندانگشتی شکل را بر اساس یک عامل مقیاس‌گذاری تعریف‌شده تولید کنید:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation, ShapeThumbnailBounds

# یک نمونه از کلاس Presentation که فایل ارائه را نشان می‌دهد ایجاد کنید.
presentation = Presentation("Thumbnail.pptx")
try:
    # یک تصویر با مقیاس ۲ در هر دو جهت ایجاد کنید.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Shape, 2, 2)
    try:
        # تصویر را در قالب PNG روی دیسک ذخیره کنید.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

ایجاد تصویر بندانگشتی ظاهر شکل بر مبنای حاشیه‌ها

این روش ایجاد بندانگشتی برای اشکال به توسعه‌دهندگان اجازه می‌دهد تا تصویر بندانگشتی را در محدودیت‌های ظاهر شکل تولید کنند. تمام افکت‌های شکل در نظر گرفته می‌شود. تصویر بندانگشتی تولید شده توسط حاشیه‌های اسلاید محدود می‌شود. برای تولید تصویر بندانگشتی یک شکل اسلاید داخل محدوده ظاهر آن، مراحل زیر را انجام دهید:

  1. یک نمونه از کلاس Presentation ایجاد کنید.
  2. یک مرجع به اسلایدی با استفاده از شناسه یا ایندکس آن به دست آورید.
  3. تصویر بندانگشتی یک شکل در اسلاید مرجع را با استفاده از حدود ظاهر آن دریافت کنید.
  4. تصویر بندانگشتی را در قالب تصویری دلخواه خود ذخیره کنید.

این کد نمونه بر اساس مراحل بالا است:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation, ShapeThumbnailBounds

# یک نمونه از کلاس Presentation که فایل ارائه را نمایندگی می‌کند ایجاد کنید.
presentation = Presentation("Thumbnail.pptx")
try:
    # یک تصویر با مقیاس کامل ایجاد کنید.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Appearance, 1, 1)
    try:
        # تصویر را در قالب PNG روی دیسک ذخیره کنید.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

دریافت حاشیه‌های بصری واقعی یک شکل

ویژگی‌های چارچوب Shape — متدهای getX، getY، getWidth و getHeight — مستطیل ذخیره‌شده در مدل ارائه را توصیف می‌کنند. محتوای واقعی که رندر می‌شود می‌تواند فراتر از آن چارچوب باشد یا مستطیل محورها متفاوتی را اشغال کند. چرخش، خطوط حاشیه، سرپیکان‌ها، چیدمان متن و سرریز، هندسه SmartArt تولیدشده و سایر افکت‌های رندر می‌توانند ناحیه اشغال‌شده را تغییر دهند.

از Shape.getVisualBounds برای محاسبهٔ این ناحیه بدون ایجاد تصویر استفاده کنید. این متد یک شیء Rectangle2D.Float در مختصات اسلاید باز می‌گرداند. مستطیل بازگردانده‌شده به اسلاید برش داده نمی‌شود، بنابراین مختصات آن می‌تواند منفی باشد وقتی محتوا فراتر از نقطهٔ آغاز اسلاید گسترش یابد.

مثال زیر حاشیهٔ چارچوب و حاشیهٔ بصری را دریافت و مقایسه می‌کند:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation
from java.awt.geom import Rectangle2D

presentation = Presentation("example.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    shape = slide.getShapes().get_Item(0)

    visual_bounds = shape.getVisualBounds()
    frame_bounds = Rectangle2D.Float(shape.getX(), shape.getY(), shape.getWidth(), shape.getHeight())

    print("Frame bounds:", frame_bounds)
    print("Visual bounds:", visual_bounds)
finally:
    presentation.dispose()

همان Rectangle2D.Float می‌تواند برای ترازبندی اشکال نزدیک به لبهٔ چپ، راست، بالا یا پایین آن استفاده شود؛ فضای کافی در یک چیدمان تولیدشده رزرو شود؛ یا محتوای خارج از منطقهٔ مجاز شناسایی شود. حاشیه‌های بصری به‌خصوص برای SmartArt، جعبه‌های متن، پیکان‌ها، تصاویر، اشکال چرخیده و گروه‌های شکل که چارچوب ذخیره‌شده ممکن است نمای رندر شدهٔ کامل را نشان ندهد، مفید هستند.

از Shape.getVisualBounds زمانی که به مختصات برای چیدمان یا اعتبارسنجی نیاز دارید و نیازی به بیت‌مپ ندارید، استفاده کنید. از Shape.getImage زمانی که نیاز به رندر شکل دارید، استفاده کنید. با ShapeThumbnailBounds، ShapeThumbnailBounds.Shape اندازهٔ تصویر را از حاشیهٔ شکل، شامل تنظیمات حاشیه، تعیین می‌کند، در حالی که ShapeThumbnailBounds.Appearance آن را از ظاهر شکل اندازه‌گیری می‌کند و نتیجه را به حاشیه‌های اسلاید محدود می‌سازد. بر خلاف آن، Shape.getVisualBounds فقط مستطیل محاسبه‌شده را برمی‌گرداند و آن را به اسلاید برش نمی‌دهد.

پرسش‌های متداول

کدام قالب‌های تصویری می‌توانند هنگام ذخیرهٔ بندانگشتی اشکال استفاده شوند؟

PNG, JPEG, BMP, GIF, TIFF، و دیگران. اشکال همچنین می‌توانند به‌عنوان SVG برداری exported as vector SVG با ذخیرهٔ محتوای شکل به‌صورت SVG صادر شوند.

فرق بین حاشیهٔ Shape و Appearance هنگام رندر یک بندانگشتی چیست؟

Shape از هندسهٔ شکل استفاده می‌کند؛ Appearance اثرات بصری را (سایه‌ها، درخشش و غیره) در نظر می‌گیرد.

اگر یک شکل به‌عنوان hidden علامت‌گذاری شود چه می‌شود؟ آیا همچنان به‌صورت بندانگشتی رندر می‌شود؟

یک شکل مخفی همچنان بخشی از مدل است و می‌تواند رندر شود؛ پرچم مخفی فقط نمایش اسلایدشو را تحت تأثیر قرار می‌دهد اما از تولید تصویر شکل جلوگیری نمی‌کند.

آیا اشکال گروهی، نمودارها، SmartArt و سایر اشیای پیچیده پشتیبانی می‌شوند؟

بله. هر شیئی که به عنوان Shape نمایش داده می‌شود (از جمله GroupShape، Chart، و SmartArt) می‌تواند به‌صورت بندانگشتی یا SVG ذخیره شود.

آیا قلم‌های نصب‌شده در سیستم بر کیفیت بندانگشتی‌های اشکال متنی تأثیر می‌گذارند؟

بله. برای جلوگیری از استفادهٔ ناخواسته از جایگزین‌ها و بازپیکربندی متن باید فونت‌های مورد نیاز را فراهم کنید (یا جایگزینی فونت‌ها را پیکربندی کنید).