การ ใช้ ภาพ

การ ใช้ ภาพ

Aspose.Cells FOSS for Java allows you to embed images directly into เซลล์ตารางงานและเรียกคืนหรือลบภาพที่มีอยู่. ภาพเป็น การจัดการผ่านการจัดหาและ PictureCollection ที่ถูกเผยแพร่โดยแต่ละคน Worksheet,และ แต่ละตัว Picture วัตถุให้การเข้าถึงข้อมูลภาพ, การประยุกต์ของมัน ตําแหน่ง รูปภาพที่ตรวจพบ และประเภทเนื้อหา MIME ของมัน.


ภาพรวม

แผ่นงานแต่ละใบแสดงภาพผ่าน Worksheet.getPictures(), ซึ่งคืน a PictureCollection.คุณสามารถเพิ่มภาพจากไบต์ได้ แอรเรย์, และ InputStream, หรือเส้นทางไฟล์ คอลเลกชั่นให้ผู้ช่วย วิธีการตรวจจับรูปแบบจากบายต์ raw, การแก้ไขไฟล์ การขยายจากข้อมูลภาพ และการขยับแผนที่ไปยัง MIME content type.


การ เข้า ไป ได้ กับ รูป ใน แผ่น งาน

รับข้อมูลจาก PictureCollection ผ่าน Worksheet.getPictures().ใช้ PictureCollection.getCount() เพื่อกําหนดภาพที่อยู่จํานวนเท่าไหร่. ภาพแต่ละรูปสามารถเข้าถึงได้โดยอัตรานิยามที่เนื่องจากศูนย์ผ่าน PictureCollection.get(index).


การเพิ่มภาพ

สามครั้งที่อุดตันของ PictureCollection.add() มีให้เลือก ทุกคน การคืนอัตรานิติฐานศูนย์ของภาพที่เพิ่มใหม่:

  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData) จากอัตราการแสดง byte
  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream) จาก InputStream
  • add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, fileName) จากเส้นทางไฟล์
// Embed an image from bytes into cells A1:C5
byte[] imgData = Files.readAllBytes(Paths.get("logo.png"));
int idx = ws.getPictures().add(0, 0, 4, 2, imgData);

การอ่าน Properties ของภาพ

เมื่อคุณถือ … Picture ตัวอ้างอิง, อ่านตําแหน่งการวางปักตัวของมัน, ข้อมูลภาพสด, ประเภทของรูปที่ตรวจพบ และประเภาวะ MIME:

PictureCollection pics = ws.getPictures();
for (int i = 0; i < pics.getCount(); i++) {
    Picture p = pics.get(i);
    System.out.printf("Name=%s type=%s anchor=[%d,%d]-[%d,%d]%n",
        p.getName(), p.getImageType(),
        p.getUpperLeftRow(), p.getUpperLeftColumn(),
        p.getLowerRightRow(), p.getLowerRightColumn());
}

การตรวจจับรูปแบบจาก Raw Bytes

การใช้งาน PictureCollection.detectImageType(data) เพื่อกําหนดการ ImageType enum value ของ array ไบต์ โดยไม่ใส่มันไว้ก่อน.

PictureCollection pics = ws.getPictures();
byte[] data = Files.readAllBytes(Paths.get("chart.png"));
ImageType type = pics.detectImageType(data);
String ext  = pics.extensionFromData(data);
String mime = pics.contentTypeFromExtension(ext);
System.out.printf("type=%s ext=%s mime=%s%n", type, ext, mime);

การ ลบ รูปภาพ

การใช้งาน PictureCollection.removeAt(index) เพื่อลบภาพโดยการใช้รูปของ อัตราการแสดงตัวที่ 0:

ws.getPictures().removeAt(0);

เคล็ดลับและปฏิบัติที่ดีที่สุด

  • ใช้การ add(..., imageData) การขยายความถ่วงเมื่อคุณมี byte แล้ว ในความจํา; ใช้การขยายสตรีมเพื่อหลีกเลี่ยงการบรรจุไฟล์ขนาดใหญ่ทั้งหมด.
  • Call PictureCollection.detectImageType(data) เพื่อยืนยันภาพ การจัดรูปแบบก่อนการติดตั้ง.
  • แอคเกอร์แถวและเสา คืออินเด็กซ์ที่ใช้ศูนย์.
  • Picture.getName() กลับตัวจําแนกภายใน ไม่ใช่ชื่อไฟล์เดิม.
  • ภาพถูกรักษาไว้บน XLSX การเดินทางกลับ.

ปัญหาทั่วไป

IssueCauseแก้ไข
getCount() กลับ 0 หลังจากการบวกการถ่ายทอดถูกปิด ก่อนการเพิ่มเติมจะเสร็จสิ้นการันตี InputStream เปิดและอ่านได้
ImageType.UNKNOWN กลับคืนมาข้อมูลภาพที่ไม่รองรับหรือเสียหายยืนยันว่าไฟล์เป็น PNG, JPEG, GIF, BMP หรือ TIFF ที่มีค่า
ตําแหน่งภาพดูผิดอินเด็กซ์แถว/คอลัมน์ไม่ถูกต้องใช้อัตรานิยมที่เน้นศูนย์สําหรับปารามีเตอร์การต่อรองทั้งหมด

FAQ

รูปแบบรูปภาพใดที่รองรับในการติดตั้ง?

การ ImageType enum ครอบคลุม PNG, JPEG, GIF, BMP, TIFF และ EMF อื่นๆ รูปแบบอาจนําเข้าเป็นข้อมูลไบนารี แต่มีตัวเลขที่ไม่ถูกต้อง ImageType ของ UNKNOWN.

ผมจะได้รับการขยายไฟล์ของภาพที่ติดตั้งได้อย่างไร?

Call PictureCollection.extensionFromData(picture.getData()) กับการ ภาพ raw bytes.

ผมสามารถเปลี่ยนข้อมูลภาพรูปที่มีอยู่ได้หรือไม่?

ใช่ เอาไปเอาคืน Picture ผ่าน get(index) และโทรหา setData(bytes).

ผมหารูปตามชื่อได้อย่างไร?

อีเทอเรทบนภาพทั้งหมดด้วย getCount() และ get(index) และเปรียบเทียบ Picture.getName().

การบันทึกรูปภาพเป็นรูปแบบอื่นจะรักษาได้หรือไม่?

การรักษาภาพขึ้นอยู่กับรูปแบบเป้าหมาย. XLSX ไป-กลับรองรับอย่างเต็มที่.


คําอธิบายการพบบ่อย API

Picture

MethodประเภทการคืนDescription
getName()Stringชื่อภายในของภาพ.
setName(name)voidกําหนดชื่อภายใน.
getUpperLeftRow()intแถวที่ศูนย์ฐานของปูบนซ้าย.
setUpperLeftRow(row)voidตั้งแถวปักตัวบนซ้าย.
getUpperLeftColumn()intคอลัมน์ที่ตั้งศูนย์ของปูบนซ้าย.
setUpperLeftColumn(col)voidตั้งคอลัมน์ปักตัวบนซ้าย.
getLowerRightRow()intแถวที่ศูนย์ฐานของแก่นขวาด้านล่าง.
setLowerRightRow(row)voidตั้งแถวปักตัวด้านขวาล่าง.
getLowerRightColumn()intคอลัมน์ที่ตั้งศูนย์ของตัวประจําด้านล่างขวา.
setLowerRightColumn(col)voidตั้งคอลัมน์ที่ตั้งตัวขึ้นด้านขวาล่าง.
getImageType()ImageTypeการตรวจจับรูปภาพ enum value.
getData()byte[]ภาพ Raw bytes.
setData(data)voidแทนรูปแบบ raw byte.
getContentType()StringMIME content type string. การใช้ขั้นตอนการแสดงความหมายของตัวเลขที่สอง.

PictureCollection

MethodประเภทการคืนDescription
getCount()intจํานวนรูปในใบทํางาน.
get(index)Pictureกลับภาพที่นิทรรศนะฐานศูนย์.
add(...)intการติดตั้งภาพ; กลับอินเด็กซ์ที่เนื่องจากศูนย์.
removeAt(index)voidลบภาพที่นิทรรศนะฐานศูนย์.
detectImageType(data)ImageTypeตรวจสอบรูปแบบภาพจากไบท์ท raw.
extensionFromData(data)Stringกลับความขยายไฟล์สําหรับข้อมูลภาพ.
contentTypeFromExtension(ext)Stringกลับ MIME ประเภทสําหรับการขยายไฟล์.

ดูเช่นกัน

 ภาษาไทย