裁剪的ImageMagick图像上出现“没有此类文件或目录”错误

时间:2017-03-07 16:44:57

标签: ruby-on-rails imagemagick centos7

我在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)。

感谢任何帮助。

1 个答案:

答案 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") 毫无问题地发生。

如果有人能够解释为什么在后台运行时会发生这种情况的问题,我很乐意接受您的回答。