在 swing 中调整图像大小

2023-11-29

我有一段代码,用于将图像大小调整为窗帘大小(我想将分辨率更改为 200 dpi 之类的值)。基本上我需要它的原因是因为我想显示用户选择的图像(有点大),然后如果用户批准我想在不同的地方显示相同的图像但使用较小的分辨率。不幸的是,如果我给它一个大图像,屏幕上什么也不会出现。另外,如果我改变

imageLabel.setIcon(newIcon); 

to

imageLabel.setIcon(icon); 

我可以显示图像,但分辨率不正确,这就是我知道代码片段中存在问题而不是其他地方的问题的原因。

Image img = icon.getImage();

BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bi.createGraphics();
boolean myBool = g.drawImage(img, 0, 0, 100, 100, null);
System.out.println(myBool);
ImageIcon newIcon = new ImageIcon(bi);
imageLabel.setIcon(newIcon);
submitText.setText(currentImagePath);
imageThirdPanel.add(imageLabel);

您实际上不必关心缩放图像的细节。 Image 类已经有一个方法getScaledInstance(int width, int height, int hints)为此目的而设计。 Java 文档说:

创建此图像的缩放版本。返回一个新的 Image 对象 这将以指定的宽度和高度渲染图像 默认。新的 Image 对象可能会异步加载,即使 原始源图像已完全加载。如果其中之一 宽度或高度为负数,则替换为一个值 保持原始图像尺寸的纵横比。

你可以像这样使用它:

// Scale Down the original image fast
Image scaledImage = imageToScale.getScaledInstance(newWidth, newHighth, Image.SCALE_FAST);
// Repaint this component
repaint();

Check this一个完整的例子。

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

在 swing 中调整图像大小 的相关文章

随机推荐

  • 哪些发布管理解决方案值得研究? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在拥有大量应用程序的组织中 这些应用程序是用myriad运行的语言数量无数平台和数据库 人们如何管理构建和补丁的发布 特别是当某些版本是第三方发布时 我知道那里有一大堆 发布管理 应用程序
  • Fusion 表 api 地图在表更新后不显示样式

    我对 Fusion Tables Api 比较陌生 我正在尝试使用 Fusion Tables 和 Google Maps Api 创建一个简单的网络应用程序 该应用程序每天大约使用 3 次 每次都会将一组新数据添加到表中 并用新条目替换旧
  • nested_form, has_many :through, 更新连接模型上的属性

    我正在使用 ryan bates 的插件nested form 并且我一直在尝试为 has many through 关系编写表单 我有3个型号 Profile has many memberships has many organizat
  • 元素树对xpath的限制

    我使用 Element Tree 一段时间了 我喜欢它 因为它很简单 但我怀疑它的 x 路径的实现 这是 XML 文件 a b b b b a
  • c、结构体后面的函数定义

    675 Check the validity of an ACL for a file 676 677 int 678 ufs aclcheck ap 679 struct vop aclcheck args 680 struct vnod
  • 实现双工时 WCF 中出现超时异常

    我的服务合同和回调合同如下所示 ServiceContract CallbackContract typeof IWebshopCallback interface IWebshop OperationContract string Get
  • 如何向`@Html.EditorFor`添加自定义数据属性和类?

    我想添加一些自定义属性input产生于 Html EditorFor 我尝试了以下方法 Html EditorFor model gt model Percent new class percent 但它只是忽略了我的类 从我周围的搜索中可
  • 向 JSF 2.0 UIInput 组件添加自定义属性 (HTML5) 支持

    我正在尝试编写一个渲染器来处理placeholder上的属性
  • 捕获相机拍摄的照片并将其存储到本地数据库/PhoneGap/Cordova/iOS中

    我目前正在使用 Phonegap Cordova 和 jQuerymobile 构建 iOS 应用程序 这个想法是用相机拍照并存储捕获的图像以供将来使用 我想将路径 文件名存储到本地数据库中 并将图片文件移动到 iPhone 中的持久位置
  • 优化 iPad 上多张图片的加载

    我正在开发一个 iPad 项目 尝试通过切换预渲染图像来模拟 3D 物体的旋转 在内存管理方面 我不是最敏锐的人 所以我想知道是否有人对如何优化它有任何建议 我的解决方案现在看起来像这样 void touchesMoved NSSet to
  • 学习Python:If条件一直执行

    我正在学习 python 我不明白为什么下面的程序会打印你的数字比我想象的要多即使猜测的数字较小 就像在 python 中一样 它是比较字符串而不是数字 number 32 tries 1 print I have chosen a num
  • 未捕获的 ReflectionException:类日志不存在 Laravel 5.2

    我目前正在尝试从 github 克隆我的现有项目 克隆后我运行composer install在此过程中我收到以下错误 Uncaught ReflectionException Class log does not exist 我在 Cen
  • 在Ui线程上执行同步操作

    我正在尝试开发 Windows 应用程序并遇到问题 我有一个 MainPage xaml 和另外 2 个 StartScreen xaml 和 Player xaml 如果某些条件成立 我将切换主页的内容 因此 我在 StartScreen
  • PHP从页面中提取文章摘录

    任何人都知道如何从任何给定的文章页面生成摘录 因此可以从许多类型的网站获取资源 就像当你将网址粘贴到帖子中时 Facebook 所做的那样 谢谢 你想做的事情叫做网页抓取 这样做的基本方法是捕获页面 您可以使用以下命令抓取 URLfile
  • 使用 URL.createObjectURL 重建 PDF 后损坏

    我试图从服务器传递 PDF 文件并将其显示在浏览器中 但输出已损坏 var blob atob data Package console log blob var file new Blob blob type application pd
  • 如何在 Android 中显示来自 google 驱动器 url 的视频

    我想在 Android 应用程序中显示视频 我在谷歌上搜索并找到了下面的代码 VideoView videoView VideoView findViewById R id videoView 字符串 vid 地址 https docs g
  • bash 脚本中的“exec”之后不会运行任何代码[重复]

    这个问题在这里已经有答案了 我在命令名称中使用变量扩展进行测试的示例 bash 脚本 test command w variable expansion in name sh bin bash Gabriel Staples 21 Mar
  • 必须声明标量变量错误

    这与我最后一个问题有关 我有这个代码 DECLARE PatientId UNIQUEIDENTIFIER DECLARE FormId NCHAR 16 DECLARE columns VARCHAR 8000 DECLARE query
  • 将 JFileChooser 置于所有窗口之上

    我似乎对文件选择器对话框的非常简单的实现有一个问题 它要求我每次都最小化 Netbeans 才能实现它 而且现在特别是在测试时变得非常令人沮丧 我在网上看到了一些解决方案 包括SO但似乎没有一个能做到这一点 而其他一些对于我目前的水平来说似
  • 在 swing 中调整图像大小

    我有一段代码 用于将图像大小调整为窗帘大小 我想将分辨率更改为 200 dpi 之类的值 基本上我需要它的原因是因为我想显示用户选择的图像 有点大 然后如果用户批准我想在不同的地方显示相同的图像但使用较小的分辨率 不幸的是 如果我给它一个大