Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Canvas Download-Button
#1
Hallo zusammen,
ich bin ganz neu hier und auch nicht der Javascript-Profi!
Ich verzweifle gerade an meinem Script.
Ich habe mir eine html/Javascript Datei gebaut, bei dieser gibt es ein Bild (image.png) auf diesem werden per input type Namen eingegeben und mit canvas Namen auf dem Bild platziert. Es klappt auch alles ganz Prima, das Problem ist, ich habe noch einen Dowload-Button eingebaut, mit dem man das neu generierte Bild mit den Namen herunterladen können soll. Nur dieser will einfach nicht, es passiert nichts! Es wird nur Lokal auf meinem Rechner ausgeführt, es gibt keine Webseite.
Hier kommt mal mein Code HTML:
Code:
<body>
<div class="input-container">
  <h2 style="display: flex; align-items: center; justify-content: center;">Platzierungen eingeben</h2>
 
  <div class="ranking-container">
    <div class="ranking">
      <h3 style="display: flex; align-items: center; justify-content: center;">1.er</h3>
      <label>Name 1:</label>
      <input type="text" id="name1-1">
      <label>Name 2:</label>
      <input type="text" id="name1-2">
      <label>Name 3:</label>
      <input type="text" id="name1-3">
      <label>Name 4:</label>
      <input type="text" id="name1-4">
      <label>Name 5:</label>
      <input type="text" id="name1-5">
    </div>
   
    <div class="ranking">
      <h3 style="display: flex; align-items: center; justify-content: center;">2.er</h3>
      <label>Name 1:</label>
      <input type="text" id="name2-1">
      <label>Name 2:</label>
      <input type="text" id="name2-2">
      <label>Name 3:</label>
      <input type="text" id="name2-3">
      <label>Name 4:</label>
      <input type="text" id="name2-4">
      <label>Name 5:</label>
      <input type="text" id="name2-5">
    </div>
   
    <div class="ranking">
      <h3 style="display: flex; align-items: center; justify-content: center;">3.er</h3>
      <label>Name 1:</label>
      <input type="text" id="name3-1">
      <label>Name 2:</label>
      <input type="text" id="name3-2">
      <label>Name 3:</label>
      <input type="text" id="name3-3">
      <label>Name 4:</label>
      <input type="text" id="name3-4">
      <label>Name 5:</label>
      <input type="text" id="name3-5">
    </div>
  </div>
 
  <button onclick="generateNames()">Generieren</button>
</div>

    <div class="output-container">
        <canvas id="canvas"></canvas>
        <button onclick="downloadImage()">Bild herunterladen</button>
    </div>
    
    <script>
HIER ZWISCHEN STEHT DER UNTEN AUFGEFÜHRTE JAVASCRIPT-CODE
    </script>
</body>
Hier der Javascript-Teil
PHP-Code:
<?php 
function generateNames() {
// Canvas initialisieren
const canvas = document.getElementById('canvas');
canvas.width = 400;
canvas.height = 400;
const
ctx = canvas.getContext('2d');

// Hintergrundbild laden
const img = new Image();
img.src = 'image.png';
img.onload = function() {
// Hintergrundbild zeichnen
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);

// Namen generieren
const names1 = [];
const
names2 = [];
const
names3 = [];
for (
let i = 1; i <= 5; i++) {
const
name1 = document.getElementById(`name1-${i}`).value;
if (
name1) names1.push(name1);
const
name2 = document.getElementById(`name2-${i}`).value;
if (
name2) names2.push(name2);
const
name3 = document.getElementById(`name3-${i}`).value;
if (
name3) names3.push(name3);
}

// Namen auf dem Canvas zeichnen
const fontSize = 14;
const
x1 = canvas.width / 2;
const
y1 = canvas.height / 1.2;
const
x2 = canvas.width * 0.2;
const
y2 = canvas.height / 1.2;
const
x3 = canvas.width * 0.78;
const
y3 = canvas.height / 1.23;

ctx.font = `${fontSize}px Arial`;
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';

// Namen in 3D zeichnen
ctx.font = `bold ${fontSize}px Arial`;
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.fillStyle = 'white';
ctx.shadowColor = 'black';
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 2;
ctx.shadowBlur = 2;

// Platz 1 Namen
ctx.fillStyle = 'gold';
for (
let i = 0; i < names1.length; i++) {
const
name = names1[i];
const
y = y1 + (i - (names1.length - 1) / 2) * fontSize;
ctx.fillText(name, x1, y);
}

// Platz 2 Namen
ctx.fillStyle = 'silver';
for (
let i = 0; i < names2.length; i++) {
const
name = names2[i];
const
y = y2 + i * fontSize;
ctx.fillText(name, x2, y);
}

// Platz 3 Namen
ctx.fillStyle = '#CD7F32';
for (
let i = 0; i < names3.length; i++) {
const
name = names3[i];
const
y = y3 + i * fontSize;
ctx.fillText(name, x3, y);
}

// Kreiert Download
function downloadImage() {
  const canvas = document.getElementById('canvas');
  const dataURL = canvas.toDataURL('image/png');
  const link = document.createElement('a');
  link.download = 'ranking.png';
  link.href = dataURL;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}
};
}

Würde mich freuen, wenn mal einer drüberschauen könnte und mir vielleicht eine Lösung geben kann.
Vielen Dank vorab, El Gordo
Zitieren


Nachrichten in diesem Thema
Canvas Download-Button - von El Gordo - 27.02.2023, 09:45
RE: Canvas Download-Button - von admin - 14.03.2023, 20:43

Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste