问题标签 [bufferedimage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
467 浏览

java - What's the best way to fill or paint around an image in Java?

I have a set of images that I'm combining into a single image mosaic using JAI's MosaicDescriptor.

Most of the images are the same size, but some are smaller. I'd like to fill in the missing space with white - by default, the MosaicDescriptor is using black. I tried setting the the double[] background parameter to { 255 }, and that fills in the missing space with white, but it also introduces some discoloration in some of the other full-sized images.

I'm open to any method - there are probably many ways to do this, but the documentation is difficult to navigate. I am considering converting any smaller images to a BufferedImage and calling setRGB() on the empty areas (though I am unsure what to use for the scansize on the batch setRGB() method).

My question is essentially:

  • What is the best way to take an image (in JAI, or BufferedImage) and fill / add padding to a certain size?
  • Is there a way to accomplish this in the MosaicDescriptor call without side-effects?

For reference, here is the code that creates the mosaic:

0 投票
2 回答
23847 浏览

java - 使用 Java (Swing) 在 JPanel/JFrame 中播放 .wav 声音文件

我需要一些代码示例,说明如何使用来自硬盘驱动器位置的文件路径,然后在 Swing GUI 中打开时播放 .wav 声音文件。我不需要它来显示播放按钮、暂停或停止。当我从窗口的“文件”中选择“声音”选项时,我只想播放它(我已经知道该怎么做,无需解释)。

所以基本上,只是如何从 JFrame 内的文件路径(即 c:/cake/thereisnone.wav)播放 .wav 声音文件。

以及之后如何轻松地将方法应用于该声音文件。

此外,如果有人知道如何在 JFrame 中的 BufferedImage 上应用方法,那也会很有帮助。

非常感谢大家!

0 投票
3 回答
838 浏览

java - 在 Java 中以自下而上的顺序存储图像像素的最佳方法

我有一个字节数组,表示 Windows BMP 格式的图像,我希望我的库将它作为 . 呈现给 Java 应用程序BufferedImage而不复制像素数据。

主要问题是 JDK 中的所有实现都Raster以自上而下、从左到右的顺序存储图像像素,而 BMP 像素数据是自下而上、从左到右存储的。如果不对此进行补偿,则生成的图像将垂直翻转。

最明显的“解决方案”是将SampleModel'scanlineStride属性设置为负值,并将带偏移(或DataBuffer' 数组偏移)更改为指向左上角像素,即数组中最后一行的第一个像素. 不幸的是,这不起作用,因为如果给定负参数,所有SampleModel构造函数都会抛出异常。scanlineStride

我目前正在通过scanlineStride使用反射将字段强制为负值来解决它,但如果可能的话,我想以一种更清洁、更便携的方式来解决它。例如,是否有另一种方法可以欺骗RasterorSampleModel以自下而上的顺序排列像素但不破坏封装?或者是否有一个库可以包装Rasterand SampleModel,以相反的顺序呈现像素行?

我宁愿避免以下方法:

  • 复制整个图像(出于性能原因。代码必须每秒处理数百个大(> = 1Mpixels)图像,虽然整个图像必须可供应用程序使用,但它通常只能访问一个很小的(但难以预测) )图像的一部分。)
  • 修改DataBuffer以执行坐标变换(这实际上可行,但这是另一个“肮脏”的解决方案,因为缓冲区不需要了解扫描线/像素布局。)
  • 从头开始重新实现Raster和/或SampleModel接口(因为兼容性检查的实现方式(至少在 Sun JDK 中),需要特定的子类,SampleModel因此通用BottomUpSampleModel包装类不起作用。)
0 投票
2 回答
418 浏览

clojure - 计算 BufferedImage 的 RGB 值

我正在使用以下代码段来构建一个 32 位整数以与 BufferedImage 的 setRGB 一起使用

写完颜色后,读回来显示错误的颜色是我的逻辑有问题吗?

0 投票
3 回答
8756 浏览

java - 使用 BufferedImage 从 Java 中的 RGB 颜色空间中获取灰度像素值

任何人都知道将返回的 RGBint 值<BufferedImage> getRGB(i,j)转换为灰度值的简单方法吗?

我打算通过使用它分解它们来简单地平均 RGB 值;

然后平均红色,绿色,蓝色。

但是我觉得对于这样一个简单的操作,我一定会遗漏一些东西......

在对不同问题做出很好的回答之后,我应该弄清楚我想要什么。

我想获取从 getRGB(i,j) 返回的 RGB 值,并将其转换为 0-255 范围内的白色值,表示该像素的“暗度”。

这可以通过平均等来完成,但我正在寻找一种 OTS 实现来节省我的几行代码。

0 投票
2 回答
2363 浏览

java - 如何在运行时从 JTextArea 运行/编译 Java 代码?

我有一个用 BufferedImage 绘制并包含在 JFrame 的 JDesktopPane 中的 JInternalFrame。我还有一个 JTextArea ,我想在其中编写一些 java 代码(函数),将当前 JInternalFrame 绘制的 BufferedImage 作为输入,并在对此输入进行一些操作后返回另一个操作 BufferedImage,该操作再次使用新的操作图像绘制 JInternalFrame。

JTextArea的操作java代码:-

如何在运行时运行/编译此 JTextArea java 代码并获取新的操作图像以在 JInternalFrame 上进行绘制?

这是我的主要课程:

(这个类不是实际的,但我为您创建了它,用于包含 JTextArea、JInternalFrame、Apply Button 的基本接口)

注意:在上面的类中 JInternalFrame (ImageFrame) 是不可见的,即使我已经声明它可见。因此,ImageFrame 在编译和运行上述类时是不可见的。在运行它之前,您必须确定此问题。

0 投票
1 回答
278 浏览

java - Java 绘制速度相对于颜色模型

我有一个带有 IndexColorModel 的 BufferedImage。我需要将该图像绘制到屏幕上,但我注意到使用 IndexColorModel 时这很慢。但是,如果我通过身份仿射变换运行 BufferedImage,它会创建一个带有 DirectColorModel 的图像,并且绘画速度要快得多。这是我正在使用的代码

我有三个问题
1. 为什么在 IndexColorModel 上绘制速度较慢?
2、有什么办法可以加快IndexColorModel的绘制速度?
3. 如果 2. 的答案是否定的,这是从 IndexColorModel 转换为 DirectColorModel 的最有效方法吗?我注意到这种转换取决于图像的大小,我想删除这种依赖关系。

谢谢您的帮助

0 投票
4 回答
49909 浏览

java - 如何使用 JFileChooser 保存文件?

我的应用程序中有一个名为“另存为”的方法,它将我的应用程序在计算机上的图像保存到文件中。我使用 JFileChooser 让用户选择他们想要的位置来保存文件。问题是除非用户明确键入文件格式,否则它会保存没有扩展名的文件。如何在“文件类型”下拉菜单中设置 jpg、png 等格式。

并且,如何从文件类型下拉菜单中获取扩展名以保存我的图像文件。

0 投票
1 回答
603 浏览

java - 如何指定 Java BufferedImage 调整大小的行为:像素行需要最小值而不是平均

我想调整 Java BufferedImage 的大小,使其垂直变小,但不使用任何类型的平均,这样如果源图像中的像素行是“空白”(白色),则在目标图像的对应位置:“min”操作。默认算法(在getScaledInstance中指定)不允许我进行足够细粒度的控制。我想实现以下逻辑:

我一直在阅读RescaleOp,但还没有弄清楚如何实现这个功能——这无疑是一种奇怪的缩放类型。任何人都可以为我提供有关如何执行此操作的指示吗?在更糟糕的情况下,我想我可以保留目标 ImageBuffer 并按照伪代码复制像素,但我想知道是否有更好的方法。

0 投票
1 回答
1215 浏览

java - 可以将 BufferedImage 写入任何格式的文件吗?

如果我们在 java 中有一个 BufferedImage 对象,我们可以使用 ImageIO.write 以任何格式将其写出(如果我们有相同的 Writer 对象),这是否正确?我尝试将 BufferedImage 对象写入 jpg 文件,它输出了一个空图像文件,但是当我尝试将其写入 png 文件时,它工作正常。