JSP 如何缩放图像?

2023-12-06

有没有办法缩放图像然后在jsp页面中显示?当检索和显示图像时,我想以相同的尺寸显示所有照片。有什么API可以做到吗?我从谷歌搜索过,我发现那些是关于使用 Takeit 缩放图像的,但不能在网络应用程序中工作。


您可以使用内置的Java 2D API为此(基本 Sun 教程here).

基本上,您需要创建一个Servlet得到一个InputStream中的原始图像doGet()方法,通过 Java 2D API 传递它,然后将其写入OutputStreamHTTP 响应。然后你只需将这个 Servlet 映射到某个特定的url-pattern in web.xml, e.g. /thumbs/*并在中调用这个 ServletsrcHTML 的属性<img>元素。

这是一个基本的启动示例(您仍然需要按照自己想要的方式自行处理意外情况):

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // First get image file name as request pathinfo (or parameter, whatever you want).
    String imageFilename = request.getPathInfo().substring(1);

    // And get the thumbnail dimensions as request parameters as well.
    int thumbWidth = Integer.parseInt(request.getParameter("w"));
    int thumbHeight = Integer.parseInt(request.getParameter("h"));

    // Then get an InputStream of image from for example local disk file system.
    InputStream imageInput = new FileInputStream(new File("/images", imageFilename));

    // Now scale the image using Java 2D API to the desired thumb size.
    Image image = ImageIO.read(imageInput);
    BufferedImage thumb = new BufferedImage(thumbWidth, thumbHeight, BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics2D = thumb.createGraphics();
    graphics2D.setBackground(Color.WHITE);
    graphics2D.setPaint(Color.WHITE); 
    graphics2D.fillRect(0, 0, thumbWidth, thumbHeight);
    graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);

    // Write the image as JPG to the response along with correct content type.
    response.setContentType("image/jpeg");
    ImageIO.write(thumb, "JPG", response.getOutputStream());
}

Servlet 映射到web.xml如下:

<servlet>
    <servlet-name>thumbServlet</servlet-name>
    <servlet-class>com.example.ThumbServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>thumbServlet</servlet-name>
    <url-pattern>/thumbs/*</url-pattern>        
</servlet-mapping>

可以按如下方式使用:

<img src="thumbs/filename.jpg?w=100&h=100" width="100" height="100">

注意:不,这不能单独使用 JSP 来完成,因为它是一种不适合此任务的视图技术。


注 2:这是一项相当昂贵的(CPU 密集型)任务,请记住这一点。您可能需要考虑自己预先缓存或预生成拇指。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSP 如何缩放图像? 的相关文章

  • Spring控制器是线程安全的吗

    我遇到了这个控制器示例 想知道它是否是线程安全的 我特别想知道 gson 实例变量 import org springframework stereotype Controller import org springframework we
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • JavaFX - setVisible 隐藏元素但不重新排列相邻节点

    在 JavaFX 中 如果我有一个场景有 2VBox元素和每个VBox有多个Label in it 如果我设置顶部VBox to 无形的 为什么底部VBox 不向上移动顶部的场景VBox was The VBox is 无形的但我希望其他物
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 从 Java 日历迁移到 Joda 日期时间

    以前 当我第一次设计股票应用相关软件时 我决定使用java util Date表示股票的日期 时间信息 后来我体会到了大部分方法java util Date已弃用 因此 很快 我重构了所有代码以利用java util Calendar 然而
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public
  • 尝试使用带有有效购买令牌的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

    当使用 Java Google Play Developer API 版本 3 并请求有效购买令牌的购买信息时 我收到以下异常 API 调用返回 400 Bad Request 响应以及以下消息 code 400 errors domain

随机推荐

  • 无法使用 Gitolite (centos) 添加用户

    我是 gitolite 的新手 我已经在远程服务器上安装了 gitolite 192 168 1 109 所以我可以 git 克隆 gitolite admin git git clone ssh email protected gitol
  • C# 中的 swig - 在可移植类库中找不到 HandleRef

    我正在尝试使用 Swig 将我的 C 代码包装为 C 如果C 文件的输出目标是类库 则没有错误并成功构建 但是我想同时支持 Windows Phone 8 1 和 Windows 8 1 因为这个原因我使用可移植类库而不是普通的类库 在这种
  • 如果初始 makemigrations 的一部分,使用针对查询集的选择的 Django 表单会导致错误

    我想了解此问题的最佳实践 我有一个 Django 表单 其中包含以下内容 class AdvancedSearchForm forms Form CATEGORY OPTIONS Category objects all order by
  • Google Cal API - 检查事件的脚本

    我想构建一个脚本 通过 Google 日历 PHP 客户端检查经过身份验证的用户的 Google 日历 我能够构建一个简单的页面 让用户进行身份验证并授予日历事件权限 我收到一个令牌 然后通过以下方式获取 15 个即将举行的活动 googl
  • 使用 LINQ 获取数据并在网格视图中显示结果

    如何在 C 和 Asp net 中使用 Linq 从数组中获取所有模块 如下所示 其中学生名字 这可能是很容易做到的事情 但未能掌握窍门 请帮忙 谢谢 ArrayList arrList new ArrayList new array li
  • Facebook iOS SDK - 如何为 Xcode 4.3 构建静态库?

    我正在按照此链接中的说明将 Facebook 集成到我的 iOS ARC 应用程序中 我陷入了构建静态库的步骤 https developers facebook com docs mobile ios build 我使用的是 Xcode
  • AVFoundationAudioSettings 的设置 AVAudioTimePitchAlgorithmVarispeed

    根据这些docs 我可以更改 AVAudioPlayer 的某些设置 包括AVAudioTimePitchAlgorithmVarispeed环境 我该如何设置这个值 我需要子类化 AVAudioSetting h 吗 如果不需要使用AVA
  • 在程序选项值(ini 文件)中使用哈希标记

    我在使用 boost 程序选项读取 ini 文件时遇到一些问题 问题是包含哈希标记的键 简单示例 部分 键 xxx yyy 检索密钥 返回 xxx 这是因为井号似乎被解释为注释的开始 因此该行的其余部分被跳过 不幸的是 我无法用其他字符替换
  • 数据表:按数字数据顺序排序不起作用?

    我正在使用 DataTables 版本 1 10 当列中显示的值不是数字时 我想让列可按数值排序 我理解了我需要做的是添加一个data sort属性到每个表格单元格 我尝试将其添加到createdRow方法 但是虽然我可以在 HTML 中看
  • 为什么我的 Java 输出字符串以 % 字符结尾?

    我在 Linux 上使用的 Java 版本是 openjdk版本 16 0 2 2021 07 20 OpenJDK 运行时环境 版本 16 0 2 7 OpenJDK 64 位服务器虚拟机 版本 16 0 2 7 混合模式 这是我从 He
  • 解释 Mike Bostock 节点解析循环 [重复]

    这个问题在这里已经有答案了 我对 JavaScript 和 d3 比较陌生 但我对强制导向布局非常感兴趣 在 Mike Bostock 的力导向可视化中 他倾向于使用以下代码 或类似代码 从链接列表中解析节点 var links sourc
  • rlang:在 NSE 函数中使用冒号快捷方式从...获取名称

    我正在编写一个用于制作人口统计数据表的函数包 我有一个函数 缩写如下 我需要在其中获取几列 我会gather一个数据框 诀窍是我想保持这些列的名称按顺序排列 因为我需要在收集后按该顺序放置一列 在这种情况下 这些列是estimate moe
  • 我应该如何从 Scala 列表中删除第一次出现的对象?

    从 Scala 列表中删除第一次出现的对象的最佳方法是什么 来自 Java 我习惯了List remove Object o 方法从列表中删除第一次出现的元素 现在我在 Scala 中工作 我希望该方法返回一个新的不可变的List而不是改变
  • 如何通过套接字InputStream发送XML数据

    我正在尝试使用基于 XML 的协议用 Java 编写客户端 服务器应用程序 但我有一个很大的问题 看这部分客户端代码 InputStream incoming skt getInputStream I get Stream from Soc
  • XCode 4 控制台不会接受用户输入

    在 XCode 4 中 当我运行这样的代码时 string input cout lt lt Enter command lt lt endl getline cin input cout lt lt You entered lt lt i
  • 具有前向声明错误的循环依赖

    在 A hpp 文件中 我有一个结构 其中有一个 B 类的指针 struct state B b 在 A hpp 文件中 我添加了前向声明 并将 B hpp 文件包含在 A cpp 文件中 A hpp class B 在 B hpp 文件中
  • 无法使用 IdHttp 解码响应内容

    我使用 TIdHttp 来获取网页内容 响应头指示内容编码为utf8 我想在控制台中打印内容为CP936 简体中文 但实际内容不可读 Result TEncoding Utf8 GetString ResponseBuffer 我在 pyt
  • 我如何知道空指针异常源自何处?

    我在制作黑莓应用程序时遇到问题 我发现有人制作了一个教程 它做了我尝试过的事情 我复制了教程应用程序的代码来尝试重新创建它 只是为了看看它的实际效果 结果 空指针异常 我想知道是什么触发了这个 我怎么能够 如果您捕获 Throwable 而
  • 如何在 Google Apps 脚本下的 Browser.msgBox 中将文本加粗

    我将以下 Google 脚本链接到一个工作表 function onOpen var text aux texto bold Browser msgBox AVISOS n n1 Prazo impreter vel text aux pa
  • JSP 如何缩放图像?

    有没有办法缩放图像然后在jsp页面中显示 当检索和显示图像时 我想以相同的尺寸显示所有照片 有什么API可以做到吗 我从谷歌搜索过 我发现那些是关于使用 Takeit 缩放图像的 但不能在网络应用程序中工作 您可以使用内置的Java 2D