עבודה עם תמונות
עבודה עם תמונות
Aspose.Cells FOSS for Java allows you to embed images directly into תאי לוח העבודה ומחזירים או מוחקים תמונות קיימות.תמונות הן ניהול באמצעות PictureCollection מופיעים על ידי כל אחד Worksheet, ו כל אחד Picture אובייקט מספק גישה לנתונים של התמונה, האנקור שלה מיקום, סוג התמונה המזהה שלה, וסוג התוכן MIME שלה.
סקירה
כל עיתון מציג את התמונות שלו דרך Worksheet.getPictures(), אשר חוזר א PictureCollection.ניתן להוסיף תמונות מתוך ביט. ארדואן, א InputStream, או מסלול קובץ.הקולקציה מספקת עוזר שיטות לזיהוי סוג תמונה מ- byte ירוק, לפתור את הקובץ הרחבה מתוך נתוני תמונה, והרחיבה של מפות לסוג תוכן MIME.
גישה לתמונות על לוח עבודה
להחזיר את PictureCollection דרך Worksheet.getPictures().שימוש PictureCollection.getCount() כדי לקבוע כמה תמונות יש. תמונות בודדות זמינות באמצעות אינדיקטור מבוסס אפס דרך PictureCollection.get(index).
להוסיף תמונה
3 תוצאות של PictureCollection.add() זמינים, כל אחד מהם החזרה של אינדיקטור מבוסס אפס של התמונה שדווחת לאחרונה:
add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData)מתוך ביטה Arrayadd(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, stream)מתוך InputStreamadd(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);קרא תמונות תכונות
ברגע שאתה מחזיק א 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 של סדרה ביטה ללא שילוב ראשון.
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) כדי למחוק תמונה על ידי מדד מבוסס אפס:
ws.getPictures().removeAt(0);טיפים ושיטות טובות
- השתמשו ב
add(..., imageData)כשיש כבר את ה-Byte בזיכרון; השתמשו בהעלאת הזרם כדי למנוע את העלאת קבצים גדולים לחלוטין. - שיחת טלפון
PictureCollection.detectImageType(data)כדי להעריך את התמונה פורמט לפני ההרכבה. - שורות ואנקור הם אינדיקטורים מבוססים על אפס.
Picture.getName()יש להחזיר את שם הקובץ המקורי ולא את המקור.- התמונות נשמרות על XLSX סיבוב.
בעיות נפוצות
| נושא | סיבה | קבע |
|---|---|---|
getCount() 0 לאחר הוספת | המהדורה נסגרה לפני שהוספת הסתיימה. | • להבטיח כי InputStream פתוח וניתן לקרוא. |
ImageType.UNKNOWN חזרה | נתוני תמונה לא תומכים או שבורים | בדוק אם הקובץ הוא PNG, JPEG, GIF, BMP או TIFF. |
| התמונה נראית לא נכונה | מדד שורה / עמודים לא נכון | השתמשו באינדיקטורים מבוססי אפס עבור כל הפרמטרים של האנקור |
FAQ
אילו פורמטים תמונה תומכים בהרכב?
The ImageType ה-enum מכסה PNG, JPEG, GIF, BMP, TIFF ו-EMF. ניתן להוסיף נתונים כבני, אך יש להם ImageType • על UNKNOWN.
כיצד אני מקבל את הרחבת הקובץ של תמונה מובנית?
שיחת טלפון PictureCollection.extensionFromData(picture.getData()) עם The תמונה של ביטים ירוקים.
האם ניתן להחליף נתוני תמונה קיימים?
כן, להחזיר את Picture דרך get(index) וקוראים setData(bytes).
איך אני יכול למצוא תמונה לפי שם?
צפו בכל התמונות עם getCount() ו get(index) ולהשוות Picture.getName().
האם התמונות נשמרות כאשר הם מאוחסנים בפורמטים אחרים?
שמירה על התמונה תלויה בפורמט היעד. XLSX סיבוב מסלול תומך לחלוטין.
סיכום התייחסות API
תמונה
| שיטת | סוג החזרה | תיאור |
|---|---|---|
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. |
getData() | byte[] | תמונה ירוקה באט. |
setData(data) | void | להחליף את ביטים תמונה ירוקה. |
getContentType() | String | סוג תוכן MIME string. |
PictureCollection
| שיטת | סוג החזרה | תיאור |
|---|---|---|
getCount() | int | מספר התמונות על לוח העבודה. |
get(index) | Picture | החזיר את התמונה למדד מבוסס אפס. |
add(...) | int | הוא מביא תמונה; מחזיר את האינדקס המבוסס על אפס. |
removeAt(index) | void | הסר את התמונה על בסיס אפס. |
detectImageType(data) | ImageType | מצא את פורמט התמונה מ- bytes ירוקים. |
extensionFromData(data) | String | החזיר את הרחבה של הקובץ עבור נתוני התמונה. |
contentTypeFromExtension(ext) | String | החזיר את סוג MIME עבור הרחבה של קובץ. |