2015-10-18 11 views
7

Von einem Rails-Hintergrund kommend, hatte ich gehofft, ich könnte ein transparentes Pixel-GIF rendern. Um dies zu tun on Rails ich einfachWie man ein transparentes Gif-Pixel in Phoenix rendert?

gif_data = "GIF89a\x01\x00\x01\x00\x80\xFF\x00\xC0\xC0\xC0\x00\x00\x00!\xF9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x01\x012\x00;" 
respond_to do |format| 
    format.gif { render text: gif_data, content_type: "image/gif" } 
end 

Würde etwas sauberen Weg zu schätzen wissen, es zu tun als meine eigenen.

Antwort

6

Nach einigen googeln und lernen Zeichenfolge Codierungen. Ich verwandeln den Hex-Code des tatsächlichen transparent gif

47 49 46 38 39 61 01 00 01 00 80 00 00 00 00 00 FF FF FF 21 F9 04 01 00 00 00 00 2C 00 00 00 00 01 00 01 00 00 02 01 44 00 3B 

mit Hexate Paket in diesen

<<71, 73, 70, 56, 57, 97, 1, 0, 1, 0, 128, 0, 0, 0, 0, 0, 255, 255, 255, 33, 249, 4, 1, 0, 0, 0, 0, 44, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 68, 0, 59>> 

so dass diese in einem Phoenix-Controller zu verwenden, ich kann

gif_data = <<71, 73, 70, 56, 57, 97, 1, 0, 1, 0, 128, 0, 0, 0, 0, 0, 255, 255, 255, 33, 249, 4, 1, 0, 0, 0, 0, 44, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 68, 0, 59>> 
conn = put_resp_content_type(conn, "image/gif") 
text conn, gif_data 
+8

Statt 'text/2 ', rufen Sie' send_resp (conn, 200, git_data) 'auf. Das gleiche Ergebnis am Ende, aber letzteres ist semantisch korrekt. :) –

+0

Ich habe Probleme, es zu testen. Wenn die Assertion gegen den Antworttext fehlschlägt, versucht sie, die Fehlernachricht an das Terminal zu drucken, aber es wird "ArgumentError" ausgelöst, weil "IO.puts" (tatsächlich ': io.put_chars', das intern verwendet wird) solche Eingaben nicht verarbeiten kann. –

Verwandte Themen