Изменение размера/сжатие изображения с помощью Apache POI hslf - PowerPoint

Привет, я создаю презентацию Powerpoint с помощью apache poi и добавляю в презентацию много изображений.

private void addImage(SlideShow slideShow, Sheet slide, File image, int x, int y, int w, int h) {
    try {
        int idx = slideShow.addPicture(image, Picture.JPEG);
        Picture pict = new Picture(idx);
        pict.setAnchor(new Rectangle(x, y, w, h));
        slide.addShape(pict);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Функция работает, и в конце я получаю презентацию в формате ppt, но файл ppt слишком велик, и на другом ПК я получаю ошибку пространства в куче. Поэтому я хотел бы изменить размер / сжать свои изображения на слайдах. У меня есть четыре изображения на каждом слайде, поэтому они не должны иметь исходное разрешение.

Есть ли встроенная функция в poi для этого? Что-то типа

pict.resize(width, height);

Я использую апачпои 3.7

спасибо заранее


person Maick    schedule 25.10.2013    source источник


Ответы (1)


POI не изменяет сами данные изображения. Вам нужно будет передискретизировать его самостоятельно.

person kiwiwings    schedule 25.10.2013
comment
Привет Kiwiwings, хорошо - теперь я конвертирую изображения самостоятельно. Я подумал, может быть, есть способ использовать функцию пути PowerPoint, как здесь wikihow.com/Reduce -Powerpoint-File-Size Выберите вывод по электронной почте (96 пикселей на дюйм), чтобы уменьшить размер PowerPoint. Инструменты для работы с изображениями ››Формат ›› Сжать изображения ›› Параметры ›› Целевой вывод ›› Электронная почта (96 пикселей на дюйм) ) - person Maick; 28.10.2013
comment
... может быть хорошей идеей для расширения. Легко перебрать все изображения слайдов, узнать их размеры и рассчитать ширину/высоту в пикселях для данного ppi. Может быть, вы могли бы внести запись об улучшении в poi-bugzilla ... - person kiwiwings; 28.10.2013