我正在将一些较大的图像从多图像(金字塔) tif转换为png格式。来自"identity -verbose“的报告中最重要的部分是最大的图片:
Image:
Format: TIFF (Tagged Image File Format)
Class: DirectClass
Geometry: 72224x64080+0+0
Resolution: 72x72
Print size: 1003.11x890
Units: PixelsPerInch
Type: TrueColor
Base type: TrueColor
Endianess: MSB
Colorspace: RGB
Depth: 8-bit
Channel depth:
red: 8-bit
green: 8-bit
blue: 8-bit
...
Page geometry: 72224x64080+0+0
...
Scene: 2 of 12
Compression: JPEG
Orientation: TopLeft
Properties:
...
Filesize: 1.389GBB
Number pixels: 4.6281GB
Pixels per second: 5.516MB
User time: 218.277u
Elapsed time: 13:60.020
Version: ImageMagick 6.7.1-0 2011-07-06 Q16 http://www.imagemagick.org我打算使用deepzoom composer来生成Silverlight多尺度图像控件的输入。我的问题是,当我使用ImageMagick处理这些图像时,如何让我的系统瘫痪-转换它们的时间太长了。我看了几篇文章,但似乎什么也没读到。
一些系统和其他相关信息:
OS: Windows 7 64 bit.
CPU: Intel Core2 Duo E7300 @ 2.66, 2.67
RAM: 4.0 GB
PAGEFILE: 8-12GB on non-OS disk
"MAGICK_TMPDIR": Yet another empty, non-os disk with 140GB available.下面是“识别-list资源”的结果:
File Area Memory Map Disk Thread
------------------------------------------------------------------
1536 4.1582GB 15.491GiB 30.981GiB unlimited 2我正在运行这个命令来提取上面提到的图像:
convert "myFN.tif[2]" -limit file 8192GB -limit thread 32 "myFN%d.png"添加两个限制值似乎不会有什么不同。当我运行此命令时,平均CPU利用率约为10%,页面文件提交大小为3BG。我几乎看不出它正在运行。
Q1)我还可以做些什么来让ImageMagick使用更多的系统资源?我发现的大多数“大图像”链接都在问相反的问题。
Q2)更改位于以下位置的"policy.xml“值(如文件):C:\Program Files\ImageMagick-6.7.1-Q16\www\source似乎不会影响任何内容-更改不会显示在下一个”标识-list资源“中。这有什么窍门吗?
Q3)对这项任务还有其他提示或想法吗?
谢谢,大卫
发布于 2017-02-07 16:58:45
libvips可以将金字塔tiff直接转换为深缩金字塔。它是免费的,速度非常快,不需要太多内存。
例如,我看到:
$ vipsheader vips-pyr.tif
vips-pyr.tif: 18008x22764 uchar, 3 bands, srgb, tiffload
$ time vips dzsave vips-pyr.tif x.zip
real 0m9.763s
user 0m19.700s
sys 0m4.644s
peak memory: 180mb在一台小型笔记本电脑上,这是一个20,000 x 20,000金字塔形的争执,转换成深度放大只需不到10秒。它正在编写一个包含金字塔的zip文件,因此您可以立即上传到服务器。内存使用与图像宽度成比例,所以它可以处理非常大的图像-我经常处理250,000 x 250,000像素的幻灯片。
发布于 2011-08-04 03:21:56
对于您的(我的)图像,限制因素是像素缓存的大小,它受设置"MAGICK_AREA_LIMIT".的限制默认的4 4GB对于72224 x 64080来说不够大--这至少需要4.4 4GB的设置--试试“MAGICK_AREA_LIMIT=8GB”。
如果您想控制ImageMagick对系统内存和系统页文件的影响,那么可以使用"MAGICK_MEMORY_LIMIT.“来限制这种影响实际上,这里不需要使用很大的限制,因为像素缓存的后备位置是映射内存文件,它们的效率与系统页文件的效率相同。尝试"MAGICK_MEMORY_LIMIT=2GB",以保持像素缓存在那里(这并不是说它无论如何都会去那里-它比12 go大得多)。
您希望将像素缓存放到映射内存中,因此可以尝试使用"MAGICK_MAP_LIMIT=100GB“来利用您拥有的空间。内存映射文件最终将不在系统临时目录中,而是在"MAGICK_TMPDIR".指定的目录中
另外,您还可以尝试使用Q8版本,因为您不需要16位颜色通道。对于该版本,您可以预期大约一半的磁盘io。
祝好运!大卫
发布于 2011-08-04 04:25:50
与Q16版本相比,Q8版本使用一半的磁盘空间和时间来完成转换!此外,如果您最终要将图像拆分为平铺,可以使用以下命令在单个步骤中完成此操作:
convert.exe" "WRL_15_1A.tif[2]" -crop 14409x15396 +repage -scene 0 "temp\WRL_15_1A%d.tif"
+
https://stackoverflow.com/questions/6835363
复制相似问题