मैं एक ऐप लिख रहा हूं जो उपयोगकर्ताओं को राफेल.जेएस के साथ छवियां उत्पन्न करने देता है। मैं चाहता हूं कि माध्यमिक सुविधाओं में से एक राफेल कैनवास का एक पीएनजी उत्पन्न करना है।प्रोग्रामेटिक रूप से राफेल.जेएस छवि से पीएनजी उत्पन्न करें
यहाँ मेरे सिर में सामान्य पाइपलाइन है:
- उपयोगकर्ता आदानों पैरामीटर
- हम जे एस उत्पन्न राफेल साथ
- कॉल हम एक जे एस आवरण है कि ऊपर करता है और युक्त div पर .innerHTML कॉल उत्पन्न , हमें एसवीजी (जिसे हम तो कहीं भेज)
- दे रही है हम जे एस आवरण
- एसवीजी ImageMagick के लिए भेजा और बाहर एक PNG पॉप है निष्पादित
चरण 4 वह चरण है जिस पर मुझे कुछ मार्गदर्शन की आवश्यकता है। उपयोगकर्ता आईई का उपयोग कर सकता है; हमें कोई गारंटी नहीं है कि जेएस को कभी भी एक एसवीजी ब्राउज़र में निष्पादित किया जाता है। किसी भी मामले में, हमें विश्वसनीय होने के लिए सर्वर-साइड चलाने के लिए इसकी आवश्यकता होगी। तो यहां तक कि तीन संभावनाएं हैं जिनके साथ मैं अभी तक आया हूं:
- फ़ायरफ़ॉक्स में फ़ायरफ़ॉक्स इंस्टॉल करें और फ़ायरफ़ॉक्स में (3) का परिणाम चलाएं। यह विकल्प बेकार है क्योंकि एफएफ स्थापित करना मतलब है कि हमारे सर्वर पर एक्स सामान का एक गुच्छा स्थापित करना, एफएफ चलाने से बहुत अधिक ओवरहेड होता है, और मैं वास्तव में प्रक्रिया को ट्रैक करने और इसे पूरा करने के बाद इसे मारने के बारे में नहीं चाहता हूं।
- Node.js + jsdom (http://github.com/tmpvar/jsdom) का उपयोग करें। यहां नीचे की ओर यह है कि यह स्पष्ट नहीं है कि जेएसडॉम कैसे समर्थित है - अधिकृत साइट, jsdom.org, वास्तव में मौजूद नहीं है। इसके अलावा, मुझे कोई दस्तावेज नहीं मिल रहा है।
- शायद राइनो के साथ कुछ करें? जहां तक मैं कह सकता हूं, राइनो के पास नोड की तुलना में और भी कम डोम समर्थन है।
तो ... उन सभी तीन विकल्पों में से चूसना। मुझे लगता है। क्या मैं कुछ गलत हूँ? क्या कोई और तरीका है?
कूल ... धन्यवाद। यह वास्तव में काम कर सकता है - हालांकि मेरी स्पाइडी भावना उपयोगकर्ता के ब्राउज़र के आउटपुट पर भरोसा करने के विचार पर झुका रही है। मैं अपनी अंगुली को जोखिम पर नहीं डाल सकता, लेकिन उस चल रहे क्लाइंट-साइड प्रकार पर भरोसा करता हूं। आप क्या सोचते हैं - क्या मैं सिर्फ पागल हूं?किसी उपयोगकर्ता को एक पृष्ठ लोड किए बिना राफेल छवि बनाने का कोई तरीका नहीं है, और मुझे लगता है कि हम उम्मीद करते हैं कि हमारे उपयोगकर्ताओं के पास जेएस सक्षम है ... – rfrankel
@rfrankel आप निश्चित रूप से ब्राउज़र से इनपुट पर भरोसा नहीं कर सकते और हमेशा अच्छी तरह से गठित इनपुट के साथ संभावित शोषण (उदाहरण के लिए एक्सएसएलटी इंजन में) होने जा रहा है, लेकिन मुझे यह मानना चाहिए कि आपका इनपुट वास्तव में एसवीजी एक अच्छी शुरुआत होगी। – robertc
निश्चित रूप से - मैं वास्तव में सुरक्षा जोखिमों के बारे में भी सोच नहीं रहा था (जो मुझे पता है कि कैसे निपटना है) उतना ही बढ़िया मामलों जहां हम सफलतापूर्वक राफेल छवि बनायेंगे लेकिन पीएनजी नहीं क्योंकि उपयोगकर्ता का ब्राउज़र कुछ अजीब या क्रैश करता है जो कुछ भी। – rfrankel