Ich habe ein Skript, das die Größe einer Zeichenfläche an das geladene Bild anpasst und dann das Bild aus der Zeichenfläche herunterlädt. Ich muss die Größe ändern, sonst enthält das heruntergeladene Bild alle Leerzeichen um es herum und sieht kleiner aus als es sollte.Warten Sie, bis CSS-Änderungen (Größenanpassung) wirksam werden, bevor Sie das Skript fortsetzen
originalImg.onload = function() {
var width = originalImg.width;
var height = originalImg.height;
$("#myCanvas").css({ "height": height + "px", "width": width + "px", "margin-bottom": -height + "px" });
var c = viewer.drawer.canvas;
c.toBlob(function(blob) {
saveAs(blob, '@Model.DatabaseName' + '.jpg');
});
}
originalImg.src = originalSrc;
Aber wenn das Bild heruntergeladen wird, hat es immer noch alle Leerzeichen. Mein Skript wird abgeschlossen, bevor die Leinwand tatsächlich die Größe ändert, obwohl ich die Größe zu Beginn ändere. Wie kann ich die Leinwandgröße ändern, bevor ich den Rest des Skripts fertigstellen kann?
edit: Ich kann sehen, indem ich durch das Skript gehe, dass das ganze Skript beendet wird, bevor die Zeichenfläche tatsächlich die Größe auf der Seite ändert.
Die Methode 'css()' sollte synchron sein (es sei denn, Sie haben 'Übergänge' in CSS angewendet). Können Sie ein Beispiel für das Problem in http://jsfiddle.net angeben? –
Nein, das kann ich wirklich nicht. Meine Seite lädt DZI-Bilder in einem Seadragon-Viewer, für die ein Zugriffsschlüssel erforderlich ist, der vom Server abgerufen wird. Ich kann es nicht auf jsfiddle replizieren. –
Setzen Sie 'console.log' info oder' alert' in die 'originalImg.onload'-Funktion, um zu sehen, ob sie tatsächlich in den Code eingeht. – dsharew