2010-05-14 184 views
69

我已經在一個小時的較長時間裏試圖弄清楚這裏發生了什麼問題,並且我確信(或者更確切地說)這是我忽視的一些相當明顯的東西。我使用的是Ruby 1.9.1,Sinatra 1.0和RMagick 2.13.1。 ImageMagick和RMagick安裝正確並且功能正常 - 我已經成功處理並保存了來自irb的圖像。爲什麼此RMagick調用會產生分段錯誤?

參數數組的相關部分(格式化爲可讀性起見變化):

{"admin_user_new_image_file"=> 
    { 
     :filename=>"freddie-on-shetland-pony.png", 
     :type=>"image/png", 
     :name=>"admin_user_new_image_file", 
     :tempfile=>#<File:/var/folders/a7/a7pO5jMcGLCww9XBGRvWfE+++TI/-Tmp-/RackMultipart20100514-20700-o2tkqu-0>, 
     :head=>"Content-Disposition: form-data; name=\"admin_user_new_image_file\"; filename=\"freddie-on-shetland-pony.png\"\r\nContent-Type: image/png\r\n" 
    } 
} 

相關的代碼:

post "/admin/user/:account_name/image/new/" do 
    if params[:admin_user_new_image_file][:tempfile] 
    thumbnail = Magick::Image.read("png:"+params[:admin_user_new_image_file][:tempfile].path).first 
    end 
end 

誤差(線229的線開始「 thumbnail =「:

config.ru:229: [BUG] Segmentation fault 
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10.3.0] 

-- control frame ---------- 
c:0042 p:---- s:0196 b:0196 l:000195 d:000195 CFUNC :read 
c:0041 p:0121 s:0192 b:0192 l:001ab8 d:000191 LAMBDA config.ru:229 
c:0040 p:---- s:0189 b:0189 l:000188 d:000188 FINISH 
c:0039 p:---- s:0187 b:0187 l:000186 d:000186 CFUNC :call 
c:0038 p:0018 s:0184 b:0184 l:001d78 d:000183 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:865 
c:0037 p:---- s:0182 b:0182 l:000181 d:000181 FINISH 
c:0036 p:---- s:0180 b:0180 l:000179 d:000179 CFUNC :instance_eval 
c:0035 p:0016 s:0177 b:0175 l:000174 d:000174 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:521 
c:0034 p:0024 s:0171 b:0171 l:000148 d:000170 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:500 
c:0033 p:---- s:0169 b:0169 l:000168 d:000168 FINISH 
c:0032 p:---- s:0167 b:0167 l:000166 d:000166 CFUNC :catch 
c:0031 p:0140 s:0163 b:0163 l:000148 d:000162 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:497 
c:0030 p:---- s:0154 b:0154 l:000153 d:000153 FINISH 
c:0029 p:---- s:0152 b:0152 l:000151 d:000151 CFUNC :each 
c:0028 p:0073 s:0149 b:0149 l:000148 d:000148 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:476 
c:0027 p:0076 s:0141 b:0141 l:000140 d:000140 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:601 
c:0026 p:0009 s:0137 b:0137 l:000138 d:000136 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411 
c:0025 p:---- s:0135 b:0135 l:000134 d:000134 FINISH 
c:0024 p:---- s:0133 b:0133 l:000132 d:000132 CFUNC :instance_eval 
c:0023 p:0012 s:0130 b:0130 l:000121 d:000129 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566 
c:0022 p:---- s:0128 b:0128 l:000127 d:000127 FINISH 
c:0021 p:---- s:0126 b:0126 l:000125 d:000125 CFUNC :catch 
c:0020 p:0013 s:0122 b:0122 l:000121 d:000121 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566 
c:0019 p:0098 s:0115 b:0115 l:000138 d:000138 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411 
c:0018 p:0019 s:0108 b:0108 l:000107 d:000107 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:399 
c:0017 p:0014 s:0104 b:0104 l:000103 d:000103 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24 
c:0016 p:0150 s:0098 b:0098 l:000097 d:000097 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/methodoverride.rb:24 
c:0015 p:0031 s:0092 b:0092 l:000091 d:000091 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18 
c:0014 p:0018 s:0084 b:0084 l:002080 d:000083 BLOCK /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979 
c:0013 p:0032 s:0082 b:0082 l:000081 d:000081 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:1005 
c:0012 p:0011 s:0078 b:0078 l:002080 d:002080 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979 
c:0011 p:0100 s:0074 b:0074 l:000ff0 d:000ff0 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:47 
c:0010 p:0022 s:0068 b:0068 l:000067 d:000067 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:35 
c:0009 p:0014 s:0064 b:0064 l:000063 d:000063 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24 
c:0008 p:0031 s:0058 b:0058 l:000057 d:000057 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18 
c:0007 p:0014 s:0050 b:0050 l:000049 d:000049 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/content_length.rb:13 
c:0006 p:0320 s:0042 b:0042 l:000041 d:000041 METHOD /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/handler/webrick.rb:48 
c:0005 p:0256 s:0030 b:0030 l:000029 d:000029 METHOD /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111 
c:0004 p:0382 s:0020 b:0020 l:000019 d:000019 METHOD /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70 
c:0003 p:s:0009 b:0009 l:000bc8 d:000008 BLOCK /usr/local/lib/ruby/1.9.1/webrick/server.rb:183 
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH 
c:0001 p:---- s:0002 b:0002 l:000001 d:000001 TOP 
--------------------------- 
-- Ruby level backtrace information----------------------------------------- 
config.ru:229:in `read' 
config.ru:229:in `block (2 levels) in <main>' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:865:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:865:in `block in route' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:521:in `instance_eval' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:521:in `route_eval' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:500:in `block (2 levels) in route!' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:497:in `catch' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:497:in `block in route!' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:476:in `each' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:476:in `route!' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:601:in `dispatch!' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411:in `block in call!' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `instance_eval' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `block in invoke' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `catch' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:566:in `invoke' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:411:in `call!' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:399:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/methodoverride.rb:24:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979:in `block in call' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:1005:in `synchronize' 
/usr/local/lib/ruby/gems/1.9.1/gems/sinatra-1.0/lib/sinatra/base.rb:979:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:47:in `_call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb:35:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb:24:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb:18:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/content_length.rb:13:in `call' 
/usr/local/lib/ruby/gems/1.9.1/gems/rack-1.1.0/lib/rack/handler/webrick.rb:48:in `service' 
/usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
/usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
/usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 

-- C level backtrace information ------------------------------------------- 
0x10010cd8d 0 libruby.dylib      0x000000010010cd8d rb_vm_bugreport + 77 
0x10002b184 1 libruby.dylib      0x000000010002b184 report_bug + 260 
0x10002b318 2 libruby.dylib      0x000000010002b318 rb_bug + 200 
0x1000b7124 3 libruby.dylib      0x00000001000b7124 sigsegv + 132 
0x7fff8301c80a 4 libSystem.B.dylib     0x00007fff8301c80a _sigtramp + 26 
0x1032313ac 5 libMagickCore.3.dylib    0x00000001032313ac Splay + 300 
0x103119245 6 libMagickCore.3.dylib    0x0000000103119245 AcquirePixelCache + 325 
0x1031cb317 7 libMagickCore.3.dylib    0x00000001031cb317 AcquireImage + 375 
0x10333035b 8 libMagickCore.3.dylib    0x000000010333035b ReadPNGImage + 155 
0x1031418fd 9 libMagickCore.3.dylib    0x00000001031418fd ReadImage + 2221 
0x101f1b72b 10 RMagick2.bundle      0x0000000101f1b72b rd_image + 339 
0x101f1b59b 11 RMagick2.bundle      0x0000000101f1b59b Image_read + 36 
0x1000fd0e4 12 libruby.dylib      0x00000001000fd0e4 vm_call_cfunc + 340 
0x1000fe9b0 13 libruby.dylib      0x00000001000fe9b0 vm_call_method + 896 
0x1000ff8fc 14 libruby.dylib      0x00000001000ff8fc vm_exec_core + 3180 
0x100104b93 15 libruby.dylib      0x0000000100104b93 vm_exec + 1203 
0x100106643 16 libruby.dylib      0x0000000100106643 rb_vm_invoke_proc + 691 
0x100106ccd 17 libruby.dylib      0x0000000100106ccd vm_call0 + 1085 
0x1000317c6 18 libruby.dylib      0x00000001000317c6 rb_method_call + 406 
0x1000fd0e4 19 libruby.dylib      0x00000001000fd0e4 vm_call_cfunc + 340 
0x1000fe9b0 20 libruby.dylib      0x00000001000fe9b0 vm_call_method + 896 
0x1000ff8fc 21 libruby.dylib      0x00000001000ff8fc vm_exec_core + 3180 
0x100104b93 22 libruby.dylib      0x0000000100104b93 vm_exec + 1203 
0x100105ce6 23 libruby.dylib      0x0000000100105ce6 yield_under + 710 
0x100106188 24 libruby.dylib      0x0000000100106188 specific_eval + 72 
0x1000fd0e4 25 libruby.dylib      0x00000001000fd0e4 vm_call_cfunc + 340 
0x1000fe9b0 26 libruby.dylib      0x00000001000fe9b0 vm_call_method + 896 
0x1000ff8fc 27 libruby.dylib      0x00000001000ff8fc vm_exec_core + 3180 
0x100104b93 28 libruby.dylib      0x0000000100104b93 vm_exec + 1203 
0x10010b6bf 29 libruby.dylib      0x000000010010b6bf rb_f_catch + 639 
0x1000fd0e4 30 libruby.dylib      0x00000001000fd0e4 vm_call_cfunc + 340 
0x1000fe9b0 31 libruby.dylib      0x00000001000fe9b0 vm_call_method + 896 
0x1000ff8fc 32 libruby.dylib      0x00000001000ff8fc vm_exec_core + 3180 
0x100104b93 33 libruby.dylib      0x0000000100104b93 vm_exec + 1203 
0x10010aac9 34 libruby.dylib      0x000000010010aac9 rb_yield + 505 
0x100007902 35 libruby.dylib      0x0000000100007902 rb_ary_each + 82 
0x1000fd0e4 36 libruby.dylib      0x00000001000fd0e4 vm_call_cfunc + 340 
0x1000fe9b0 37 libruby.dylib      0x00000001000fe9b0 vm_call_method + 896 
0x1000ff8fc 38 libruby.dylib      0x00000001000ff8fc vm_exec_core + 3180 
0x100104b93 39 libruby.dylib      0x0000000100104b93 vm_exec + 1203 
0x100105ce6 40 libruby.dylib      0x0000000100105ce6 yield_under + 710 
0x100106188 41 libruby.dylib      0x0000000100106188 specific_eval + 72 
0x1000fd0e4 42 libruby.dylib      0x00000001000fd0e4 vm_call_cfunc + 340 
0x1000fe9b0 43 libruby.dylib      0x00000001000fe9b0 vm_call_method + 896 
0x1000ff8fc 44 libruby.dylib      0x00000001000ff8fc vm_exec_core + 3180 
0x100104b93 45 libruby.dylib      0x0000000100104b93 vm_exec + 1203 
0x10010b6bf 46 libruby.dylib      0x000000010010b6bf rb_f_catch + 639 
0x1000fd0e4 47 libruby.dylib      0x00000001000fd0e4 vm_call_cfunc + 340 
0x1000fe9b0 48 libruby.dylib      0x00000001000fe9b0 vm_call_method + 896 
0x1000ff8fc 49 libruby.dylib      0x00000001000ff8fc vm_exec_core + 3180 
0x100104b93 50 libruby.dylib      0x0000000100104b93 vm_exec + 1203 
0x100106643 51 libruby.dylib      0x0000000100106643 rb_vm_invoke_proc + 691 
0x100111803 52 libruby.dylib      0x0000000100111803 thread_start_func_2 + 835 
0x100111921 53 libruby.dylib      0x0000000100111921 thread_start_func_1 + 17 
0x7fff82ff58b6 54 libSystem.B.dylib     0x00007fff82ff58b6 _pthread_start + 331 
0x7fff82ff5769 55 libSystem.B.dylib     0x00007fff82ff5769 thread_start + 13 

[NOTE] 
You may encounter a bug of Ruby interpreter. Bug reports are welcome. 
For details: http://www.ruby-lang.org/bugreport.html 

Abort trap 

任何人有任何想法發生了什麼事?謝謝!

+1

我可以證實這一點也發生在1.9.2-rc1和rc2上。 – 2010-07-16 07:27:14

+0

我可能會感到困惑,但我有點驚訝它的作品。 #號不會導致「tempfile:」行的其餘部分成爲註釋嗎?它看起來像你沒有分配任何臨時值。 Ruby 1.8和1.9可能以不同方式處理「#<...>」組合嗎? – AaronM 2010-05-15 23:27:51

+0

問題中的第一個代碼片段可能僅僅是'logger.debug'的結果,在這種情況下'#'的語法只是描述':tempfile'鍵的值是'File'的一個實例。這樣想:如果這是一個真正的評論,那麼描述的散列將是一個語法錯誤:) – rfunduk 2010-12-10 13:34:15

回答

1

更新:這本身並不是一個真正的答案(我仍然在MRI 1.9.1中看到同樣的問題),但是我使用RVM來獲得我的MRI 1.8.7安裝和寶石的最新信息,嘗試運行它,並且一切都很完美。我認爲問題在於RMagick還不完全兼容1.9.1,儘管文檔特別提到了Ruby 1.9的支持。

3

該崩潰可能是由於在OSX MacPorts下的線程上訪問ImageMagick。 見post

+1

我有這個相同的問題與1.9.1,1.9.2-rc1和1.9.2-rc2 - 我使用自制軟件所以我所做的只是編輯brew文件並刪除添加'--disable-openmp'(我的系統中的第58行)的條件,然後安裝,並將其固定! – 2010-07-16 07:26:36

92

要擴大馬修野人的評論,這樣做:

brew install imagemagick --disable-openmp 

,並再次開始工作。無需編輯文件。 (我不知道如果多數民衆贊成什麼他實際上是在說,或者如果他的說法刪除的標誌,但上述自制命令適用於我的OSX 10.6)

如果您已經安裝的ImageMagick然後

brew uninstall imagemagick && brew install imagemagick --disable-openmp 

brew upgrade -f不再重新安裝,所以你必須先卸載它。)

+0

Ash柏林,你救了我最大的頭痛...... – 2010-10-15 07:51:22

+1

brew安裝-f imagemagick --disable-openmp沒有爲我工作。我在osx上(達爾文內核版本10.6.0)。我試圖刪除imagemagick並重新安裝,它不適合我。另一種方法是使用mini_magick gem而不是rmagick,如https://github.com/jnicklas/carrierwave/issues/185 – thekindofme 2011-03-15 09:08:24

+0

中所述。非常感謝那個提示。有沒有爲這個自制軟件或imagemagick的錯誤? – 2011-08-15 15:49:12

30

對於那些使用MacPorts,ImageMagick 6.6.5和Ruby 1.9.2。

  1. port uninstall ImageMagick
  2. port edit ImageMagick
  3. 添加--disable-openmpconfigure.args(近線100)
  4. port install ImageMagick
  5. 刪除,然後重新安裝rmagick

爲我工作:)

+2

同樣的情況,在這裏。你的解決方案工作 – 2011-10-02 05:36:21

+0

我不明白在這個答案中的第3步。後我做了sudo端口編輯ImageMagick,它只是給了我一些ImageMagick的基本信息,如許可證,版本等,你可以詳細說明一下。謝謝。 – Leahcim 2012-02-26 17:24:25

+0

嘿@Michael,我的系統上沒有MacPorts(已經切換到Homebrew),所以我無法一步步地幫你解決問題。端口編輯應該打開Portfile,你應該在第100行附近找到提到的變量,然後你可以插入--disable-openmp。其他人能幫助邁克爾更詳細的步驟3嗎? – captainpete 2012-02-27 11:40:47

0

我試過CaptainPete的MacPorts解決方案。它建立了6.6.6-0,仍然有同樣的問題。切換到釀造做構建做了訣竅。請注意,brew建立了6.6.4-5。在6.6.6中可能有多個錯誤或一個新的錯誤會導致類似的問題發生。

5

我有一個類似的問題,使用軌道3載波在OS X 10.6和紅寶石1.9.2,也崩潰在每次調用時讀取需要調整大小的圖像。做:

brew uninstall imagemagick 
brew install imagemagick --disable-openmp 

爲我解決了這個問題。

2

不是一個答案,只是我的經驗:

我以我個人的項目之一無意中發現了這個問題。我在使用ruby-1.9.2-p0和ruby-1.9.2-p136的os x(雪豹)上遇到了這個問題。

對我來說特別令人困惑的是,我可以通過rails控制檯使用rmagick讀取圖像。但是當我從我的導軌應用程序中找到完全相同的行時,它會按照上面所述的相同方式打開。

如上所述通過自制軟件重建imagemagick對我來說還不夠。我也必須刪除rmagick gem並通過捆綁來重建它。

33

我在運行Ruby 1.9.2p180的OS X 10.6.7上遇到了非常類似的問題。

若要擴展Ash Berlin的評論,如果您使用的是自制軟件包管理器,則需要先卸載imagemagick軟件包,同時還要刪除緩存,然後才能正常工作。

卸載的ImageMagick:

brew remove imagemagick 

刪除緩存:

rm -rf `brew --cache imagemagick` 

然後使用該標誌重新安裝軟件包:

brew install -f imagemagick --disable-openmp 
+1

完全相同的問題,但在Mac OS 10.7,遵循這些步驟,它解決了這個問題。我還移除並重建了Rmagick寶石,以便採取更好的措施。 – Andrew 2011-07-29 19:46:26

+0

這意味着作爲默認答案。 – jackyalcine 2012-07-20 01:52:14

0

以上答案都不固定是我的案件。

經過進一步調查,我發現我打電話給.resample在一張0.02dpi的圖片上(我從第三方API中提取圖片,所以我不知道)。在分段錯誤出現後,這甚至會提示「磁盤幾乎已滿」警報消息。

0

我通過移動霧寶石下面的gemfile中的'gem'pg''行解決了同樣的錯誤(經過多次試驗),這與我認爲的加載依賴關係有關。

2

如果您已經安裝了BREW ImageMagick的,使用此:

brew upgrade -f imagemagick --disable-openmp 
1

在Linux中升級的ImageMagick後看到了同樣的問題。這裏還有一些筆記。我懷疑ImageMagick的庫和鏈接紅寶石寶石(這與以前所有的意見一致的一些不匹配看看這個類似的線程RubyForge上http://rubyforge.org/forum/forum.php?thread_id=48036&forum_id=33

我的解決辦法傾倒RMagick贊成MojoMagick的 - 。一個很瘦的紅寶石API沒有鏈接到ImageMagick庫,只是使用控制檯二進制文件。

它在這裏可用:www.misuse。組織/科學/ 2008/01/30/mojomagick-紅寶石圖像庫換ImageMagick的/

我已經建立了一個寶石,並加入調整大小以填補作物功能,它可在github https://github.com/bunnymatic/mojo_magick

相關問題