Как взять экранную ширину динамически загружаемого изображения?
От: Sheridan Россия  
Дата: 16.01.14 09:32
Оценка:
Упёрся в стену.
Жабаскриптом создаю и загружаю изображение и устанавливаю экранный размер в %. Нужно получить получившийся экранный размер в пикселях (задача — выделить кусок под crop при помощи imgAreaSelect )

function loadImage(containerID, imageID, imagePath, imageClass, ahref, callback)
{
    var img = $('<img>');
    img.attr('id', "image_" + imageID);
    img.addClass(imageClass);
    img.load(function()
    {
        $("#" + containerID).removeClass("loading");
        if(ahref === undefined)
        {
            $("#" + containerID).append(img);
        }
        else
        {
            $("#" + containerID).append("<a href='" + ahref + "' id='link_" + imageID + "'></a>");
            $("#link_" + imageID).append(img);
        }
        if(callback !== undefined)
        {
            callback();
            console.log(img.width()) // <-- всегда возвращает 0
        }
    });
    img.attr('src', imagePath);
}


imgAreaSelect инициализирую так:
function initCropEdit(canvasImageID, formName, iWidth, iHeight, resultWidth, resultHeight)
{
    $('#image_' + canvasImageID).imgAreaSelect(
    {
        x1: $('form[name="' + formName + '"] input[name="left_top_x"]').val(),
        y1: $('form[name="' + formName + '"] input[name="left_top_y"]').val(),
        x2: $('form[name="' + formName + '"] input[name="right_bottom_x"]').val(),
        y2: $('form[name="' + formName + '"] input[name="right_bottom_y"]').val(),
        parent: '#' + canvasImageID + '_container',
        aspectRatio: resultWidth + ':' + resultHeight,
        imageWidth: iWidth,
        imageHeight: iHeight,
        onSelectEnd: function (img, selection)
        {
            $('form[name="' + formName + '"] input[name="left_top_x"]').val(selection.x1);
            $('form[name="' + formName + '"] input[name="left_top_y"]').val(selection.y1);
            $('form[name="' + formName + '"] input[name="right_bottom_x"]').val(selection.x2);
            $('form[name="' + formName + '"] input[name="right_bottom_y"]').val(selection.y2);
        }
    });
}


imgAreaSelect не смог самостоятельно вычислять размер изображения для преобразования реальных размеров изображения в экранные и обратно, начал копать. Похоже оно не может вычислить размер экранного изображения. Пробовал по разному, ничего не получается
может совсем в другом дело? Я уже совсем запутался
Matrix has you...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.