मैं कोड है कि एक कैनवास में एक छवि डालता पाया है, तो डेटा में बदल देता है - जो तब उदाहरण के लिए इनकोडिंग बेस 64 हो सकता है। मेरा विचार था कि सेलेनियम में eval कमांड का उपयोग करके इसे कॉल करना था, हालांकि मेरे परीक्षण में toDataURL एक सुरक्षा त्रुटि 1000 फेंक रहा है। ऐसा लगता है कि अगर उस त्रुटि के लिए यह समाधान के बहुत करीब है।
var data, canvas, ctx;
var img = new Image();
img = document.getElementById("yourimageID");
canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0); // everything works up to here
data = canvas.toDataURL(); // this fails ***
var base64Img = data.replace(/^data:image\/(png|jpg);base64,/, "");
कुछ शोध मैं संदर्भ है कि यह toDataURL उपयोग करने के लिए जब छवि एक अलग डोमेन से है अनुमति नहीं है पाया करने से। हालांकि, मैंने पृष्ठ को सहेजकर इस कोड को भी कोशिश की, छवि को स्वयं और इस स्क्रिप्ट को छोड़कर सब कुछ अलग कर दिया।
उदाहरण (index.html) के लिए:
<html><head></head><body>
<img src="local/hard/disk/img.jpg" id="yourimageID">
<script>
// script from above
</script>
</body></html>
img.jpg और index.html स्थानीय रूप से संग्रहीत कर रहे हैं, स्थानीय स्तर पर फ़ायरफ़ॉक्स में पेज खोलने, अभी भी एक सुरक्षा त्रुटि 1000 प्राप्त करें!
स्रोत
2011-01-14 00:10:28
यह लंबे समय से रहा है, लेकिन मुझे आश्चर्य है, क्या आपको कोई समाधान मिला? – johnjohn
नहीं, मेरे पास नहीं है .. –
मेरे पास इसका समाधान है। मैंने सेलेनियम के usercript.js को बढ़ाया। Userpref.js में स्क्रीनशॉट को कैप्चर करने के लिए फ़ायरफ़ॉक्स के अधिकारों का विस्तार किया और स्क्रीन पर कब्जा करने और सर्वर को छवि डेटा भेजने के लिए स्कॉट Szretter के समान कुछ इस्तेमाल किया। – powtac