Canvas in Datenbank (mittels vb code und JavaScript in einer ASP.NET Anwendung) speichern.

  • VB.NET (ASP)

    Canvas in Datenbank (mittels vb code und JavaScript in einer ASP.NET Anwendung) speichern.

    Hallo ihr Lieben,

    ich beschreibe euch mal kurz was ich machen möchte/muss.... :)

    Also, ich habe ein Asp.net Projekt, geschrieben in vb und ein wenig JavaScript. Da ich eine händische Unterschrift vom Kunden brauche, habe ich ein Canvas erstellt.

    Quellcode

    1. <div id="canvasDiv" runat="server">
    2. <canvas id="myCanvas" class="canvasStandard"" aria-multiline="True" ></canvas>
    3. </div>
    4. <button onclick="javascript:clearArea();return false;">Löschen</button>
    5. "Stiftdicke: "
    6. <select id="selWidth">
    7. <option value="1">1</option>
    8. <option value="3" selected="selected">3</option>
    9. </select>
    10. "Farbe: "
    11. <select id="selColor">
    12. <option value="black" selected="selected">black</option>
    13. <option value="blue">blue</option>
    14. </select>


    DIe Canvas Klasse sieht so aus:

    Quellcode

    1. var mousePressed = false;
    2. var lastX, lastY;
    3. var ctx;
    4. function initialize() {
    5. ctx = document.getElementById('myCanvas').getContext("2d");
    6. $('#myCanvas').mousedown(function (e) {
    7. mousePressed = true;
    8. Draw(e.pageX - $(this).offset().left, e.pageY - $(this).offset().top, false);
    9. });
    10. $('#myCanvas').mousemove(function (e) {
    11. if (mousePressed) {
    12. Draw(e.pageX - $(this).offset().left, e.pageY - $(this).offset().top, true);
    13. }
    14. });
    15. $('#myCanvas').mouseup(function (e) {
    16. mousePressed = false;
    17. });
    18. $('#myCanvas').mouseleave(function (e) {
    19. mousePressed = false;
    20. });
    21. }
    22. function Draw(x, y, isDown) {
    23. if (isDown) {
    24. ctx.beginPath();
    25. ctx.strokeStyle = $('#selColor').val();
    26. ctx.lineWidth = $('#selWidth').val();
    27. ctx.lineJoin = "round";
    28. ctx.moveTo(lastX, lastY);
    29. ctx.lineTo(x, y);
    30. ctx.closePath();
    31. ctx.stroke();
    32. }
    33. lastX = x;
    34. lastY = y;
    35. }
    36. function clearArea() {
    37. // Use the identity matrix while clearing the canvas
    38. ctx.setTransform(1, 0, 0, 1, 0, 0);
    39. ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
    40. }
    41. function saveImage() {
    42. var image;
    43. $("#btnVertragKuendigen").click(function () {
    44. image = document.getElementById("myCanvas").toDataURL("image/png");
    45. image = image.replace('data:image/png;base64,', '');
    46. $.ajax({
    47. type: 'POST',
    48. url: "../../Home/UploadImage",
    49. data: '{ "imageData" : "' + image + '" }',
    50. contentType: 'application/json; charset=utf-8',
    51. dataType: 'json',
    52. success: function (msg) {
    53. alert('Image saved successfully !');
    54. }
    55. });
    56. });
    57. }


    So, nun mein Problem, ich möchte das Canvas binär umwandeln, um es in die Mssql Datenbank zu speichern, so gibt es mir der Chef vor. Habe ihm auch schon empfohlen das Image normal zu speichern und nur den Pfad in die Datenbank zu speichern, möchte er nicht. Die Umwandlung steht schon in der Klasse Canvas in der Methode saveImage().
    Nun meine Fragen:
    1. Ich würde das umgewandelte Image gerne in eine Textbox die nicht sichtbar ist speichern. Wie mach ich das am Besten? Im asp code oder mit js?
    2. Der Code für das Speichern des Canvas ist mir ziemlich unverständlich, wäre jemand bereit kurz mal zu erklären was da passiert?
    3. Muss ich noch irgend etwas anderes beachten? Übersehe ich irgendwas wichtiges?
    4. Achso, ich möchte das Image nicht auf dem Filesystem speichern, sondern wenn es geht, gleich auf der Datenbank..
    Am wichtigsten wären mir die Zusammenhänge, da ich vorher noch nicht so viel mit dem normalen Asp.net gearbeitet habe, beziehe ich viel Code aus dem Netz oder von Kollegen, das Meiste davon verstehe ich, hier bin ich irgendwie gerade an einer Grenze angelangt. Ich würde gerne verstehen, damit ich das nächste mal selbst und ohne Hilfe etwas Neues programmieren kann.

    Vielen Dank

    Taraxacuma