สร้างภาพย่อนของรูปร่างในการนำเสนอใน Python ผ่าน Java
บทนำ
Aspose.Slides for Python via Java สามารถใช้เพื่อสร้างไฟล์การนำเสนอที่แต่ละหน้าตรงกับสไลด์ได้ สไลด์สามารถดูได้โดยเปิดไฟล์การนำเสนอด้วย Microsoft PowerPoint อย่างไรก็ตาม นักพัฒนาบางครั้งต้องการดูภาพของรูปร่างแยกต่างหากในโปรแกรมดูภาพ ในกรณีเช่นนี้ Aspose.Slides for Python via Java จะช่วยสร้างภาพย่อของรูปร่างในสไลด์
บทความนี้อธิบายวิธีสร้างภาพย่อของรูปร่างในหลายรูปแบบ:
- สร้างภาพย่อของรูปร่างภายในสไลด์
- สร้างภาพย่อของรูปร่างบนสไลด์ด้วยขนาดที่กำหนดโดยผู้ใช้
- สร้างภาพย่อของรูปร่างโดยอิงตามขอบเขตของการแสดงผลของรูปร่าง
สร้างภาพย่อของรูปร่างจากสไลด์
เพื่อสร้างภาพย่อของรูปร่างจากสไลด์ใด ๆ ด้วย Aspose.Slides for Python via Java ทำตามขั้นตอนต่อไปนี้:
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงถึงสไลด์โดยใช้ ID หรือดัชนีของสไลด์
- รับภาพย่อของรูปร่าง บนสไลด์ที่อ้างถึงโดยใช้สเกลเริ่มต้น
- บันทึกภาพย่อในรูปแบบภาพที่คุณต้องการ
โค้ดตัวอย่างต่อไปนี้แสดงวิธีสร้างภาพย่อของรูปร่างจากสไลด์:
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 ทำตามขั้นตอนต่อไปนี้:
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงถึงสไลด์โดยใช้ ID หรือดัชนีของสไลด์
- รับภาพย่อของรูปร่าง บนสไลด์ที่อ้างถึงโดยใช้ขนาดที่กำหนดโดยผู้ใช้
- บันทึกภาพย่อในรูปแบบภาพที่คุณต้องการ
โค้ดตัวอย่างต่อไปนี้แสดงวิธีสร้างภาพย่อของรูปร่างตามปัจจัยการสเกลที่กำหนด:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ImageFormat, Presentation, ShapeThumbnailBounds
# สร้างอินสแตนซ์ของคลาส Presentation ที่แสดงไฟล์การนำเสนอ.
presentation = Presentation("Thumbnail.pptx")
try:
# สร้างภาพที่ถูกสเกลโดยอัตราส่วน 2 ในทั้งสองทิศทาง.
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()
สร้างภาพย่อของรูปร่างโดยอิงตามขอบเขตของลักษณะที่ปรากฏ
วิธีนี้ช่วยให้นักพัฒนาสามารถสร้างภาพย่อในขอบเขตของการแสดงผลของรูปร่างได้ โดยจะคำนึงถึงเอฟเฟกต์ทั้งหมดของรูปร่าง ภาพย่อที่สร้างจะถูกจำกัดโดยขอบเขตของสไลด์ เพื่อสร้างภาพย่อของรูปร่างบนสไลด์ภายในขอบเขตการแสดงผล ทำตามขั้นตอนต่อไปนี้:
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงถึงสไลด์โดยใช้ ID หรือดัชนีของสไลด์
- รับภาพย่อของรูปร่างบนสไลด์โดยใช้ขอบเขตการแสดงผลของรูปร่าง
- บันทึกภาพย่อในรูปแบบภาพที่คุณต้องการ
โค้ดตัวอย่างต่อไปนี้อิงตามขั้นตอนข้างต้น:
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 จะคืนเฉพาะสี่เหลี่ยมที่คำนวณและไม่คลิปให้เข้ากับสไลด์
FAQ
รูปแบบภาพใดบ้างที่สามารถใช้เมื่อบันทึกภาพย่อของรูปร่าง?
PNG, JPEG, BMP, GIF, TIFF, และอื่น ๆ รูปร่างยังสามารถ ส่งออกเป็นเวกเตอร์ SVG โดยบันทึกเนื้อหารูปร่างเป็น SVG
ความแตกต่างระหว่างขอบเขต Shape กับ Appearance เมื่อเรนเดอร์ภาพย่อคืออะไร?
Shape ใช้เรขาคณิตของรูปร่าง; Appearance พิจารณา visual effects (เงา, แสงเรืองแสง ฯลฯ)
จะเกิดอะไรขึ้นหากรูปร่างถูกตั้งค่าเป็นซ่อนไว้? จะยังคงเรนเดอร์เป็นภาพย่อหรือไม่?
รูปร่างที่ซ่อนอยู่ยังคงเป็นส่วนหนึ่งของโมเดลและสามารถเรนเดอร์ได้; ธงซ่อนส่งผลต่อการแสดงสไลด์โชว์แต่ไม่ป้องกันการสร้างภาพของรูปร่าง
รองรับการทำงานกับกลุ่มรูปร่าง, แผนภูมิ, SmartArt และวัตถุซับซ้อนอื่น ๆ หรือไม่?
ใช่. ใด ๆ ที่เป็นวัตถุที่แสดงเป็น [Shape] (รวมถึง [GroupShape], [Chart] และ [SmartArt]) สามารถบันทึกเป็นภาพย่อหรือเป็น SVG ได้
ฟอนต์ที่ติดตั้งในระบบส่งผลต่อคุณภาพของภาพย่อสำหรับรูปร่างข้อความหรือไม่?
ใช่. คุณควร provide the required fonts (หรือ configure font substitutions) เพื่อหลีกเลี่ยงการใช้ฟอนต์สำรองที่ไม่ต้องการและการจัดเรียงข้อความใหม่