2013-10-24 67 views
3

我想要做的是在我的網站上的表單中捕獲用戶的簽名。目前,我已經成功添加了signature-pad jQuery plugin到我的形式,我看到畫布簽名的JSON從網頁發送到我的服務器:將Signature-Pad的JSON轉換爲Paperclip圖像時遇到問題(Ruby on Rails)

Started PUT "/participant_user_reg_forms/2" for 127.0.0.1 at 2013-10-23 19:06:59    -0500 
Processing by ParticipantUserRegFormsController#update as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"CLNbopTBxiLI7WIRNanL9KOtGpAy1 
iLjxFGy00nP750=", "participant_user_reg_form"=>{"firm_name"=>"", "user_name"=>"", 
"address"=>"", "city"=>"", "state"=>"", "country"=>"", "zip_code"=>"", "email" 
=>"", "phone"=>"", "fax"=>"", "question_1"=>"4", "answer_1"=>"", "question_2"=>" 
5", "answer_2"=>"", "date_of_birth"=>"", "ssn"=>""}, "output"=>"[{\"lx\":69,\"ly 
\":13,\"mx\":69,\"my\":12},{\"lx\":68,\"ly\":12,\"mx\":69,\"my\":13},{\"lx\":67, 
\"ly\":12,\"mx\":68,\"my\":12},{\"lx\":66,\"ly\":12,\"mx\":67,\"my\":12},{\"lx\" 
:65,\"ly\":12,\"mx\":66,\"my\":12}, ... ETC ... 

在我的控制器,我捕捉到「輸出」參數,並試圖形式將其解析爲一個圖像,如下所示:

if !params[:output].nil? 
    @participant_user_reg_form.signature = addSignature(params[:output]) 
end 
... 
def addSignature(data) 
    require 'open3' 
    instructions = JSON.parse(data).map { |h| "line #{h['mx'].to_i},#{h['my'].to_i} #{h['lx'].to_i},#{h['ly'].to_i}" } * ' ' 
    tempfile = Tempfile.new(["signature", '.png']) 
    Open3.popen3("convert -size 298x55 xc:transparent -stroke blue -draw @- #{tempfile.path}") do |input, output, error| 
     input.puts instructions 
    end 
    return tempfile 
end 

我得到的代碼此塊用於從here,這是推薦的上下紅寶石簽名-PacI位點在軌道上的服務器側轉換轉換JSON到的圖像。

問題是,當我去看看保存的簽名時(在默認的paperclip目錄中 - :rails_root/public/system /:class /:attachment /:id_partition /:style /:filename)我只找到空的PNG圖像(包含0字節數據的PNG圖像)。

我認爲轉換不起作用,但我不知道/瞭解轉換代碼是否足夠了解它是否正常工作。另外,我願意以其他方式保存在畫布上生成的簽名(例如chunky_png),但我一直無法找到任何描述或顯示如何從畫布轉換爲回形針圖像的好信息/代碼。

回答

相關問題