Внутри JSP: объедините два изображения и позвольте пользователю распечатать результат - PullRequest
1 голос
/ 04 октября 2009

Я просто застрял с другой проблемой программирования. На веб-странице JSP у меня есть два URL. Из двух изображений одно - Tiff, а другое - PNG.

Тот, что представляет собой PNG, похож на штамп. Функциональность приложения состоит в том, чтобы обеспечить своего рода механизм поиска для изображений Tiff done и затем предоставить пользователю возможность распечатать одно из этих изображений. НО изображение должно быть напечатано с .PNG внизу (оно не должно покрывать исходное изображение).

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

У меня есть очень хороший веб-сервер для работы этого приложения. Так что я не против интенсивного использования ресурса. (Может быть, это даже не нужно, но вы знаете, когда вы игнорируете что-то, лучше сказать все).

Заранее спасибо за поддержку.

Ответы [ 2 ]

2 голосов
/ 04 октября 2009

Есть много способов объединить 2 изображения в JSP. Вы можете использовать CSS или JavaScript, чтобы наложить 2 изображения. Тем не менее, я предполагаю, что ваша цель - защитить изображение. Тогда вы не хотите делать это в браузере, потому что оригинальное изображение все еще выставлено.

Вам нужно написать фильтр водяных знаков, чтобы все ваши изображения были отмечены этим PNG. Многие программные пакеты для фотогалереи поставляются с таким фильтром.

Вот фрагмент кода для добавления водяного знака на изображение,

    public static BufferedImage watermark(BufferedImage source, BufferedImage watermarkImage, Point position,
                    float transparency) {
            if (source == null)
                    return null;
            if (watermarkImage == null || position == null)
                    return source;
            Graphics2D g2d = (Graphics2D) source.getGraphics();
            AlphaComposite alpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, transparency);
            g2d.setComposite(alpha);
            g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
            g2d.drawImage(watermarkImage, position.x, position.y, watermarkImage.getWidth(), watermarkImage.getHeight(),
                            null);
            g2d.dispose();
            return source;
    }
1 голос
/ 04 октября 2009

Для отправки двоичных данных вам потребуется использовать сервлет, но вы можете воспользоваться Java Advanced Imaging API, http://java.sun.com/products/java-media/jai/forDevelopers/jaifaq.html и прочитать оба изображения, затем вы можете объединить их и сохранить их. в формате TIFF или PNG. PNG без потерь, так что должно быть в порядке, так как его легче просматривать в браузерах.

Я думаю, что это был бы самый простой подход, хотя прошло уже много лет с тех пор, как я использовал JAI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...