สร้างภาพขนาดย่อของรูปร่างการนำเสนอบน Android
บทนำ
Aspose.Slides for Android via Java สามารถใช้สร้างไฟล์งานนำเสนอซึ่งแต่ละหน้าตรงกับสไลด์ได้ ไฟล์สไลด์สามารถดูได้โดยเปิดไฟล์งานนำเสนอด้วย Microsoft PowerPoint อย่างไรก็ตาม นักพัฒนาบางครั้งอาจต้องดูรูปภาพของรูปร่างแยกต่างหากในโปรแกรมดูรูปภาพ ในกรณีเช่นนี้ Aspose.Slides for Android via Java ช่วยให้พวกเขาสร้างภาพขนาดย่อของรูปร่างในสไลด์ได้
ในหัวข้อนี้ เราจะอธิบายวิธีการสร้างภาพขนาดย่อของสไลด์ในสถานการณ์ต่างๆ:
- การสร้างภาพขนาดย่อของรูปร่างภายในสไลด์
- การสร้างภาพขนาดย่อของรูปร่างสไลด์ด้วยมิติที่ผู้ใช้กำหนด
- การสร้างภาพขนาดย่อของรูปร่างภายในขอบเขตของการปรากฏของรูปร่าง
สร้างภาพขนาดย่อของรูปร่างจากสไลด์
เพื่อสร้างภาพขนาดย่อของรูปร่างจากสไลด์ใด ๆ ด้วย Aspose.Slides for Android via Java ให้ทำตามขั้นตอนต่อไปนี้:
- สร้างอินสแตนซ์ของคลาส Presentation.
- รับอ้างอิงของสไลด์ใด ๆ โดยใช้ ID หรือดัชนีของมัน.
- รับภาพขนาดย่อของรูปร่างโดยใช้ Get the shape thumbnail image ของสไลด์ที่อ้างอิงด้วยสเกลเริ่มต้น.
- บันทึกภาพขนาดย่อลงในรูปแบบภาพที่คุณต้องการ.
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นไฟล์งานนำเสนอ
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// สร้างภาพขนาดเต็มสเกล
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage();
// บันทึกภาพลงดิสก์ในรูปแบบ PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
สร้างภาพขนาดย่อด้วยสเกลที่กำหนดเอง
เพื่อสร้างภาพขนาดย่อของรูปร่างสไลด์ด้วย Aspose.Slides for Android via Java ให้ทำตามขั้นตอนต่อไปนี้:
- สร้างอินสแตนซ์ของคลาส Presentation.
- รับอ้างอิงของสไลด์ใด ๆ โดยใช้ ID หรือดัชนีของมัน.
- รับภาพขนาดย่อของรูปร่างโดยใช้ Get the shape thumbnail image ของสไลด์ที่อ้างอิงด้วยมิติตามที่ผู้ใช้กำหนด.
- บันทึกภาพขนาดย่อลงในรูปแบบภาพที่คุณต้องการ.
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นไฟล์งานนำเสนอ
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// สร้างภาพขนาดเต็มสเกล
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Shape, 1, 1);
// บันทึกภาพลงดิสก์ในรูปแบบ PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
สร้างภาพขนาดย่อของรูปร่างตามขอบเขตการปรากฏ
วิธีการสร้างภาพขนาดย่อของรูปร่างนี้ช่วยให้นักพัฒนาสามารถสร้างภาพขนาดย่อภายในขอบเขตการปรากฏของรูปร่างได้ โดยพิจารณาผลกระทบทั้งหมดของรูปร่าง ภาพขนาดย่อของรูปร่างที่สร้างขึ้นจะถูกจำกัดโดยขอบเขตของสไลด์ เพื่อสร้างภาพขนาดย่อของรูปร่างสไลด์ในขอบเขตของการปรากฏให้ทำตามขั้นตอนต่อไปนี้:
- สร้างอินสแตนซ์ของคลาส Presentation.
- รับอ้างอิงของสไลด์ใด ๆ โดยใช้ ID หรือดัชนีของมัน.
- รับภาพขนาดย่อของสไลด์ที่อ้างอิงโดยใช้ขอบเขตของรูปร่างเป็นการปรากฏ.
- บันทึกภาพขนาดย่อลงในรูปแบบภาพที่คุณต้องการ.
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นไฟล์งานนำเสนอ
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// สร้างภาพขนาดเต็มสเกล
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Appearance, 1, 1);
// บันทึกภาพลงดิสก์ในรูปแบบ PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
รับขอบเขตภาพจริงของรูปร่าง
คุณสมบัติกรอบของ IShape — วิธี getX(), getY(), getWidth(), และ getHeight() — ระบุสี่เหลี่ยมที่เก็บไว้ในโมเดลการนำเสนอ เนื้อหาจริงที่แสดงอาจขยายออกนอกกรอบนั้นหรือครอบคลุมสี่เหลี่ยมที่เรียงตามแกนต่างกัน การหมุน, เส้นขอบ, ปลายลูกศร, การจัดวางข้อความและการล้น, รูปเรขาคณิต SmartArt ที่สร้างขึ้น, และเอฟเฟ็กต์การเรนเดอร์อื่น ๆ สามารถเปลี่ยนพื้นที่ที่ครอบคลุมได้
ใช้ Shape.getVisualBounds เพื่อคำนวณพื้นที่ที่ครอบคลุมโดยไม่ต้องสร้างภาพ วิธีนี้คืนค่าเป็น RectF ในพิกัดของสไลด์ สี่เหลี่ยมที่คืนค่าจะไม่ถูกคลิปให้เข้ากับสไลด์ ดังนั้นพิกัดของมันอาจเป็นค่าติดลบเมื่อเนื้อหาขยายออกนอกจุดกำเนิดของสไลด์
Shape.getVisualBounds ยังไม่ได้ถูกประกาศในอินเทอร์เฟซ IShape ดังนั้น ให้เก็บรูปร่างที่ได้รับจากคอลเลคชันรูปร่างของสไลด์เป็นค่าอินเทอร์เฟซและทำการคาสต์เมื่อเรียกใช้เมธอดเท่านั้น
ตัวอย่างต่อไปนี้จะรับและเปรียบเทียบกรอบและขอบเขตภาพจริง:
Presentation presentation = new Presentation("example.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IShape shape = slide.getShapes().get_Item(0);
RectF visualBounds = ((Shape) shape).getVisualBounds();
float frameLeft = shape.getX();
float frameTop = shape.getY();
float frameRight = frameLeft + shape.getWidth();
float frameBottom = frameTop + shape.getHeight();
RectF frameBounds = new RectF(frameLeft, frameTop, frameRight, frameBottom);
System.out.println("Frame bounds: " + frameBounds);
System.out.println("Visual bounds: " + visualBounds);
} finally {
presentation.dispose();
}
คุณสามารถใช้ RectF เดียวกันเพื่อจัดตำแหน่งรูปร่างที่อยู่ใกล้เคียงให้สอดคล้องกับขอบซ้าย, ขวา, ด้านบน หรือด้านล่าง; สำรองพื้นที่เพียงพอในเลย์เอาต์ที่สร้าง; หรือตรวจจับเนื้อหานอกเขตที่อนุญาต ขอบเขตภาพจริงมีประโยชน์เป็นพิเศษสำหรับ SmartArt, กล่องข้อความ, ลูกศร, รูปภาพ, รูปร่างที่หมุน, และกลุ่มรูปร่าง ที่กรอบที่เก็บอาจไม่แสดงผลเต็มที่ของการเรนเดอร์
ใช้ Shape.getVisualBounds เมื่อคุณต้องการพิกัดสำหรับการจัดเลย์เอาต์หรือการตรวจสอบและไม่ต้องการบิตแมป ใช้ IShape.getImage เมื่อคุณต้องการเรนเดอร์รูปร่าง ด้วย ShapeThumbnailBounds ShapeThumbnailBounds.Shape กำหนดขนาดภาพจากขอบเขตของรูปร่างรวมถึงการตั้งค่าเส้นขอบ ในขณะที่ ShapeThumbnailBounds.Appearance กำหนดขนาดจากการปรากฏของรูปร่างและจำกัดผลลัพธ์ให้อยู่ในขอบเขตของสไลด์ ตรงกันข้าม Shape.getVisualBounds จะคืนค่าเพียงสี่เหลี่ยมที่คำนวณได้และไม่คลิปให้เข้ากับสไลด์
คำถามที่พบบ่อย
รูปแบบภาพใดบ้างที่สามารถใช้เมื่อบันทึกภาพขนาดย่อของรูปร่าง?
PNG, JPEG, BMP, GIF, TIFF, และอื่น ๆ รูปร่างยังสามารถ ส่งออกเป็นเวกเตอร์ SVG โดยบันทึกเนื้อหารูปร่างเป็น SVG
ความแตกต่างระหว่างขอบเขต Shape และ Appearance คืออะไรเมื่อเรนเดอร์ภาพขนาดย่อ?
Shape ใช้เรขาคณิตของรูปร่าง; Appearance พิจารณา เอฟเฟ็กต์ภาพ (เงา, แสงเรืองแสง ฯลฯ) เข้าไปด้วย
จะเกิดอะไรขึ้นหากรูปร่างถูกทำเครื่องหมายว่าเป็นซ่อน? จะยังคงเรนเดอร์เป็นภาพขนาดย่อหรือไม่?
รูปร่างที่ซ่อนอยู่ยังคงเป็นส่วนหนึ่งของโมเดลและสามารถเรนเดอร์ได้; ธงซ่อนจะส่งผลต่อการแสดงสไลด์โชว์แต่จะไม่ขัดขางการสร้างภาพของรูปร่าง
รูปแบบกลุ่ม, แผนภูมิ, SmartArt, และวัตถุซับซ้อนอื่น ๆ รองรับหรือไม่?
ใช่ วัตถุใด ๆ ที่แสดงเป็น Shape (รวมถึง GroupShape, Chart, และ SmartArt) สามารถบันทึกเป็นภาพขนาดย่อหรือเป็น SVG ได้
ฟอนต์ที่ติดตั้งในระบบส่งผลต่อคุณภาพของภาพขนาดย่อของรูปร่างข้อความหรือไม่?
ใช่ คุณควร จัดเตรียมฟอนต์ที่จำเป็น (หรือ กำหนดการทดแทนฟอนต์) เพื่อหลีกเลี่ยงการ fallback ที่ไม่ต้องการและการจัดเรียงข้อความใหม่