Робота з фотографіями
Робота з фотографіями
Aspose.Cells FOSS for Java allows you to embed images directly into Клетка для таблиці і відшукати або видалити існуючі фотографії. Фотографії є управління за допомогою PictureCollection експонується кожним з них. Worksheet, і кожен Picture об’єкт надає доступ до даних зображення, його якор позицію, тип виявленого зображення та тип вмісту MIME.
Огляд
Кожний лист показує свої фотографії через: Worksheet.getPictures(), що повертає a PictureCollection.Ви можете додати фотографії з байта. масив, а InputStream, або шлях файлу. Колекція надає помічнику для методи виявлення типу зображення з нерозроблених байтів, розчинення файлу; розширення з даних зображення, а також розширение для мапінгу до типу вмісту MIME.
Доступ до фотографій на планшеті
Відновити PictureCollection через: Worksheet.getPictures().Використовуйте. PictureCollection.getCount() щоб визначити, скільки картин є. Індивідуальні фотографії доступні за допомогою нульового індексу через: PictureCollection.get(index).
Додавання фотографії
Три перевантаження PictureCollection.add() доступні, кожна з яких повернення нульового індексу новододаної картини:
add(upperLeftRow, upperLeftColumn, lowerRightRow, lowerRightColumn, imageData)з байтового масиву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);Читання властивостей зображення
Коли ви тримаєте 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());
}Виявлення типу зображення з сирових байтів
Використання 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)перевантаження, коли у вас вже є байти. в пам’яті; використовуйте перевантаження потоку, щоб уникнути завантажування великих файлів повністю. - Call
PictureCollection.detectImageType(data)для підтвердження зображення. форматизувати перед вбудуванням. - Анкерні рядки та стовпці - це індекси на основі нуля.
Picture.getName()повертає внутрішній ідентифікатор, а не назву файлу.- Фотографії збережені на XLSX.
Загальні питання
| Issue | Cause | Виправлення |
|---|---|---|
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()) з зображення на сумі байтів.
Чи можна замінити наявні дані з зображення?
Так, поверніться. 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 | Значення формати зображення. |
getData() | byte[] | Байт чистих зображень. |
setData(data) | void | Замінить байти сирого зображення. |
getContentType() | String | MIME стрічка з типом вмісту. |
PictureCollection
| Method | Тип повернення | Description |
|---|---|---|
getCount() | int | Кількість фотографій на таблиці. |
get(index) | Picture | Повертає зображення на нульовому базі. |
add(...) | int | Вкладає зображення; повертає його індекс на основі нуля. |
removeAt(index) | void | Видає зображення в нульовому індексі. |
detectImageType(data) | ImageType | Виявляє формат зображення з нерозроблених байтів. |
extensionFromData(data) | String | Повертає розширення файлу для даних зображення. |
contentTypeFromExtension(ext) | String | Повертає тип MIME для розширення файлу. |