我在Rails应用程序的DelayedJobs运行后台进程中有一个函数,它接收Base64图像blob,调整大小并裁剪它们,然后保存它们:
image64 = Base64.decode64(screenshot)
image = MiniMagick::Image.read(image64)
image.resize "#{image.width * 0.5}x#{image.height * 0.5}"
image.crop("#{image.width}x250") if ("#{image.height}".to_i > 250)
Base64.encode64(image.to_blob)
然而,添加.crop
调用会阻止此过程在我的生产CentOS Linux服务器上运行,导致.to_blob
调用出现此错误:
Errno::ENOENT: No such file or directory @ rb_sysopen - /tmp/mini_magick20170228-1709-t2rcyo
/path/app/vendor/bundle/ruby/2.4.0/gems/mini_magick-4.6.1/lib/mini_magick/image.rb:175:in `binread'
/path/app/vendor/bundle/ruby/2.4.0/gems/mini_magick-4.6.1/lib/mini_magick/image.rb:175:in `to_blob'
没有裁剪,该功能有效。在前台运行(即rails console
)不会导致问题。
更新ImageMagick,确保/ usr / bin在PATH中并且sim-linked标识不起作用(per this)。
感谢任何帮助。
答案 0 :(得分:1)
Per @mmichael,这question / answer改变了问题。具体来说,改变
var x = 0;
var y = null;
function write5() {
if (x <= 9) {
document.write(5);
x += 1;
}
else {
clearInterval(y);
}
}
function p() {
y = setInterval(write5, 500);
}
到
image.crop("#{image.width}x250")
允许image.crop("#{image.width}x250+0+0")
毫无问题地发生。
如果有人能够解释为什么在后台运行时会发生这种情况的问题,我很乐意接受您的回答。