2013-07-21 17 views

risposta

86
var i = new Image(); 

i.onload = function(){ 
alert(i.width+", "+i.height); 
}; 

i.src = imageData; 
+0

semplicemente fantastico, ci vuole mezzo tempo per controllare le dimensioni, grazie mille! – bombastic

+2

peccato che si tratti di un processo asincrono. –

+0

@CoenDamen sì. Ho bisogno anche di un processo sincrono. –

3

Creare un <img> nascosta con quell'immagine e quindi utilizzare jQuery .width() e. altezza()

$("body").append("<img id='hiddenImage' src='"+imageData+"' />"); 
var width = $('#hiddenImage').width(); 
var height = $('#hiddenImage').height(); 
$('#hiddenImage').remove(); 
alert("width:"+width+" height:"+height); 

test: FIDDLE

immagine non viene inizialmente creato nascosto. viene creato, quindi si ottiene larghezza e altezza e quindi rimuoverlo. Ciò potrebbe causare una visibilità molto breve nelle immagini di grandi dimensioni in questo caso è necessario avvolgere l'immagine in un altro contenitore e rendere nascosto quel contenitore non l'immagine stessa.


Un'altra Fiddle che non aggiunge a dom secondo gp di Anser:. HERE

+0

grazie mille, può mi fai vedere un piccolo esempio? – bombastic

+0

modificato con violino – Desu

+0

grazie amico ora è chiaro: D – bombastic

0

Per uso sincrono Basta avvolgere in una promessa come questa:

function getImageDimensions(file) { 
    return new Promise (function (resolved, rejected) { 
    var i = new Image() 
    i.onload = function(){ 
     resolved({w: i.width, h: i.height}) 
    }; 
    i.src = file 
    }) 
} 

quindi è possibile utilizzare attendono per ottenere i dati in sincrono stile di codifica:

var dimensions = await getImageDimensions(file)