Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java的GraphicsMagick调整图像大小真的很慢吗?_Java_Image Processing_Image Resizing - Fatal编程技术网

使用Java的GraphicsMagick调整图像大小真的很慢吗?

使用Java的GraphicsMagick调整图像大小真的很慢吗?,java,image-processing,image-resizing,Java,Image Processing,Image Resizing,我需要根据需要调整一些图像的大小(以及锐化和旋转),以创建各种分辨率。我有一台小型开发计算机(Ivy Celeron@2.6GHz)。我的小测试图片采用了6400万像素(分辨率)和400万像素版本的可爱小猫图片,并将这两个版本都缩小到750 x 400(目标尺寸) 一个版本使用JavaIO+,另一个版本使用+ 400万像素版本使用本机JavaIO+scalr拍摄每幅图像270ms,使用GraphicsMagick拍摄每幅图像360ms。 使用JavaIO+scalr调整6400万像素图片的大小需

我需要根据需要调整一些图像的大小(以及锐化和旋转),以创建各种分辨率。我有一台小型开发计算机(Ivy Celeron@2.6GHz)。我的小测试图片采用了6400万像素(分辨率)和400万像素版本的可爱小猫图片,并将这两个版本都缩小到750 x 400(目标尺寸)

一个版本使用JavaIO+,另一个版本使用+

400万像素版本使用本机JavaIO+scalr拍摄每幅图像270ms,使用GraphicsMagick拍摄每幅图像360ms。 使用JavaIO+scalr调整6400万像素图片的大小需要3100毫秒,使用GraphicsMagick调整大小需要4300毫秒

我是不是遗漏了什么。大多数时间都花在打开和读取文件以及保存结果上,但使用GraphicsMagick进行缩放的速度要慢得多。我知道这些都与一些更高级算法的用户有关,但最终两个版本的结果看起来都很好,但我也没想到我的2013年计算机每秒至少处理1000张图像,但每秒只能生成3到0.3张图像

问题是,我做错了什么?你如何调整图像大小?我真的需要一个完整的服务器来每秒处理10张图片吗

**更新**:

做一些数学运算:64M/3秒=20M/s/2.6GHz=10Mio/GHz=1像素/100个时钟周期。因此,它几乎是好的,虽然。对于4M,我们有:3M/.3sec=9M/sec=1pix/200个循环

所以这里有一个更新的问题:是否有一种格式可以牺牲内存以快速加载图像?由于SSD速度较慢(64M*3=192MB,4M*3=12MB),因此加载原始/位图可能需要1秒的时间。但两者之间有什么关系吗?我怀疑使用质量较差的JPeg是否合适,因为它无法加快解压缩速度

可能是一个带有分离颜色通道的压缩位图?(不要笑!:-))。也许是别的什么。拉链有多快


另外一个想法是提供多个分辨率(一次性惩罚),并使用可用的最近分辨率版本。1米的分辨率将是内存中的4米,并将导致每秒12次图片转换(argh)。我本打算看到至少1000/秒的速度,但在过去的10年里,计算机功率的飞跃并没有那么大。我将尝试使用两个或多个工作线程并行启动此任务。让我们看看这是否加倍。

6400万像素的图像相当大。如果任何一台电脑都能将其调整为1K/秒,甚至10/秒,我会感到惊讶


您可以看看这个答案,了解可能更高效的方法()。但是请注意,图像质量和处理时间有一个折衷。

这里似乎没有什么问题。我决定使用ImgScalr库并使用ImageIO。产生最快的结果。此外,我使用的JPEG图像质量为97%,并且经过重新压缩(改变大小后)。64M JPEG的文件大小为5.8MB,加载速度较慢(1.5秒),但在使用默认质量保存后,我在大约0.5秒内加载了1.8MB的文件。这使它更切合实际

该软件现在可以自动缩放大约50张个人资料图片和260个缩略图。这已经足够快了,因为它只在CDN中没有存储结果副本的情况下进行缩放。所以一切又好起来了


我真的很震惊,我以为每秒1k左右,但最终服务器上大约有50个,大约200个(估计值)是可以的。

“我的小测试图片是6400万像素……”对不起,什么?!?你认为一个8000×8000像素的图像是“小”的吗?到底什么是大的?毫无疑问,64M是大的。GM运行一个单独的过程,因此启动/关闭可能会引入一些开销,这些开销可以通过使用gm4java()来消除。1000/s是不可能为您的小电脑与大图像,请参阅我的测试有大服务器和小图像。使用GM,使用大小参数在性能上有很大差异,也考虑规模而不是调整大小。e、 g.gm convert-size 1500x800 source.jpg-scale 750x400 target.jpgKenneth,谢谢您的提示。我将在下周内对此进行调查。谢谢!正如我所说,一张64M的照片需要我的小电脑3秒钟。我知道这是500MB的数据,但想想看