Bir resmi yeniden boyutlandırmaya ve canvas.toDataUrl() yöntemini kullanarak base64 dizgi gösterimini geri almaya çalışıyorum.canvas.toDataUrl() 'data :,' döner:
Kodum aşağıdaki gibidir (aşağı bakın). Benim sorunum, ilk kez başlattığım her seferde, 'data :,' değerini döndürmesidir.
Yeniden boyutlandırmayı yeniden başlattığımda (düğmeyi kullanarak), o zaman iyi çalışıyor ve bana bir ana bilgisayar dışı dize döndürüyor. Ne oluyor?
function drawAndResizeFunction(images)
var qDraw = $q.defer();
// 1
drawCanvasWrapper().then(function(canvasData){
qDraw.resolve(canvasData)
});
// 2
function drawCanvasWrapper() {
var pResults = images.map(function (imageObj) {
//return drawCanvassIter(imageObj.tempURL); // tempUrl
return resizeIter(imageObj.tempURL).then(function(result){
console.log("resized", result) // *** RETURNS data:, in first attempt
return result;
})
});
return $q.all(pResults);
};
// 3inval
// returns canvasdata
function resizeIter(nativeURL) {
console.log("resizeIter")
var qResize = $q.defer();
var canvas = document.getElementById("resizecanvas");
var ctx = canvas.getContext("2d");
var img = new Image();
img.src = nativeURL;
var newScales = resizeDimensions(img.width, img.height)
var iw =canvas.width =img.width =newScales.iw;
var ih =canvas.height =img.height =newScales.ih;
img.onload = function() {
// --> 4
ctx.drawImage(img, 0, 0, iw, ih);
$timeout(function(){
qResize.resolve(canvas.toDataURL("image/jpeg"));
}, 200)
};
return qResize.promise;
//
//
function resizeDimensions(iw, ih) {
var scaleFactor = 1;
var targetSize = 800;
if (iw > targetSize || ih > targetSize) {
if(iw > ih) {
scaleFactor = targetSize/iw;
} else {
scaleFactor = targetSize/ih;
}
}
var iwAdj = Math.floor(iw*scaleFactor);
var ihAdj = Math.floor(ih*scaleFactor);
return {
ih: ihAdj, iw: iwAdj
}
};
};
return qDraw.promise;
}; // done
Nerede kod gerisi Dataurl'a tuval mi yapıyorsun? Şu anda bir yarış sorunu gibi geliyor, buna hazır/yük deniyor mu? Ya da ajax işlevi? –
Açısal kullanıyorum ve denetleyicimden drawAndResizFunction işlevini çağırıyorum. Bu işlev serviste mevcuttur. HTML'ye ihtiyacınız var mı? – JohnAndrews
Garip bir şey, her zaman olmaz ... – JohnAndrews