Javascript — объяснение функции JCrop showPreview

Мне тяжело понять, что именно делает эта функция и почему она это делает. Функция взята из JCrop, который является довольно стандартным плагином для обрезки jQuery. Эта функция отвечает за вычисление того, как показать небольшое изображение предварительного просмотра рядом с изображением, которое вы собираетесь обрезать. Вы делаете выбор на своем изображении, и предварительный просмотр показывает .. хорошо .. предварительный просмотр.

Вот функция со страницы примера JCrop:

function showPreview(coords)
{
var rx = 100 / coords.w;
var ry = 100 / coords.h;

$('#preview').css({
width: Math.round(rx * 500) + 'px',
height: Math.round(ry * 370) + 'px',
marginLeft: '-' + Math.round(rx * coords.x) + 'px',
marginTop: '-' + Math.round(ry * coords.y) + 'px'
});
}

Также может быть важно отметить, что экземпляр JCrop имеет параметр, в котором соотношение сторон установлено равным 1, preview div имеет ширину 100px и высоту 100px.

Вот ссылка, если вы хотите увидеть код и даже попробовать его.

http://deepliquid.com/projects/Jcrop/demos.php?demo=thumbnail

Я не понимаю многих из чисел .. RX * 500? Зачем? ry * 370? Зачем? Сверху вниз пробежка по этой логике будет высоко ценится.

0

Решение

Эти параметры 500 и 370 являются точной высотой изображения, которое обрезается. Один в демо имеет ширину 500 пикселей и высоту 370 пикселей.

На превью (справа) также показана вся картинка. Когда вы меняете свой выбор, он обновляет параметры изображения. Вы рассчитываете, насколько велика область выбора

 width: Math.round(rx * 500) + 'px',
height: Math.round(ry * 370) + 'px',

Чтобы установить высоту предварительного просмотра. И также рассчитайте, как далеко вы находитесь от левой стороны и вершины, используя эти два:

 marginLeft: '-' + Math.round(rx * coords.x) + 'px',
marginTop: '-' + Math.round(ry * coords.y) + 'px'

На самом деле он рассчитывает размер выбранной области и расстояние до нее слева и сверху, чтобы он мог отправить правильные параметры в область предварительного просмотра.

AspectRatio фактически показывает соотношение между шириной / высотой — поэтому, если вы обрезаете изображение 100×100, оно будет 100/100 = 1, однако, если вы обрезаете изображение 250×100, оно будет 250/100 = 2,5.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]