问题标签 [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 回答
436 浏览

java - 将 Image 对象转换为 BufferedImage 对象

给定一个 Image 对象,如何在不使用任何图形内容的情况下将其转换为 BufferedImage 对象?

谢谢。

(PS 我正在使用 Java ImageIO 库)

0 投票
4 回答
6676 浏览

java - 比较两个 BufferedImage 之间像素值的最快方法?

我有一个 TYPE_INT_BGR 类型的 BufferedImage。我需要与另一个 BufferedImage 进行逐像素比较,以计算两个图像之间的“距离”。我有一些工作,但很慢。我从“参考”图像中得到一个像素,将其分解为 RGB 字节:

我将 r/g/b 值与候选图像的相应像素进行比较,并将差异的平方相加。

有没有更快的方法来进行这种比较?查看 JRE 源代码,我看到 BufferedImage.getRGB() 实际上是对来自光栅的组成 RGB 值进行或运算,这对我的目的来说是浪费的,因为我只是再次将其分解为字节。

我将尝试直接执行此操作,但我想知道是否没有更好的方法来执行此操作,无论是通过我可能错过的 Java 或 3rd 方 API。

0 投票
3 回答
16036 浏览

java - 将一系列 BufferedImages 转换为 Java 中的视频?

如何将 BufferedImages 数组转换为视频?我正在做一个屏幕录像机。

之后我将如何压缩视频?

0 投票
3 回答
2571 浏览

java - 调整 JComponent 的大小以进行文件导出

我有一个 JPanel,我使用通常的“paintComponent(Graphics g)”方法在其上绘制了许多自定义编写的 JComponent。我使用一个 JLayeredPane 来控制自定义组件的显示顺序,如下:

现在,我想将此面板导出为 JPEG 文件,但大小不同。当我使用以下代码时,它成功创建/导出了所需大小的 JPEG 文件,但它也将我的面板屏幕图像版本更新为新大小!哎呀!

如何“绘制”适合导出的图像,但实际上不会显示这个新图像?

谢谢!


好吧,我又回到这个问题了......

我正在绘制的场景包含一些文本,现在最终用户希望以“纵向”纵横比导出图形。由于我不是在新的维度上重新绘制场景,而只是缩放图像,这会导致文本被严重水平挤压。

反正围绕那个?

0 投票
4 回答
405 浏览

java - Perl 会成为这种图像处理的瓶颈吗?

我想到的处理是这样的:

  • 有数千个 png 文件
  • 应该加载它们中的每一个,并访问其像素
  • 每个像素的通道都会经过某种处理,然后写入二进制文件

我正在考虑使用某种模块,例如 ImageMagick 包装器,或用于 C 图像处理后端的其他包装器。如果我选择 Perl 来实现这个任务,它会减慢我的速度吗?我已经有一个用 Java 编写的工具(它使用 JDK 的 BufferedImage ),而且速度相当快。如果期望 Perl 能达到同样的速度,我会发疯吗?

0 投票
2 回答
12802 浏览

java - 尽快清除透明的 BufferedImage

我有一个使用以下代码创建的透明 BufferedImage(我认为与它的创建方式无关):

如何在不重新创建图像的情况下以最快的方式清除图像(与其创建状态相同的空图像)?重新创建镜像会给 GC 带来负担,暂停 VM 并冻结 UI。

0 投票
2 回答
1247 浏览

java - Java:通过具有低位深度的 Socket 发送 BufferedImage

标题说得够多了,我想。我有一个完整质量的 BufferedImage,我想通过一个低位深度的 OutputStream 发送它。我不想要一个算法来逐个像素地改变质量,所以它仍然是一个完整的质量。

因此,目标是通过 OuputStream 写入图像(以全分辨率、全尺寸),这需要很少的字节数来写入。

谢谢,
马丁

0 投票
1 回答
2496 浏览

grails - Grails:将 BufferedImage 写入响应

我有带有调整大小方法的 ImageController:

如您所见 - 它在磁盘上写入 BufferedImage 实例(调整大小的图像)。但是我想返回图像作为响应,因此当用户请求调整大小方法时,调整大小的图像将显示在浏览器中(或者他将能够下载它)。这有点像文件服务问题......

使用方法是否正确:

0 投票
3 回答
2185 浏览

java - 16位数据双线性插值的Java错误

我在对 16 位数据使用双线性插值时遇到问题。我有两个图像,origImage 和 displayImage。我想使用 AffineTransformOp 通过 AffineTransform 将 origImage 过滤为 displayImage ,这是显示区域的大小。origImage 的类型为 BufferedImage.TYPE_USHORT_GRAY,并具有 sun.awt.image.ShortInterleavedRaster 类型的栅格。这是我现在拥有的代码

为了显示错误,我创建了 2 个渐变图像。一个具有 15 位范围内的值(最大值为 32767),一个具有 16 位范围内的值(最大值为 65535)。下面是两张图

15 位图像 替代文字

16 位图像 替代文字

这两个图像以相同的方式创建并且看起来应该相同,但请注意横跨 16 位图像中间的线。起初我认为这是一个溢出问题,但奇怪的是它出现在渐变的中心而不是像素值较高的末端。此外,如果这是一个溢出问题,我会怀疑 15 位图像也会受到影响。

对此的任何帮助将不胜感激。

我只是想知道为什么没有人回答,我是否提供了足够的信息?是否需要更多信息?

下面是我用来生成 AffineTransform 的代码。所有引用的变量都是根据用户输入(鼠标移动)计算得出的,并且应该是正确的(包括我自己在内的很多人都对其进行了测试)。希望这可以帮助解决错误。

我仍然不知道这里发生了什么。我真的很感激可以提供的任何帮助。我还附上了我遇到的真实图像中发生的错误示例,以供更多参考。

这是手部 X 光片中发生的错误 替代文字

这是一个放大版本,重点放在拇指和食指之间的区域。 替代文字

再次注意错误不会出现在极白的区域,而是出现在动态范围中间的值上,就像在渐变图像中一样。

我发现了更多信息。我正在调整一些转换,发现如果我只是通过单位矩阵进行过滤,则不会发生该错误。如果我翻译一个整数,它也不会发生。如果我翻译一个非整数量,它确实会发生。如果我缩放 1 以外的任何数量(整数或非整数),也会发生这种情况。希望这会有所帮助。

经过更多的实验,该错误肯定会出现在最大强度一半(65535/2 = 32767.5)之间的边界像素处。它也只发生在这个值上。希望对诊断有帮助!!

应 AlBlue 的要求,这里的代码完全独立于我的可以生成错误的应用程序。请注意,在原始帖子中,我包含了使用以下代码生成的图像渐变,但是我放大了其中一个渐变以更好地显示效果。您应该在 0.5 转换后的图像上看到四次效果,而不是在其他两个图像中的任何一个上。另请注意,在缩放除 1 以外的任何数量时都会出现此错误。只需将 AffineTransform.getTranslateInstance() 替换为 AffineTransform.getScaleInstance(0.9, 0.9) 即可查看该错误。

作为另一个更新,我刚刚在 Fedora 10 上进行了尝试,发现错误仍然存​​在。

0 投票
2 回答
26247 浏览

image - How to convert BufferedImage to image to display on JSP

I would like to convert BufferedImage to an image that will display on JSP page. How can I achieve this?