Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSP内部:合并两个图像并让用户打印结果_Jsp_Pdf_Image Processing - Fatal编程技术网

在JSP内部:合并两个图像并让用户打印结果

在JSP内部:合并两个图像并让用户打印结果,jsp,pdf,image-processing,Jsp,Pdf,Image Processing,我只是被另一个编程问题困住了。在JSP网页中,我有两个URL。从两个图像中,一个是Tiff,另一个是PNG 一个PNG就像一张邮票。该应用程序的功能是为完成的Tiff图像提供某种搜索机制,然后为用户提供打印其中一幅图像的选项。但是图像必须在底部使用.PNG打印(不能覆盖原始图像) 一位朋友建议我在一个页面中生成两张图片的PDF,但我不知道如何生成。另外,我担心这样做会降低图像的质量或缩小图像的比例。由于这些图像具有很高的历史价值,用户必须能够以几乎相同的原始Tiff质量打印 我有一个非常好的网络

我只是被另一个编程问题困住了。在JSP网页中,我有两个URL。从两个图像中,一个是Tiff,另一个是PNG

一个PNG就像一张邮票。该应用程序的功能是为完成的Tiff图像提供某种搜索机制,然后为用户提供打印其中一幅图像的选项。但是图像必须在底部使用.PNG打印(不能覆盖原始图像)

一位朋友建议我在一个页面中生成两张图片的PDF,但我不知道如何生成。另外,我担心这样做会降低图像的质量或缩小图像的比例。由于这些图像具有很高的历史价值,用户必须能够以几乎相同的原始Tiff质量打印

我有一个非常好的网络服务器机器只为这个应用程序的工作。所以我不介意大量使用资源。(也许这甚至没有必要,但你知道,当你忽略某些事情时,最好说出来)


要发送二进制数据,您需要使用servlet,但是,您可以利用Java Advanced Imaging API,读入两个图像,然后将它们合并并保存为TIFF或PNG。PNG是无损的,所以应该可以,因为它更容易在浏览器中查看


我认为这是最简单的方法,尽管我已经多年没有使用JAI了。

有很多方法可以在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;
    }