Изображение, изменяющее размер алгоритма

Я хочу записать функцию для уменьшения изображения для установки указанным границам. Например, я хочу изменить размер 2000x2333 изображение для вписывания 1280x800. Соотношение сторон должно сохраняться. Я придумал следующий алгоритм:

NSSize mysize = [self pixelSize]; // just to get the size of the original image
int neww, newh = 0;
float thumbratio = width / height; // width and height are maximum thumbnail's bounds
float imgratio = mysize.width / mysize.height;

if (imgratio > thumbratio)
{
    float scale = mysize.width / width;
    newh = round(mysize.height / scale);
    neww = width;
}
else
{
    float scale = mysize.height / height;
    neww = round(mysize.width / scale);
    newh = height;
}

И это, казалось, работало. Хорошо... казался. Но затем я пытался изменить размер 1280x1024 изображение к 1280x800 границы, и оно дало мне результат 1280x1024 (который, очевидно, не вписывается 1280x800).

У кого-либо есть какие-либо идеи, как этот алгоритм должен работать?

11
задан Andrew Shepherd 6 July 2018 в 22:54
поделиться

1 ответ

Обычно я смотрю на соотношение между исходной шириной и новой шириной, а также на соотношение между исходной высотой и новой высотой.

После этого уменьшите изображение до максимального размера. Например, если вы хотите изменить размер изображения 800x600 на изображение 400x400, соотношение ширины будет 2, а соотношение высоты - 1,5. Уменьшение изображения в 2 раза дает изображение 400x300.

NSSize mysize = [self pixelSize]; // just to get the size of the original image
int neww, newh = 0;
float rw = mysize.width / width; // width and height are maximum thumbnail's bounds
float rh = mysize.height / height;

if (rw > rh)
{
    newh = round(mysize.height / rw);
    neww = width;
}
else
{
    neww = round(mysize.width / rh);
    newh = height;
}
26
ответ дан 3 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: