Ich arbeite an einem Cross-Plattform-Cordova-Projekt, das Bilder auf einen Server hochlädt und sie auf der Website anzeigt. Der verwendete Code für das skalierte Bild aus dem Telefonspeicher zu erhalten und bekommt die base64-Daten sind wie folgt:Image schrumpft beim Konvertieren zu base64 in Cordova ios iphone
var image = new Image();
image.src = URL;
image.onload = function() {
var canvas = document.createElement("canvas");
var img_width = this.width;
var img_height = this.height;
canvas.width =1000;
canvas.height = 1000;
var w=(1000/img_width);
var h=(1000/img_height);
var ctx = canvas.getContext("2d");
ctx.scale(w,h);
ctx.drawImage(this,0,0);
var dataURL = canvas.toDataURL("image/png",1);
Hier ist das Problem, dass die Bildbreite als die Leinwand Breite gesetzt ist, aber die Höhe ist nicht. Auch funktioniert der Code perfekt auf Android-Geräten und iPads, aber das Problem tritt nur auf iPhones.
Getestet auf Iphone 4s und 5c Kann jemand bitte helfen Sie mir !!!!
Das Eingangsbild ist:
Die Bildausgabe auf der Leinwand (als png-Datei) ist:
Der Grund für die Verwendung einer festen Leinwandhöhe ist so, dass ich alle Bilder auf die gegebene Auflösung komprimieren kann, wodurch die Größe reduziert wird. Vielen Dank . –