Java - 我需要一个非常快的图像缩放算法

11

我正在开发一个Midlet应用程序。我经常需要缩放图像,但这已经成为一个问题,因为有些手机速度比较慢,缩放操作太耗时间。

目前我是使用Image.createRGBImage(int, int, int, boolean) 来缩放图像。

我想知道是否有非常高效快速的方法来缩放图像。

注意: 这是一个Midlet应用程序,只有JavaME可用,也就是说我无法使用全版本Java中的某些库。

注意2: 大多数情况下我是从小图像缩放到大图像,虽然我也会缩小图像。


1
你在谈论什么尺寸?百分比变化是任意的还是简单的倍数(如2倍)? - Lou Franco
优化的一种方法是使用mipmapping:http://www.3drender.com/glossary/mipmapping.htm - appas
比例大小是任意的。假设我的图像是100像素乘以65像素。我需要将其缩放到任何我想要的大小。比如说200像素乘以500像素,或者1200像素乘以10像素。因此,它需要垂直或水平地缩放,或者两者的任意组合。 - user445338
@Tony,你可以使用哪些库,或者必须自己编写? - mevatron
1个回答

35

需要注意的是,在讨论缩放算法时,速度和图像质量之间总存在一个权衡。对于您的情况,最理想的解决方案可能需要一些研究和测试。

最近邻插值是图像缩放的最简单和最快速的实现方式。

Coding Horror上有一个很好的关于图像缩放 / 调整大小的介绍,回顾了几种技术并比较了它们的质量。

我想象您正在使用非常小的显示设备,因此图像质量最终并不重要。有些人称这个是针对J2ME最快速的图像缩放实现。

但是,如果您愿意阅读其他内容,这篇文章提供了一种低成本(意味着“非常快速”)的缩放算法,它在最近邻插值的基础上显著改进了图像质量。源代码可用,并且他们还在这里介绍了该研究的演化。

最后但并非最不重要的是,来自OpenCV(用于图像处理的开源/跨平台库)的cvResize()函数。Willow garage的人在快速制作图像/视频处理程序方面非常擅长,而此函数提供了几种缩放技术,因此检查其实现可能是值得的。


1
谢谢。我目前正在使用您在链接中描述的技术:“有些人称这是J2ME最快的图像缩放实现。”我将查看其他技术并进行一些测试,看看是否可以获得更快的缩放效果。对于您出色的答案,点赞。分数归您。谢谢Karl。 - user445338

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接