命令行图像 converter\resizer
Command-line image converter\resizer
我正在寻找命令行图像 converter/resizer。
我需要做的是将位图和 tiff 文件转换为 png 文件以及创建缩略图。图片比较大。最大的约为 13,000 x 10,000 像素,约 200mb。
我试过 ImageMagick。它使用了太多内存,速度太慢,并且在不使用磁盘缓存的情况下无法处理最大的文件,这使得它慢得无法忍受。
目前我正在使用 GraphicsMagick,它占用更少的内存并且可以处理更大的文件,但它仍然有点慢。每张图片大约 15 秒。
还有其他程序可以提供更好的性能吗?
你可以试试libvips. It's a streaming image processing library, so it's able to read the input, process, and write the output as a single pipeline, with no separate loading phase and no temporary files. It's got a fancy threaded IO system too, so performance is good and memory use is low.
我在这台机器上计时(imac with ImageMagick 6.9.6-3 Q16,gm 1.3.25,vips 8.4.2):
$ vips black test.tif 13000 10000 --bands 3
$ ls -l test.tif
-rw-r--r-- 1 john staff 390000854 22 Nov 09:43 test.tif
这是 13000 x 10000 3 波段、8 位未压缩 TIFF。用vip自带的缩图器vipsthumbnail,我看到:
$ /usr/bin/time -l vipsthumbnail test.tif -s 128x128 -o small.png
0.54 real 0.42 user 0.11 sys
77635584 maximum resident set size
我 运行 三次并选择了最快的,所以这应该只是 vipsthumbnail
的测试而不是我的磁盘系统。这是 0.54 秒的实时时间,77MB 的峰值内存。
有了convert
我明白了:
$ /usr/bin/time -l convert test.tif -resize 128x128 small.png
4.87 real 4.28 user 0.55 sys
1432182784 maximum resident set size
再次,三个运行中最快的,4.87s 实时,1.4gb 内存。 GraphicsMagick 快一点,我看到了:
$ /usr/bin/time -l gm convert test.tif -resize 128x128 small.png
3.95 real 3.41 user 0.51 sys
1264369664 maximum resident set size
所以 3.95s 真实,1.2gb 峰值内存。
所以在这个测试中,libvips 比 graphicsmagick 快 7 倍,使用的内存少 15 倍。
libvips 是大多数 linux 的标准部分,在 homebrew 和 macports 中,vips 网站上有 64 位 windows 二进制文件。
有很多图像处理软件可以将您选择的任何格式转换为您想要的输出格式,只需下载这个漂亮的软件即可
- 可以处理所有(视频、图像、音频)和
- 您无需编写任何命令,其图形界面将为您提供所需的一切
- 它以很少或更少的内存运行。
- 您可以根据需要转换尽可能多的图像,并在做其他事情的同时关注您的进度。
查看本软件官方linkhttp://www.pcfreetime.com/
使用 ImageMagick 或 GraphicsMagick,您可以通过使用较低的“-quality”来加速 PNG 编码,而不是接受默认的 quality==75。这将以压缩性能(文件大小)换取速度。尝试 -quality 40
艺术线条,或 -quality 41
照片。以下是我相机的 JPEG 的一些结果,使用由 libpng-1.2.54 构建的 ImageMagick-7.0.3-8:
glenn.rp> time magick D*88.JPG d88-q75.png
real 0m13.494s user 0m11.252s sys 0m2.060s
glenn.rp> time magick -quality 41 D*88.JPG d88-q41.png
real 0m7.377s user 0m4.728s sys 0m1.908s
glenn.rp> time magick -quality 40 D*88.JPG d88-q40.png
real 0m3.842s user 0m3.200s sys 0m0.584s
glenn.rp> ls -lt d88*
-rw-rw-r-- 1 glennrp glennrp 24352041 Nov 29 15:45 d88-q40.png
-rw-rw-r-- 1 glennrp glennrp 17072518 Nov 29 15:45 d88-q41.png
-rw-rw-r-- 1 glennrp glennrp 15788794 Nov 29 15:44 d88-q75.png
我正在寻找命令行图像 converter/resizer。
我需要做的是将位图和 tiff 文件转换为 png 文件以及创建缩略图。图片比较大。最大的约为 13,000 x 10,000 像素,约 200mb。
我试过 ImageMagick。它使用了太多内存,速度太慢,并且在不使用磁盘缓存的情况下无法处理最大的文件,这使得它慢得无法忍受。
目前我正在使用 GraphicsMagick,它占用更少的内存并且可以处理更大的文件,但它仍然有点慢。每张图片大约 15 秒。
还有其他程序可以提供更好的性能吗?
你可以试试libvips. It's a streaming image processing library, so it's able to read the input, process, and write the output as a single pipeline, with no separate loading phase and no temporary files. It's got a fancy threaded IO system too, so performance is good and memory use is low.
我在这台机器上计时(imac with ImageMagick 6.9.6-3 Q16,gm 1.3.25,vips 8.4.2):
$ vips black test.tif 13000 10000 --bands 3
$ ls -l test.tif
-rw-r--r-- 1 john staff 390000854 22 Nov 09:43 test.tif
这是 13000 x 10000 3 波段、8 位未压缩 TIFF。用vip自带的缩图器vipsthumbnail,我看到:
$ /usr/bin/time -l vipsthumbnail test.tif -s 128x128 -o small.png
0.54 real 0.42 user 0.11 sys
77635584 maximum resident set size
我 运行 三次并选择了最快的,所以这应该只是 vipsthumbnail
的测试而不是我的磁盘系统。这是 0.54 秒的实时时间,77MB 的峰值内存。
有了convert
我明白了:
$ /usr/bin/time -l convert test.tif -resize 128x128 small.png
4.87 real 4.28 user 0.55 sys
1432182784 maximum resident set size
再次,三个运行中最快的,4.87s 实时,1.4gb 内存。 GraphicsMagick 快一点,我看到了:
$ /usr/bin/time -l gm convert test.tif -resize 128x128 small.png
3.95 real 3.41 user 0.51 sys
1264369664 maximum resident set size
所以 3.95s 真实,1.2gb 峰值内存。
所以在这个测试中,libvips 比 graphicsmagick 快 7 倍,使用的内存少 15 倍。
libvips 是大多数 linux 的标准部分,在 homebrew 和 macports 中,vips 网站上有 64 位 windows 二进制文件。
有很多图像处理软件可以将您选择的任何格式转换为您想要的输出格式,只需下载这个漂亮的软件即可
- 可以处理所有(视频、图像、音频)和
- 您无需编写任何命令,其图形界面将为您提供所需的一切
- 它以很少或更少的内存运行。
- 您可以根据需要转换尽可能多的图像,并在做其他事情的同时关注您的进度。
查看本软件官方linkhttp://www.pcfreetime.com/
使用 ImageMagick 或 GraphicsMagick,您可以通过使用较低的“-quality”来加速 PNG 编码,而不是接受默认的 quality==75。这将以压缩性能(文件大小)换取速度。尝试 -quality 40
艺术线条,或 -quality 41
照片。以下是我相机的 JPEG 的一些结果,使用由 libpng-1.2.54 构建的 ImageMagick-7.0.3-8:
glenn.rp> time magick D*88.JPG d88-q75.png
real 0m13.494s user 0m11.252s sys 0m2.060s
glenn.rp> time magick -quality 41 D*88.JPG d88-q41.png
real 0m7.377s user 0m4.728s sys 0m1.908s
glenn.rp> time magick -quality 40 D*88.JPG d88-q40.png
real 0m3.842s user 0m3.200s sys 0m0.584s
glenn.rp> ls -lt d88*
-rw-rw-r-- 1 glennrp glennrp 24352041 Nov 29 15:45 d88-q40.png
-rw-rw-r-- 1 glennrp glennrp 17072518 Nov 29 15:45 d88-q41.png
-rw-rw-r-- 1 glennrp glennrp 15788794 Nov 29 15:44 d88-q75.png