Изменение размера фотографии на холсте без потери соотношения сторон

Привет всем, заранее спасибо за любую помощь. Я пишу приложение для телефонного разговора и не могу уменьшить фотографию, не теряя пропорции или не обрезая изображение по ошибке. В функции ниже imageData - это 64-битная строка фотографии, сделанной камерой. Я могу нарисовать изображение на холсте на моей странице, но если изображение было снято в альбомной ориентации, то оно разбивается вместе. Если я не масштабирую его, используя функция масштабирования или функция drawimage, тогда я получаю только верхний угол фотографии. Пример: я сделал фотографию, ширина изображения в функции onPhotoDataSuccess показывает, что она имеет ширину 1296 пикселей и высоту 968 пикселей. Но мой холст на iPhone 272 пикселей в ширину (портретный режим). Я пробовал много различных методов масштабирования в Интернете, и, похоже, это самый близкий, но не совсем. Что я делаю не так?

 function onPhotoDataSuccess(imageData) 
{
var myImage = new Image();
var thecanvas = document.getElementById("queImg");
var ctx = thecanvas.getContext("2d"); 
myImage.onload = function() 
  { 
    thecanvas.setAttribute('width', '100%');
    thecanvas.setAttribute('height', 'auto');
    ctx.scale((myImage.width * 0.15), (myImage.height * 0.15));  
    ctx.drawImage(myImage, 0, 0);   
    }     

    myImage.src = "data:image/jpeg;base64," + imageData;      
}
6
задан xpda 27 January 2013 в 04:51
поделиться