所以我知道RMagick在Image
个对象的所有地方泄漏,#destroy!
释放了那个记忆。
但是,我正在编写一个迭代图像所有像素的脚本,我必须处理这样一个事实,即使RMagick的其他对象,包括Pixel
,也会泄漏。
image = Magick::Image::read('/path/to/image.png')[0]
5.times do
100000.times do
image.pixel_color(0,0)
end
print "Check memory, then press enter";gets
end
运行并观察它在整个地方泄漏。只需读取像素。
如何在不泄漏的情况下迭代这些像素?我对RMagick解决方案,非RMagick解决方案,甚至非Ruby解决方案感兴趣(如果需要)(但我真的而不是)。
如果已经有一个针对此特定任务的工具,我无法找到搜索查询,这就是我正在做的事情:我有两个图像是通过在纯色背景上叠加RGBA图像生成的(在这种情况下,一个黑色和一个白色)。这个脚本做了一些简单的数学运算来检索原始图像,alpha透明度和所有。我找不到一个命令行工具来完成这个确切的工作,但是,再说一次,用一个简短的短语来表达它并不容易。