我需要根据需要调整一些图像的大小(以及锐化和旋转),以创建不同的分辨率。我有一台小型开发计算机(Ivy Celeron @ 2.6GHz)。我的小测试图片采取了6400万像素(分辨率)和4兆像素版本的可爱小猫图片,并将这两个版本减少到750 x 400 (目标尺寸)。
一个版本使用JavaIO + ImgScalr,另一个版本使用图形Magick + im4java。
400万像素版本使用原生JavaIO + scalr的每张图片需要270 and,使用GraphicsMagick时需要360 and。一张6400万像素的图片需要3100毫秒才能使用JavaIO + scalr来调整大小,而使用GraphicsMagick则需要4300 64。
我是不是漏掉了什么。大部分时间用于打开和读取文件并保存结果,但使用GraphicsMagick也要慢得多。我知道这与一些更先进的算法的用户有关,但最终,这两个版本的结果看起来都很好,但我也没有想过我的2013年的计算机不能每秒处理至少1000张图像,但每秒只能处理3到3张.3图片。
所以问题是,我做错了什么?调整图像大小的标准是什么?我真的需要一台完整的服务器来处理一秒钟10张图片吗?
**最新情况**
算一算: 64M /3秒= 20M/sec / 2.6GHz =10 100/GHz=1像素/100时钟周期。因此,接缝几乎没有问题。对于4M,我们有: 3M /.3sec = 9M/sec =1 1pix/200周期。
因此,这里有一个更新的问题:是否有一种格式可以使内存神圣起来,以便快速加载图像?最好的是原始/位图,因为SSD是慢的(64M*3 =192 is,4M*3=12MB),可能需要1秒的时间。但两者之间有什么关系吗?我怀疑使用质量较差的JPeg是否会成为交易,因为它不会加快减压速度。
也许是有分隔颜色通道的拉链位图?(不要笑!)也许还有其他的。ZIP有多快?
此外,一个想法是提供几个决议(一次惩罚),并使用最近的决议版本可用。1米分辨率的内存为4米,每秒可转换12张图片(argh)。我准备好至少看到1000秒,但在过去10年里,计算机电源接缝的飞跃并不是那么大。我将尝试使用两个或多个工作线程并行启动。让我们看看这个会不会加倍。
发布于 2013-10-05 22:11:01
看来这里没什么不对劲的。我使用了ImgScalr库并使用了ImageIO。产生最快的结果。另外,我使用的jpeg质量为97%,并重新压缩(在改变大小后)。64 after的文件大小为5.8MB,加载速度较慢(1.5秒),但在保存了默认质量后,我得到了一个1.8MB的文件加载时间约为0.5秒。这使它更实际。
该软件现在可以自动标出大约50张侧写图片和260张缩略图。这是足够快的,因为只有在CDN中没有存储结果副本的情况下,它才能进行缩放。所以一切都好起来了。
我真的很震惊,我想到了1k每秒,但最终有大约50和服务器上大约200 (估计)是可以的。
发布于 2013-10-05 14:06:43
六千四百万像素图像是相当大的。如果任何一台PC能够调整1K /秒的大小,甚至是10 /秒,我会感到惊讶。
您可以看看这个答案,寻找可能更有表现力的方法(https://stackoverflow.com/a/8365035/234901)。但是请注意,图像质量和处理时间是有权衡的。
https://stackoverflow.com/questions/19198396
复制相似问题