दिलचस्प पोस्ट
पूंछ कॉल opcode उत्पन्न रेपो परिवर्तनों पर ईमेल सूचना भेजने के लिए गिट हुक ++ i और i ++ के बीच अंतर क्या है? बाँस में वैरिएबल के साथ फ़्लोटिंग प्वाइंट कॉन्ट्रैक्ट एफ # मान प्रतिबंध त्रुटियों को समझना जेएस में नियमित अभिव्यक्ति में कैरेट (^) और डॉलर का प्रतीक ($) की क्या आवश्यकता है? मैं आईफोन स्क्रीन को मेरे आवेदन के चलते डमने या बंद करने से कैसे रोकूं? एक संदर्भित मूल्य पर इतनी धीमी गति से फ़ंक्शन (जैसे स्ट्रेलन, गिनती आदि) क्यों कॉल कर रहे हैं? सी ++ टेम्पलेट क्लास के लिए एक पैरामीटर के रूप में स्ट्रिंग को पास करना निर्दिष्ट स्थिति पर तत्व प्राप्त करें – जावास्क्रिप्ट SQLite में AUTOINCREMENT के लिए प्रारंभ मूल्य सेट करें प्रत्येक ऑब्जेक्ट के लिए एक जेनेरिक रिपॉजिटरी बनाम विशिष्ट रिपॉजिटरी बनाने का लाभ? टेम्पलेट्स: पैरेंट क्लास सदस्य चर विरासत में नहीं दिखाई देता है वर्ग क्यों नहीं AngularJS डॉक्स मॉडल निर्देश में एक डॉट का उपयोग करते हैं? कब एक अभियुक्त का उपयोग करें और अपवाद का उपयोग कब करें

जीआईएफ / जेपीजी / पीएनजी / पीडीएफ के रूप में एचटीएमएल कैनवास कैप्चर करें?

छवि या पीडीएफ के रूप में एचटीएमएल कैनवास में प्रदर्शित होने वाली प्रिंट या प्रिंट करना क्या संभव है?

मैं कैनवास के माध्यम से एक छवि जेनरेट करना चाहता हूं, और उस छवि से एक पीएनजी उत्पन्न करने में सक्षम हूं।

Solutions Collecting From Web of "जीआईएफ / जेपीजी / पीएनजी / पीडीएफ के रूप में एचटीएमएल कैनवास कैप्चर करें?"

उफ़। मूल उत्तर एक समान प्रश्न के लिए विशिष्ट था। यह संशोधित किया गया है:

var canvas = document.getElementById("mycanvas"); var img = canvas.toDataURL("image/png"); 

IMG में मूल्य के साथ आप इसे एक नई छवि के रूप में लिख सकते हैं:

 document.write('<img src="'+img+'"/>'); 

एचटीएमएलएएन कैनवास प्रदान करता है। टूटायूआरयू (माइमप्रकार) जो ओपेरा, फ़ायरफॉक्स, और सफारी 4 बीटा में लागू होता है हालांकि कई सुरक्षा प्रतिबंध हैं, (ज्यादातर कैनवास पर किसी दूसरे मूल से चित्र खींचने के साथ)।

तो आपको एक अतिरिक्त पुस्तकालय की आवश्यकता नहीं है

जैसे

  <canvas id=canvas width=200 height=200></canvas> <script> window.onload = function() { var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); context.fillStyle = "green"; context.fillRect(50, 50, 100, 100); // no argument defaults to image/png; image/jpeg, etc also work on some // implementations -- image/png is the only one that must be supported per spec. window.location = canvas.toDataURL("image/png"); } </script> 

सैद्धांतिक रूप से इसे बनाना चाहिए और उसके बाद उसमें एक हरे रंग के वर्ग के साथ एक छवि को नेविगेट करना चाहिए, लेकिन मैंने परीक्षण नहीं किया है।

मैंने सोचा था कि मैं इस सवाल का दायरा थोड़ा बढ़ाऊंगा, इस मामले पर कुछ उपयोगी बातें बताईं।

एक छवि के रूप में कैनवास प्राप्त करने के लिए, आपको निम्न कार्य करना चाहिए:

 var canvas = document.getElementById("mycanvas"); var image = canvas.toDataURL("image/png"); 

आप इस पृष्ठ को छवि लिखने के लिए इसका उपयोग कर सकते हैं:

 document.write('<img src="'+image+'"/>'); 

जहां "छवि / पीएनजी" एक माइम प्रकार है (पीएनजी केवल एक ही है जिसे समर्थित होना चाहिए)। यदि आप समर्थित प्रकारों की एक सरणी चाहते हैं तो आप इस की तर्ज पर कुछ कर सकते हैं:

 var imageMimes = ['image/png', 'image/bmp', 'image/gif', 'image/jpeg', 'image/tiff']; //Extend as necessary var acceptedMimes = new Array(); for(i = 0; i < imageMimes.length; i++) { if(canvas.toDataURL(imageMimes[i]).search(imageMimes[i])>=0) { acceptedMimes[acceptedMimes.length] = imageMimes[i]; } } 

आपको केवल प्रति पेज एक बार इसे चलाने की ज़रूरत है – इसे पृष्ठ के जीवन चक्र के माध्यम से कभी भी बदलना नहीं चाहिए

यदि आप उपयोगकर्ता को फ़ाइल सहेजना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

 var canvas = document.getElementById("mycanvas"); var image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); //Convert image to 'octet-stream' (Just a download, really) window.location.href = image; 

यदि आप अलग-अलग माइम प्रकारों के साथ प्रयोग कर रहे हैं, तो छवि / png के दोनों उदाहरणों को बदलना सुनिश्चित करें, लेकिन छवि / ऑक्टेट-स्ट्रीम न करें यह भी उल्लेखनीय है कि यदि आप अपने कैनवास प्रदान करने में किसी भी क्रॉस-डोमेन संसाधन का उपयोग करते हैं, तो आपको डेटा एआरएल विधि का उपयोग करने का प्रयास करते समय एक सुरक्षा त्रुटि आएगी।

मैं " wkhtmltopdf " का उपयोग करेगा यह सिर्फ महान काम करता है यह वेबकिट इंजन (क्रोम, सफारी, आदि में उपयोग किया जाता है) का उपयोग करता है, और इसका उपयोग करना बहुत आसान है:

 wkhtmltopdf stackoverflow.com/questions/923885/ this_question.pdf 

बस!

कोशिश करो

 function exportCanvasAsPNG(id, fileName) { var canvasElement = document.getElementById(id); var MIME_TYPE = "image/png"; var imgURL = canvasElement.toDataURL(MIME_TYPE); var dlLink = document.createElement('a'); dlLink.download = fileName; dlLink.href = imgURL; dlLink.dataset.downloadurl = [MIME_TYPE, dlLink.download, dlLink.href].join(':'); document.body.appendChild(dlLink); dlLink.click(); document.body.removeChild(dlLink); } 

यदि आप एक सर्वर के माध्यम से डाउनलोड करते हैं तो यह कुछ मदद है (इस तरह आप अपनी फ़ाइल नाम / कनवर्ट / पोस्ट-प्रोसेस / आदि कर सकते हैं):

toDataURL उपयोग की जाने वाली toDataURL डेटा

हेडर्स सेट करें

 $filename = "test.jpg"; //or png header('Content-Description: File Transfer'); if($msie = !strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")==false) header("Content-type: application/force-download");else header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Transfer-Encoding: binary"); header("Expires: 0"); header("Cache-Control: must-revalidate"); header("Pragma: public"); 

-चित्र बनाएं

 $data = $_POST['data']; $img = imagecreatefromstring(base64_decode(substr($data,strpos($data,',')+1))); 

JPEG के रूप में निर्यात छवि

 $width = imagesx($img); $height = imagesy($img); $output = imagecreatetruecolor($width, $height); $white = imagecolorallocate($output, 255, 255, 255); imagefilledrectangle($output, 0, 0, $width, $height, $white); imagecopy($output, $img, 0, 0, 0, 0, $width, $height); imagejpeg($output); exit(); 

-यह पारदर्शी पीएनजी के रूप में

 imagesavealpha($img, true); imagepng($img); die($img); 

एक और दिलचस्प समाधान PhantomJS है जावास्क्रिप्ट या कॉफी स्क्रिप्ट के साथ यह एक बिना हेड वेबकिट है

उपयोग के मामले में से एक स्क्रीन कैप्चर है: आप प्रोग्राम को एसवीजी और कैनवास सहित वेब सामग्री को कैप्चर कर सकते हैं और / या थंबनेल पूर्वावलोकन के साथ वेब साइट स्क्रीनशॉट बना सकते हैं।

सर्वश्रेष्ठ प्रवेश बिंदु स्क्रीन पर कब्जा विकी पृष्ठ है।

यहां ध्रुवीय घड़ी के लिए एक अच्छा उदाहरण है (RaphaelJS से):

 >phantomjs rasterize.js http://raphaeljs.com/polar-clock.html clock.png 

क्या आप पीडीएफ को एक पृष्ठ रेंडर करना चाहते हैं?

 > phantomjs rasterize.js 'http://en.wikipedia.org/w/index.php?title=Jakarta&printable=yes' jakarta.pdf 

यदि आप jQuery का प्रयोग कर रहे हैं, जो बहुत सारे लोग करते हैं, तो आप इस तरह स्वीकार किए गए उत्तर को लागू करेंगे:

 var canvas = $("#mycanvas")[0]; var img = canvas.toDataURL("image/png"); $("#elememt-to-write-to").html('<img src="'+img+'"/>'); 

क्रोम के कुछ संस्करणों पर, आप निम्न कर सकते हैं:

  1. ड्रा इमेज फंक्शन ctx.drawImage(image1, 0, 0, w, h);
  2. कैनवास पर राइट-क्लिक करें