Робота з фотографіями

Робота з фотографіями

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.

Загальні питання

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()) з зображення на сумі байтів.

Чи можна замінити наявні дані з зображення?

Так, поверніться. 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()StringMIME стрічка з типом вмісту.

PictureCollection

MethodТип поверненняDescription
getCount()intКількість фотографій на таблиці.
get(index)PictureПовертає зображення на нульовому базі.
add(...)intВкладає зображення; повертає його індекс на основі нуля.
removeAt(index)voidВидає зображення в нульовому індексі.
detectImageType(data)ImageTypeВиявляє формат зображення з нерозроблених байтів.
extensionFromData(data)StringПовертає розширення файлу для даних зображення.
contentTypeFromExtension(ext)StringПовертає тип MIME для розширення файлу.

Дивіться також

 Українська