Ich benutze Raphael, um ein Objekt zu zeichnen, dann übertrage es auf ein HTML-Canvas-Element mit Canvg, so dass ich toDataURL verwenden kann, um es als PNG zu speichern. Aber wenn ich canvg benutze, ist das resultierende Bild verschwommen. Der folgende Code, zum Beispiel erzeugt diesen (raphael oben, unten canvg):Canvas von canvg generiert ist verschwommen auf Retina-Bildschirm
<html>
<head>
<script src="lib/raphael-min.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/rgbcolor.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/StackBlur.js"></script>
<script type="text/javascript" src="http://canvg.googlecode.com/svn/trunk/canvg.js"></script>
<script src="lib/raphael.export.js"></script>
</head>
<body>
<div id="raph_canvas"></div><br>
<canvas id="html_canvas" width="50px" height="50px"></canvas>
<script language="JavaScript">
var test=Raphael("raph_canvas",50,50);
var rect=test.rect(0,0,50,50);
rect.attr({fill: '#fff000', 'fill-opacity':1, 'stroke-width':1})
window.onload = function() {
var canvas_svg = test.toSVG();
canvg('html_canvas',canvas_svg);
var canvas_html = document.getElementById("html_canvas");
}
</script>
</body>
</html>
Die blurriness im PNG evident als auch durch toDataURL erstellt. Irgendeine Idee, was hier vor sich geht? Ich glaube nicht, dass das etwas mit der Größenanpassung zu tun hat. Ich habe versucht, ignoreDimensions: True und einige andere Dinge zu setzen.
Ein weiterer Datenpunkt. Wenn ich raphael verwende, um etwas Text auszugeben und dann canvg zu verwenden, ist es nicht nur verschwommen, sondern auch die falsche Schriftart!
Und hier die test.rect ist (0.5,0.5,50,50) vorgeschlagen. Noch verschwommen:
Es scheint viel weniger verschwommen sein, wenn das Rechteck ziemlich groß ist. Ansonsten habe ich nicht viel herausgefunden. – AustinC
Ohne irgendwelche Tests zu machen frage ich mich, was das Ergebnis ist, wenn die Strichbreite 2px ist. Ich wette, Sie haben es mit einem Problem mit einem halben Pixel zu tun. – ericjbasti
Wie sieht der toDataURL-Code aus? Stellen Sie sicher, dass es nicht auf JPEG eingestellt ist. JPEGs saugen bei Strichzeichnungen. – ericjbasti